我尝试通过蓝牙将AT命令从我的电脑(ubuntu 13.04)发送到我的手机(Android 5.1)。我想阅读短信。
我通过以下方式检索手机的MAC地址:
hcitool scan
我使用以下方式浏览设备上的所有可用服务:
sdptool browse XX:XX:XX:XX:XX:XX
我获得了用于SMS / MMS服务的良好RFCOMM频道,现在我尝试发送AT命令。
我尝试使用带有绑定和连接的rfcomm的pySerial到我的手机但没有响应:
import serial
phone = serial.Serial('/dev/rfcomm0', 115200, timeout=2)
phone.write(b'AT\r')
data = phone.readall()
print data
我在USB串口尝试了相同的代码,我得到了回复:
import serial
phone = serial.Serial('/dev/ttyACM0', 115200, timeout=2)
phone.write(b'AT\r')
data = phone.readall()
print data
# *EMRDY: 1
# AT
# OK
我尝试使用pyBluez但问题相同,我的AT命令没有响应:
import bluetooth
client_sock = bluetooth.BluetoothSocket( bluetooth.RFCOMM )
client_sock.connect(('XX:XX:XX:XX:XX:XX', 4))
client_sock.send(b'AT\r')
data = client_sock.recv(1024)
print "received [%s]" % data
我终于尝试使用原生的python套接字,但没有回复:
import socket
s = socket.socket(socket.AF_BLUETOOTH, socket.SOCK_STREAM, socket.BTPROTO_RFCOMM)
s.connect(('XX:XX:XX:XX:XX:XX',4))
s.send(b'AT\r')
data = s.recv(1024)
s.close()
print('Received', repr(data))
注意:手机会显示一个提示窗口,表示我的电脑可以访问我的短信。我当然接受了。
谁能告诉我什么是错的?我可以尝试什么?
答案 0 :(得分:0)
嗯,首先,最好先检查一下你的主机与蓝牙电话之间是否有双向通信,就像你说的那样,它确实可以用USB工作,那么就没有理由不这样做使用蓝牙,除非你还没有建立良好的沟通,所以我认为最好首先尝试通过发送和回复相同的字符串(有点握手协议)进行良好的沟通,并确保你知道你的python代码实际发送了什么,可能是使用蓝牙的看不见的额外字符,你不注意,这使你的AT命令无法通过手机识别。