我有一个蓝牙设备,用户友好的名称为“Sensor1”。该设备使用SPP配置文件。为了要求设备通过蓝牙启动数据流,我必须在该设备对应的COM端口上写入 *'10111011 '**如下:
ser = serial.Serial('COM5')
ser.write('10111011')
字符串
问题是,我不知道哪个COM端口对应于“传感器1”.所以,我读windows注册表获取设备名称:
import _winreg as reg
from itertools import count
key = reg.OpenKey(reg.HKEY_LOCAL_MACHINE, 'HARDWARE\\DEVICEMAP\\SERIALCOMM')
for i in count():
device, port = reg.EnumValue(key, i)[:2]
print "Device name \"%s\" found at %s" % (device, port)
型
我得到的只有:
Device name \Device\Serial0 found at COM3
Device name \Device\BthModem16 found at COM4
Device name \Device\BthModem17 found at COM5
型
如何获取设备名称,如:
service = bluetooth.find_service()
print service["name"]
型
4条答案
按热度按时间kninwzqo1#
字符串
使用以下库:https://pypi.python.org/pypi/PyBluez/
下面是一些很好的用法示例:https://people.csail.mit.edu/albert/bluez-intro/c212.html
如果你对使用其他库不感兴趣,你可以尝试提取与Windows相关的discover函数,可以在这里找到:https://github.com/karulis/pybluez/blob/2a22e61fb21c27b47898c2674662de65162b485f/bluetooth/widcomm.py#L109
i2loujxw2#
我建议你先找到MAC地址,然后通过MAC地址找到COM端口。但我不确定这是否是最好的方法。我在Windows 10和Python 3.5中测试了这段代码。
要从友好名称中查找MAC地址,请使用此函数:
字符串
然后通过MAC地址找到COM端口。这意味着您已经与目标设备配对并启用了SPP端口:
型
az31mfrm3#
另一个对我有效的解决方案。
字符串
e3bfsja24#
为了我自己的目的,我改进了Youngmin Kim的解决方案。因为我的Windows不是英文的,解析'名称'不起作用。除了这个变化,他的解决方案为我解决了这个问题。
字符串