从蓝牙设备获取响应
我正在尝试写一个简单的模块,用来发送短信。我使用蓝牙连接手机,下面是我的代码示例:
文件:bt-sendsms.py
import bluetooth
target = '00:32:AC:32:36:E8' # Mobile address
print "Trying to send SMS on %s" % target
BTSocket = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
BTSocket.connect((target, 2)) # BT Address
BTSocket.send('ATZ\r')
BTSocket.send('AT+CMGF=1\r')
#sockfd.send('AT+CSCA="+972547716507"\r') # This line changes the SMSC address - do not modify unless required
BTSocket.send('AT+CMGS="+972547877763"\r') # TO Phone Number
BTSocket.send('This is a test message - port 2.\n')
BTSocket.send(chr(26)) # CTRL+Z
print "SMS sent"
sockfd.close()
print "Closed"
我的问题是,我无法确认短信是否发送成功,也得不到任何关于发送短信或其他网络操作的错误代码。
如果能给我一些正确的方向建议,我会非常感激。
1 个回答
3
从你写的Python代码来看,你似乎是在随便打开一个RFCOMM通道,希望它能神奇地接受AT命令并进行消息传递。
我觉得(可能我错了)你需要连接到一个特定的配置文件或服务通道,而对于短信来说,这个通道应该是消息访问配置文件(MAP)。不过这个标准还没有完全确定,所以找到一个支持这个的手机,嗯,我不能说完全不可能,但确实非常非常不容易。除此之外,有些手机会支持用于消息的AT命令,但这不在标准范围内。例如,我听说索尼爱立信的手机通过拨号网络配置文件(DUN)会支持这些命令。
所以,首先,你的手机设备是否支持一些不在标准范围内的AT命令用于短信?如果支持的话,是在某个特定的配置文件上,还是在一个临时的专有配置上?接下来,你需要连接到那个配置。
你可以使用以下Python代码浏览支持的服务等信息(这段代码会检查周围的蓝牙设备)...
import bluetooth
def whats_nearby():
name_by_addr = {}
nearby = bluetooth.discover_devices(flush_cache=True)
for bd_addr in nearby:
name = bluetooth.lookup_name( bd_addr, 5)
print bd_addr, name
name_by_addr[bd_addr] = name
return name_by_addr
def what_services( addr, name ):
print " %s - %s" % ( addr, name )
for services in bluetooth.find_service(address = addr):
print "\t Name: %s" % (services["name"])
print "\t Description: %s" % (services["description"])
print "\t Protocol: %s" % (services["protocol"])
print "\t Provider: %s" % (services["provider"])
print "\t Port: %s" % (services["port"])
print "\t service-classes %s" % (services["service-classes"])
print "\t profiles %s" % (services["profiles"])
print "\t Service id: %s" % (services["service-id"])
print ""
if __name__ == "__main__":
name_by_addr = whats_nearby()
for addr in name_by_addr.keys():
what_services(addr, name_by_addr[addr])
一旦你找到正确的服务或配置,接下来的问题就是如何处理安全性(配对时的PIN码),这部分我还没搞明白怎么做!
想了解更多蓝牙相关的信息,可以去 www.bluetooth.org!