18 ธันวาคม 2559

Published 12/18/2559 by with 0 comment

เขียนโปรแกรม Bluetooth กับ Python

เขียนโปรแกรม Bluetooth กับ Python

สวัสดีผู้อ่านทุกท่านครับ บทความนี้ผมจะพาผู้อ่านไปเขียนโปรแกรม Bluetooth กับ Python กันครับ


ในภาษา Python มีโมดูลสำหรับใช้เขียนโปรแกรมควบคุม Bluetooth คือ โมดูล PyBluez

โมดูล PyBluez

  • รองรับทั้ง Python 2 และ Python 3
  • ใช้งานได้ทั้ง Windows , Linux และ Mac OS X
  • ใช้ GPL2
การติดตั้ง PyBluez

สำหรับ Windows โหลด whl มาติดตั้งได้ที่ http://www.lfd.uci.edu/~gohlke/pythonlibs/#pybluez
สำหรับ Linux และ Mac OS X ให้ทำการติดตั้ง Bluez ก่อน แล้วติดตั้งด้วยคำสั่ง
# pip install PyBluez

ตัวอย่างการใช้งาน


รับจำนวนและแสดง MAC address ของอุปกรณ์บลูทูธ
import bluetooth

nearby_devices = bluetooth.discover_devices(lookup_names=True)
print("found %d devices" % len(nearby_devices))

for addr, name in nearby_devices:
  print(" %s - %s" % (addr, name))

รับส่งข้อมูลผ่าน Bluetooth
หากผมต้องการเขียนโปรแกรมให้ส่งข้อมูลไปยัง server โดยผ่าน Bluetooth

สิ่งที่ต้องทำก่อน คือ หา MAC address ของ  Bluetooth adapter server ก่อน
สมมุติ MAC address ของ  Bluetooth adapter server คือ B8:72:EB:A0:61:2A
สามารถเขียนโค้ดโปรแกรมส่งข้อมูลโดยใช้ socket ผ่าน Bluetooth ดังนี้
ฝั่ง Client

[python]
import bluetooth

serverMACAddress = 'B8:72:EB:A0:61:2A'
port = 3
s = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
s.connect((serverMACAddress, port))
while True:
text = input("Text : ")
if text == "quit":
break
s.send(text)
s.close()
[/python]

ฝั่ง Server

[python]
import bluetooth

hostMACAddress = 'B8:72:EB:A0:61:2A' # เป็น MAC address ของ Bluetooth adapter ใน server
port = 3
backlog = 1
size = 1024
s = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
s.bind((hostMACAddress, port))
s.listen(backlog)
try:
client, clientInfo = s.accept()
while 1:
data = client.recv(size)
if data:
print(data)
client.send(data) # Echo back to client
except:
print("Closing socket")
client.close()
s.close()
[/python]

Code fork จาก http://blog.kevindoran.co/bluetooth-programming-with-python-3/

เอกสารการใช้งาน https://github.com/karulis/pybluez
ศึกษาโค้ดจากตัวอย่างได้ที่ https://github.com/karulis/pybluez/tree/master/examples
บทความทั้งหมดในบล็อกนี้เขียนโดย นาย วรรณพงษ์ ภัททิยไพบูลย์ ที่ https://python3.wannaphong.com/

0 ความคิดเห็น:

แสดงความคิดเห็น

แสดงความคิดเห็นได้ครับ :)