簡體   English   中英

python 藍牙 - 檢查連接狀態

[英]python bluetooth - check connection status

我正在使用 python import bluetooth的藍牙模塊,我相信它是 PyBluez package。我能夠從藍牙連接、發送和接收。BluetoothSocket class 但我的應用程序在涉及狀態時完全失明聯系。

我希望我的應用程序在設備斷開連接時禁用某些功能,但似乎沒有任何類型的 BluetoothSocket.is_connected() 方法。 我希望它能在藍牙狀態發生變化時立即檢測到它們。

通常有多個關於像這樣簡單的主題的主題,如果這是重復的,我們深表歉意。 我已多次搜索此站點以尋找答案,但沒有發現任何特定於 python 的內容。

如果您的SO是linux,則可以使用hcitool ,它將告訴您藍牙設備的狀態。

請在下面找到一個可以滿足您需求的Python小片段。 您將需要知道藍牙設備的MAC:

import subprocess as sp

stdoutdata = sp.getoutput("hcitool con")

if "XX:XX:XX:XX:XX:XX" in stdoutdata.split():
    print("Bluetooth device is connected")

希望這可以幫助!

如果您使用的是Linux,還可以使用BluetoothSocket的getpeername()方法檢查設備是否仍然可用。 此方法(繼承自python的套接字類)返回套接字連接到的遠程地址。

如果設備仍然可用:

>>>sock.getpeername()
('98:C3:32:81:64:DE', 1)

如果未連接設備:

>>>sock.getpeername()
Traceback (most recent call last):
    File "<string>", line 3, in getpeername
_bluetooth.error: (107, 'Transport endpoint is not connected')

因此,要測試套接字是否仍連接到實際設備,可以使用:

try:
    sock.getpeername()
    still_connected = True
except:
    still_connected = False

獲取 mac 地址的更簡單方法:

import getmac
from getmac import get_mac_address as gma

mac_addr = gma()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM