У меня есть Bluetooth-совместимое устройство с удобным названием «Sensor1». Это устройство использует профиль SPP. Для того, чтобы задать устройство для запуска потоковой передачи данных через Bluetooth, я должен написать «10111011» на COM порт, соответствующий это устройство следующим образом:Имя устройства Bluetooth и соответствующее имя последовательного порта в python
ser = serial.Serial('COM5')
ser.write('10111011')
Проблема заключается в том, что я не знаю, какой из COM-порты соответствуют «Sensor1». Итак, я прочитал реестра 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"]
Ну, я уже используется библиотека Bluetooth. Тем не менее, в: 'service = bluetooth.find_service()', а затем 'port = service [" port "]', у меня есть 2, что не имеет никакого отношения к COM5 в моем примере. – QuestionMark
@QuestionMark Правильно. Я посмотрел мимо двух линий, которые были глупыми. В настоящее время у меня нет устройств BlueTooth рядом с (на worK), но я предполагаю, что каждый объект в 'devices' будет иметь ключ, называемый' port'. вы используете 'find_service' вместо обнаружения, если я не ошибаюсь, что даст вам уже подключенное устройство и номер локального порта, используемый для доступа к этому устройству (для потоковой передачи данных). Вы ищете физический порт, который можно найти в 'discover_devices', но опять же, я не могу подтвердить свои предположения, так как у меня нет каких-либо устройств bluetooth. – Torxed
Я думаю, что нет ключа 'port' для устройств в' discover_devices'. – QuestionMark