日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python控制蓝牙pybluez_Python之蓝牙通讯模块pybluez学习笔记

發(fā)布時間:2023/12/16 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python控制蓝牙pybluez_Python之蓝牙通讯模块pybluez学习笔记 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

安裝藍(lán)牙通訊模塊pybluez

Windows下pybluez的安裝

注:本文的開發(fā)環(huán)境為Windows10+Python3.7.3html

pip install pybluez

安裝過程當(dāng)中會出現(xiàn)以下圖所示的問題:

產(chǎn)生這種問題的緣由是windows系統(tǒng)沒有安裝相應(yīng)的SDK,沒有?Microsoft SDKs這個文件夾,解決辦法以下:python

windows7安裝文件的下載地址:https://www.microsoft.com/en-us/download/details.aspx?id=8279編程

安裝對應(yīng)系統(tǒng)的SDK以前,最好先卸載系統(tǒng)里的Visual?C++?2010?Redistributable和.NET.Framework再安裝對應(yīng)的SDK服務(wù)器

再次安裝 pybluez仍是有錯誤,查看安裝目錄,按照setup.py要求MS_SDK = r'Microsoft SDKs\Windows\v6.0A' 目錄socket

windows7須要手動修改Microsoft SDKs下文件夾v7.1為v6.0Aide

windows10須要手動修改Microsoft SDKs下文件夾v10.0A為v7.0Acode

完成后再安裝新的Visual?C++?2010?Redistributable和.NET.Frameworkserver

windows10通過以上步驟后,依然會出現(xiàn)以下的問題:htm

這種問題最簡單的方法是裝個visual studio2017以上的軟件的C++編譯環(huán)境,再次安裝便可成功

Linux下pybluez的安裝

安裝pybluez模塊以前先要安裝libbluetooth-dev,不然會報錯。

藍(lán)牙通訊模塊pybluez的使用

選擇藍(lán)牙通訊對象

經(jīng)過用戶友好的名字來尋找通訊對象

import bluetooth

target_name = "My Device"

target_address = None

nearby_devices = bluetooth.discover_devices()

for bdaddr in nearby_devices:

if target_name == bluetooth.lookup_name( bdaddr ):

target_address = bdaddr

break

if target_address is not None:

print("found target bluetooth device with address ", target_address)

else:

print("could not find target bluetooth device nearby")

查詢設(shè)備服務(wù)

import bluetooth

nearby_devices = bluetooth.discover_devices(lookup_names=True)

for addr, name in nearby_devices:

print(" %s - %s" % (addr, name))

services = bluetooth.find_service(address=addr)

for svc in services:

print("Service Name: %s" % svc["name"])

print(" Host: %s" % svc["host"])

print(" Description: %s" % svc["description"])

print(" Provided By: %s" % svc["provider"])

print(" Protocol: %s" % svc["protocol"])

print(" channel/PSM: %s" % svc["port"])

print(" svc classes: %s "% svc["service-classes"])

print(" profiles: %s "% svc["profiles"])

print(" service id: %s "% svc["service-id"])

print("")

經(jīng)過RFCOMM方式進(jìn)行通訊

采用相似于socket編程模型的方式進(jìn)行藍(lán)牙通訊的編程

1.服務(wù)器端程序

import bluetooth

server_sock=bluetooth.BluetoothSocket( bluetooth.RFCOMM )

port = 1

server_sock.bind(("",port))

server_sock.listen(1)

client_sock,address = server_sock.accept()

print "Accepted connection from ",address

data = client_sock.recv(1024)

print "received [%s]" % data

client_sock.close()

server_sock.close()

2. 客戶端程序

import bluetooth

bd_addr = "01:23:45:67:89:AB"

port = 1

sock=bluetooth.BluetoothSocket( bluetooth.RFCOMM )

sock.connect((bd_addr, port))

sock.send("hello!!")

sock.close()

經(jīng)過L2CAP方式進(jìn)行通訊

L2CAP的sockets方式幾乎等同于RFCOMM的sockets方式,惟一的不一樣是經(jīng)過L2CAP的方式,而且端口是0x1001到0x8FFF之間的奇數(shù)端口。默認(rèn)的鏈接能夠傳送的可靠報文是672個字節(jié)。

1.服務(wù)器端程序

import bluetooth

server_sock=bluetooth.BluetoothSocket( bluetooth.L2CAP )

port = 0x1001

server_sock.bind(("",port))

server_sock.listen(1)

client_sock,address = server_sock.accept()

print "Accepted connection from ",address

data = client_sock.recv(1024)

print "received [%s]" % data

client_sock.close()

server_sock.close()

2.客戶端程序

import bluetooth

sock=bluetooth.BluetoothSocket(bluetooth.L2CAP)

bd_addr = "01:23:45:67:89:AB"

port = 0x1001

sock.connect((bd_addr, port))

sock.send("hello!!")

sock.close()

調(diào)整MTU大小

l2cap_sock = bluetooth.BluetoothSocket( bluetooth.L2CAP )

.

. # connect the socket

.

bluetooth.set_l2cap_mtu( l2cap_sock, 65535 )

參考文獻(xiàn)

總結(jié)

以上是生活随笔為你收集整理的python控制蓝牙pybluez_Python之蓝牙通讯模块pybluez学习笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。