You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python通过Bluetooth sockets向已连接蓝牙设备发送消息

可行性说明

完全可以通过Python向已配对连接的蓝牙设备发送Socket消息,你当前的实现逻辑整体正确,只需要调整部分细节即可正常运行。

注意事项与代码优化点
  • 依赖安装:你用到的bluetooth模块属于第三方依赖PyBluez,需要提前完成适配你系统的安装:
    • Windows平台直接执行pip install pybluez
    • Debian/Ubuntu平台先安装系统依赖:sudo apt install bluetooth libbluetooth-dev,再执行pip install pybluez
    • MacOS平台先通过Homebrew安装依赖:brew install bluez,再安装PyBluez
  • 现有代码的问题修正:
    1. 变量bd_addr的值需要替换为目标蓝牙设备的实际MAC地址,注意不同系统识别的MAC地址分隔符不同,Windows多为-,类Unix系统多为:,需要和你系统扫描到的地址格式保持一致
    2. Python3环境下socket.send()方法仅支持传入bytes类型数据,直接传入字符串会抛出类型错误,需要先对字符串做编码处理
    3. 建议增加异常捕获和资源自动释放逻辑,避免出现连接失败时的资源泄露问题
可运行的完整参考代码
import bluetooth

# 替换为你的目标设备实际MAC地址
bd_addr = "你的设备MAC地址"
# 可通过扫描目标设备的RFCOMM服务确认实际监听端口
port = 1

try:
    # 创建RFCOMM协议的蓝牙Socket
    sock = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
    sock.connect((bd_addr, port))
    # 编码为bytes类型后发送
    sock.send("hello!!".encode("utf-8"))
    print("消息发送完成")
except Exception as err:
    print(f"操作出错,错误信息:{err}")
finally:
    # 确保Socket资源被释放
    if "sock" in locals():
        sock.close()
额外提示

操作前请确认你的主机已经和目标蓝牙设备完成配对授权,且目标设备已经开启了RFCOMM协议的服务监听对应端口,否则会出现连接被拒绝、连接超时等报错。如果不清楚目标设备的服务端口,可以调用bluetooth.find_service(address=bd_addr)扫描目标设备的所有公开服务,获取对应RFCOMM服务的端口号。

内容的提问来源于stack exchange,提问作者Titz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 02:45:02