BlueZ AutoReconnect как устройство для ПК - PullRequest
0 голосов
/ 28 сентября 2018

Я работаю на устройстве HID bluetooth с кодом на устройстве на Python;на данный момент он может подключиться к ПК, запустив:

os.system("hciconfig hcio class 0x002560")
os.system("hciconfig hcio name DataPaqWalk")

Затем мы можем использовать pybluez для подключения сокетов и дождаться соединения:

print("Waiting for connections")

self.scontrol=BluetoothSocket(L2CAP)
self.sinterrupt=BluetoothSocket(L2CAP)
self.scontrol.listen(1) # Limit of 1 connection
self.sinterrupt.listen(1)
self.ccontrol,cinfo = self.scontrol.accept()
self.cinterrupt, cinfo = self.sinterrupt.accept()

Это работает, и мы имеемопрос потока с hcitool con, чтобы обнаружить отключение ПК (адаптера) Windows, где мы сбрасываем сокеты и снова слушаем.Hci настроен без защиты, поэтому подключаемый к нему ПК автоматически подключается - все это работает.

Однако проблема возникает, когда устройство выключено;ПК правильно обнаруживает, что устройство пропало, и оно остается в спаренном состоянии.Я хочу, чтобы устройство автоматически подключалось к компьютеру, с которым оно сопряжено.Я, очевидно, получил Mac-адрес ПК, и я пытаюсь подключиться, используя: (P_CTRL 17 и P_INTR 19)

self.ccontrol,cinfo = self.scontrol.connect(('C8:FF:28:79:05:D4', self.P_CTRL))
self.controlClientMac = cinfo[0]
self.controlClientPsm = cinfo[1]
print ('control is ' + self.controlClientMac + " " + str(self.controlClientPsm))

self.cinterrupt,cinfo = self.scontrol.connect(('C8:FF:28:79:05:D4', self.P_INTR))
self.interruptClientMac = cinfo[0]
self.interruptClientPsm = cinfo[1]
print ('interrupt is ' + self.interruptClientMac + " " + str(self.interruptClientPsm))

Это в основном пытается подключиться и возвращает меня:

Traceback (most recent call last):
  File "server/btk_server.py", line 267, in <module>
    myservice = BTKbService();
  File "server/btk_server.py", line 226, in __init__
    self.device.listen();
  File "server/btk_server.py", line 174, in listen
    self.ccontrol,cinfo = self.scontrol.connect(('C8:FF:28:79:05:D4', self.P_CTRL))
  File "<string>", line 5, in connect
bluetooth.btcommon.BluetoothError: (111, 'Connection refused')

В диалоговом окне Windows Bluetooth вы можете видеть, что он щелкает на подключенный, но прямо обратно в сопряженный.Вопрос в том;как получить устройство для подключения к адаптеру сопряженных окон?Обратите внимание, что я получаю аналогичный ответ в bluetoothctl.

1 Ответ

0 голосов
/ 28 сентября 2018

Не могли бы вы при запуске автоматически запустить скрипт на RPI, который начинает искать разъем Bluetooth?https://www.dexterindustries.com/howto/run-a-program-on-your-raspberry-pi-at-startup/

...