BlueZ自动重新连接为设备到PC

2024-09-27 04:19:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Python编写HID蓝牙设备的代码;目前它可以通过运行以下命令连接到PC:

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

然后我们可以使用pybluez连接套接字并等待连接:

^{pr2}$

这是可行的,我们使用hcitool con进行线程轮询,以检测Windows PC(适配器)断开的连接,在那里我们转储套接字并再次侦听。hci的设置没有安全性,所以连接到它的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')

在bluetooth窗口对话框中,您可以看到它快速切换到connected(已连接),但直接返回paired(配对)。问题是:如何让设备连接到配对的windows适配器?请注意,我在bluetoothctl中也得到了类似的响应。在


Tags: inpyselfserverconnectlinefilectrl

热门问题