如何在 python 中检查蓝牙设备的 ping
how to check ping for a bluetooth device in python
我已经连接了一个蓝牙控制器来控制流动站。
我可以在终端上使用 sudo l2ping 84:30:95:06:C6:6C
ping 控制器。
基本上我想在 ping 不可用时执行某些代码。即,当控制器断开连接时。
我试过这个:
import bluetooth
while True:
if bluetooth.lookup_name('84:30:95:06:C6:6C'):
print("do nothing")
else:
print("do something")
但这有一点延迟,当控制器断开连接时,大约需要 2-3 秒才能给我输出。
在 python 中还有其他方法吗?
所以我们可以使用hcitool来了解蓝牙设备的状态。这是一个对我有用的小片段。获得输出没有延迟,这绝对没问题。
import subprocess as sp
dev_addr = '84:30:95:06:C6:6C'
stdoutdata = sp.getoutput("hcitool con")
while True:
if dev_addr in stdoutdata.split():
print("do nothing")
if dev_addr not in stdoutdata.split():
print("do something")
我已经连接了一个蓝牙控制器来控制流动站。
我可以在终端上使用 sudo l2ping 84:30:95:06:C6:6C
ping 控制器。
基本上我想在 ping 不可用时执行某些代码。即,当控制器断开连接时。
我试过这个:
import bluetooth
while True:
if bluetooth.lookup_name('84:30:95:06:C6:6C'):
print("do nothing")
else:
print("do something")
但这有一点延迟,当控制器断开连接时,大约需要 2-3 秒才能给我输出。 在 python 中还有其他方法吗?
所以我们可以使用hcitool来了解蓝牙设备的状态。这是一个对我有用的小片段。获得输出没有延迟,这绝对没问题。
import subprocess as sp
dev_addr = '84:30:95:06:C6:6C'
stdoutdata = sp.getoutput("hcitool con")
while True:
if dev_addr in stdoutdata.split():
print("do nothing")
if dev_addr not in stdoutdata.split():
print("do something")