树莓派 pybluez 蓝牙通信

前言

这两天在搞树莓派蓝牙通信,发现里面的坑还真不少,在次记录一下,以备查询

安装 pybluez

我用的python3,现在差不多没人用Python2了吧…
首先需要安装 libbluetooth-dev

 sudo apt-get install libbluetooth-dev

然后安装 pybluez

 sudo pip3 install pybluez

使用

可以先看看官方的示例程序 点我跳转

我使用了 rfcomm-server.py 这个程序,遇到以下错误

1. no such file or directory
解决办法:修改文件

sudo nano /lib/systemd/system/bluetooth.service

找到如下一行

ExecStart=/usr/lib/bluetooth/bluetoothd

在末尾添加 -E -C

ExecStart=/usr/lib/bluetooth/bluetoothd -E -C

如果没有这一行,需要自行添加,写在上面那条语句下面即可

ExecStartPost=/usr/bin/sdptool add SP

Ctrl+o 保存 Ctrl+x 退出

2. no advertisable device
这是由于蓝牙不可见导致
解决办法:在原程序上增加两句,使蓝牙可发现

#!/usr/bin/env python3
"""PyBluez simple example rfcomm-server.py
Simple demonstration of a server application that uses RFCOMM sockets.
Author: Albert Huang <albert@csail.mit.edu>
$Id: rfcomm-server.py 518 2007-08-10 07:20:07Z albert $
"""

import bluetooth
import os
import sys

#增加以下两句 修改蓝牙可见
os.system("bluetoothctl power on")
os.system("bluetoothctl discoverable on")


server_sock = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
server_sock.bind(("", bluetooth.PORT_ANY))
server_sock.listen(1)

port = server_sock.getsockname()[1]

uuid = "94f39d29-7d6d-437d-973b-fba39e49d4ee"

bluetooth.advertise_service(server_sock, "SampleServer", service_id=uuid,
                            service_classes=[uuid, bluetooth.SERIAL_PORT_CLASS],
                            profiles=[bluetooth.SERIAL_PORT_PROFILE],
                            # protocols=[bluetooth.OBEX_UUID]
                            )

print("Waiting for connection on RFCOMM channel", port)

client_sock, client_info = server_sock.accept()
print("Accepted connection from", client_info)

try:
    while True:
        data = client_sock.recv(1024)
        if not data:
            break
        print("Received", data)
except OSError:
    pass

print("Disconnected.")

client_sock.close()
server_sock.close()
print("All done.")

3.Permission denied
解决办法:修改文件权限

sudo chmod 777 /var/run/sdp

参考链接

  1. https://bbs.archlinux.org/viewtopic.php?id=201672
  2. https://blog.csdn.net/qq21497936/article/details/110940484
  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值