以下範例 ShengYu 將會介紹如何使用 Python 來寫 RFCOMM 藍芽通訊程式,內容包含使用 bluetooth socket 建立一個連線,傳輸資料與斷線。
server 端程式
server 端的程式一開始 bind 在 port 1,
listen 指的是最多可以接受多少連線,
接下來 accept,這裡 accept 會 block 不會立即返回,
直到 client 連上才返回,之後接收 client 的資訊並印出來,然後關閉連線。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16import 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()
client 端程式
client 端的程式需將 server 端的 addr 填入 bd_addr 內,才能成功連上,
怎麼查詢藍芽 addr 請看這篇,
如下範例, connect 嘗試連上 addr 為 “01:23:45:67:89:AB”, port 為 1 的裝置,
connect 連上 server 後,送出一個 hello!!
就斷線。1
2
3
4
5
6
7
8
9
10
11
12import bluetooth
bd_addr = "01:23:45:67:89:AB" # server 端的 addr
port = 1
sock=bluetooth.BluetoothSocket( bluetooth.RFCOMM )
sock.connect((bd_addr, port))
sock.send("hello!!")
sock.close()
以上的兩個基本範例就能夠使兩個藍芽裝置進行溝通了!
ShengYu 將會在下一篇介紹 如何用Python的藍芽 L2CAP 協定來通訊