PyBluez: 蓝牙通信的魔法师 Python 库!
大家好呀~今天我要跟你们聊聊一个超级有趣的 Python 库 —— PyBluez!它就像是蓝牙通信的魔法师,让我们能轻松地用 Python 来控制蓝牙设备。无论你是想做个智能家居项目,还是想玩转物联网,PyBluez 都能帮你实现酷炫的蓝牙通信。让我们一起来探索这个神奇的世界吧!
1. 初识 PyBluez
PyBluez 是一个强大的 Python 库,它让我们能够在 Python 中轻松地使用蓝牙功能。无论是搜索附近的蓝牙设备,还是建立连接发送数据,PyBluez 都能帮我们搞定。
我们需要安装 PyBluez。打开你的命令行,输入以下命令:
```python
pip install pybluez
安装完成后,我们就可以开始我们的蓝牙冒险啦!
2. 搜索附近的蓝牙设备
想要与蓝牙设备通信,第一步当然是找到它们啦。PyBluez 提供了简单的方法来搜索附近的蓝牙设备。看看这段代码:
python
复制
import bluetooth
nearby_devices = bluetooth.discover_devices(lookup_names=True)
print(“发现 {} 个设备。”.format(len(nearby_devices)))
for addr, name in nearby_devices:
print(“ {} - {}”.format(addr, name))
这段代码会搜索附近的蓝牙设备,并打印出它们的地址和名称。是不是很简单?
小贴士:蓝牙搜索可能需要一些时间,别着急哦!
3. 建立蓝牙连接
找到设备后,下一步就是建立连接啦。我们来看看如何连接到一个蓝牙设备:
python
复制
import bluetooth
target_name = “我的蓝牙设备”
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(“找到目标蓝牙设备,地址是 {}”.format(target_address))
else:
print(“没有找到目标蓝牙设备 :(”)
这段代码会搜索名为“我的蓝牙设备”的设备。如果找到了,就会打印出它的地址。
4. 发送和接收数据
连接建立后,我们就可以开始发送和接收数据啦!来看看如何发送数据:
python
复制
import bluetooth
sock = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
sock.connect((target_address, 1))
sock.send(“你好,蓝牙世界!”)
sock.close()
这段代码创建了一个蓝牙套接字,连接到目标设备,然后发送了一条消息。
接收数据也很简单:
python
复制
import bluetooth
server_sock = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
server_sock.bind((“”, bluetooth.PORT_ANY))
server_sock.listen(1)
client_sock, address = server_sock.accept()
print(“接受来自 {} 的连接”.format(address))
data = client_sock.recv(1024)
print(“收到消息:{}”.format(data))
client_sock.close()
server_sock.close()
这段代码创建了一个蓝牙服务器,等待连接,然后接收数据。
注意事项:记得处理可能出现的异常,比如连接失败或数据接收错误。
5. 蓝牙设备的服务发现
PyBluez 还能帮我们发现蓝牙设备提供的服务。这在开发更复杂的蓝牙应用时非常有用:
python
复制
import bluetooth
target_address = “00:11:22:33:44:55” # 替换成你的目标设备地址
services = bluetooth.find_service(address=target_address)
if len(services) > 0:
print(“找到以下服务:”)
for svc in services:
print(“ 名称:{}, 提供者:{}, 端口:{}, 协议:{}”.format(
svc[“name”], svc[“provider”], svc[“port”], svc[“protocol”]))
else:
print(“没有找到服务。”)
这段代码会列出指定蓝牙设备提供的所有服务。很酷吧?
小伙伴们,今天的 Python 学习之旅就到这里啦!我们一起探索了 PyBluez 这个神奇的蓝牙通信库,从搜索设备到建立连接,再到发送接收数据,相信你们已经对蓝牙编程有了初步的了解。