【发布时间】:2015-05-13 10:06:46
【问题描述】:
我尝试通过蓝牙将 AT 命令从我的计算机 (ubuntu 13.04) 发送到我的手机 (Android 5.1)。我想看短信。
我通过以下方式检索手机的 MAC 地址:
hcitool scan
我浏览设备上的所有可用服务:
sdptool browse XX:XX:XX:XX:XX:XX
我获得了用于 SMS/MMS 服务的良好 RFCOMM 通道,现在我正在尝试发送 AT 命令。
我尝试使用 pySerial 绑定并连接 rfcomm 到我的手机,但没有响应:
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))
注意:手机会显示一个提示窗口,接受我的电脑访问我的短信。我当然接受了。
谁能告诉我哪里出了问题以及我可以尝试什么?
【问题讨论】:
-
只是一个调试思路:可能在连接失败后立即发送AT命令,尝试在两者之间添加延迟,看看是否有什么不同?。
标签: android python bluetooth at-command rfcomm