python藍芽通訊 python實現藍芽通訊

2021-10-16 18:21:30 字數 3924 閱讀 2615

安裝和示例

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...