安裝和示例
linux下安裝
sudo apt-get install python-pip libglib2.0-dev
sudo pip install bluepy
官方示例
import btle
class mydelegate(btle.defaultdelegate):
def __init__(self, params):
btle.defaultdelegate.__init__(self)
# ... initialise here
def handlenotification(self, chandle, data):
# ... perhaps check chandle
# ... process 'data'
# initialisation -------
p = btle.peripheral( address )
p.setdelegate( mydelegate(params) )
# setup to turn notifications on, e.g.
# svc = p.getservicebyuuid( service_uuid )
# ch = svc.getcharacteristics( char_uuid )[0]
# ch.write( setup_data )
# main loop --------
while true:
if p.waitfornotifications(1.0):
# handlenotification() was called
continue
print "waiting..."
# perhaps do something else here
藍芽通訊模組pybluez的使用
選擇藍芽通訊物件
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")
查詢裝置服務
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("")
通過rfcomm方式進行通訊
採用類似於socket程式設計模型的方式進行藍芽通訊的程式設計
1.伺服器端程式
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()
通過l2cap方式進行通訊
l2cap的sockets方式幾乎等同於rfcomm的sockets方式,唯一的不同是通過l2cap的方式,並且埠是0x1001到0x8fff之間的奇數埠。預設的連線可以傳送的可靠報文是672個位元組。
1.伺服器端程式
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()
調整mtu大小
l2cap_sock = bluetooth.bluetoothsocket( bluetooth.l2cap )
# connect the socket
bluetooth.set_l2cap_mtu( l2cap_sock, 65535 )
mhyourh
發布了706 篇原創文章 · 獲讚 734 · 訪問量 102萬+
關注標籤:python,藍芽,svc,sock,通訊,bluetooth,address,print,server
python藍芽通訊 python實現藍芽通訊
安裝和示例 linux下安裝 sudo apt get install python pip libglib2.0 dev sudo pip install bluepy 官方示例 importbtleclassmydelegate btle.defaultdelegate def init sel...
Python 藍芽通訊模組pybluez Win7
今天學習windows下的藍芽控制,安裝pybluez pip install pybluez安裝很順利,沒有遇見網上關於sdk之類的問題,可能是我的機子已經安裝了vs各執行庫的原因吧 使用庫只需要import bluetooth即可,但我這裡出現了 atributeerror attribute ...
Android藍芽通訊(三) 藍芽通訊的實現
在前兩篇部落格中大致介紹了藍芽相關的基礎知識,不了解的朋友可以檢視前兩篇部落格 android藍芽通訊 一 藍芽功能的相關許可權 android藍芽通訊 二 藍芽的相關操作 在本篇部落格中我將介紹如何實現兩個藍芽裝置之間的通訊,藍芽的通訊類似於socket的通訊,在藍芽通訊中沒有絕對的裝置充當ser...