繁体   English   中英

BlueZ AutoReconnect作为PC的设备

[英]BlueZ AutoReconnect as device to PC

我正在使用Python中的设备上的代码处理HID蓝牙设备; 目前它可以通过运行连接到PC:

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 PC(适配器)断开我们转储套接字并再次收听的地方。 hci设置没有安全性,因此连接到它的PC会自动配对 - 这一切都有效。

但是,当设备断电时会出现问题; PC正确检测到设备已消失且仍处于配对状态。 我想要做的是让设备自动连接到它配对的PC。 我显然得到了PC的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适配器? 请注意,我在bluetoothctl中得到了类似的响应。

你能不能自动启动时在rpi上运行脚本,开始寻找蓝牙插座? https://www.dexterindustries.com/howto/run-a-program-on-your-raspberry-pi-at-startup/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM