[英]python bluetooth - check connection status
我正在使用 python import bluetooth
的蓝牙模块,我相信它是 PyBluez package。我能够从蓝牙连接、发送和接收。BluetoothSocket class 但我的应用程序在涉及状态时完全失明联系。
我希望我的应用程序在设备断开连接时禁用某些功能,但似乎没有任何类型的 BluetoothSocket.is_connected() 方法。 我希望它能在蓝牙状态发生变化时立即检测到它们。
通常有多个关于像这样简单的主题的主题,如果这是重复的,我们深表歉意。 我已多次搜索此站点以寻找答案,但没有发现任何特定于 python 的内容。
如果您的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")
希望这可以帮助!
如果您使用的是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
获取 mac 地址的更简单方法:
import getmac
from getmac import get_mac_address as gma
mac_addr = gma()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.