簡體   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