我正在使用python import bluetooth
的蓝牙模块,我相信它是PyBluez包。我可以通过bluetooth.BluetoothSocket类连接,发送和接收,但是我的应用程序在连接状态方面完全失明。
我希望我的应用程序在设备断开连接时禁用某些功能,但似乎没有任何类型的BluetoothSocket.is_connected()方法。我希望它能在蓝牙状态发生时立即检测到它们的变化。
通常有关于这个简单事情的多个主题,所以如果这是重复的话,请道歉。我多次搜索这个网站的答案,但没有发现python特有的。
答案 0 :(得分:2)
如果你的SO是linux,你可以使用hcitool,它会告诉你蓝牙设备的状态。
请在下面找到一个可以满足您需求的小型Python代码段。你需要知道你的蓝牙设备的MAC:
import subprocess as sp
stdoutdata = sp.getoutput("hcitool con")
if "XX:XX:XX:XX:XX:XX" in stdoutdata.split():
print("Bluetooth device is connected")
希望这有帮助!
答案 1 :(得分:1)
如果您使用的是Linux,还可以使用BluetoothSocket的getpeername()
方法检查设备是否仍然可用。此方法(继承自python的套接字类)返回套接字所连接的远程地址。
如果设备仍然可用:
>>>sock.getpeername()
('98:C3:32:81:64:DE', 1)
如果设备未连接:
>>>sock.getpeername()
Traceback (most recent call last):
File "<string>", line 3, in getpeername
_bluetooth.error: (107, 'Transport endpoint is not connected')
因此,要测试套接字是否仍然连接到实际设备,您可以使用:
try:
sock.getpeername()
still_connected = True
except:
still_connected = False