2

我正在尝试使用 Bluezero 向 microbit 发送消息,但我正在使用 macOS,但出现错误。

示例代码。

from bluezero import microbit
ubit = microbit.Microbit(adapter_addr='x',
                         device_addr='x',
                         accelerometer_service=True,
                         button_service=True,
                         magnetometer_service=False,
                         pin_service=False,
                         temperature_service=True)

my_text = 'Hello, world'
ubit.connect()

while my_text is not '':
    ubit.text = my_text
    my_text = input('Enter message: ')

ubit.disconnect()

错误

dbus.exceptions.DBusException:org.freedesktop.DBus.Error.FileNotFound:无法连接到套接字/opt/local/var/run/dbus/system_bus_socket:没有这样的文件或目录

4

2 回答 2

3

我在 Ubuntu 20 上遇到了这个错误

Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory

通常这个文件是由 dbus 守护进程创建/监听的

# netstat --all --program | grep system_bus_socket
unix  2      [ ACC ]     STREAM     LISTENING     19161    1/init               /run/dbus/system_bus_socket

但是在这台服务器上 dbus.service 没有运行

# systemctl status dbus.service
● dbus.service - D-Bus System Message Bus
 Loaded: loaded (/lib/systemd/system/dbus.service; static; vendor preset: enabled)
 Active: inactive (dead)
 TriggeredBy: ● dbus.socket
 Docs: man:dbus-daemon(1)

尝试启动 dbus.service 失败

# systemctl start dbus.service
Failed to start dbus.service: Operation refused, unit dbus.service may be requested by dependency only (it is configured to refuse manual start/stop).

也许它可以开始,systemctl start dbus.socket但我已经通过找到依赖dbus.service它的服务来解决这个问题firewalld

# grep -r dbus /etc/systemd/system/*
/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service:After=dbus.service

并启动它

# systemctl start firewalld

就是这样

# ls -la /var/run/dbus/system_bus_socket
srw-rw-rw- 1 root root 0 Jul 28 13:45 /var/run/dbus/system_bus_socket
于 2020-07-28T14:04:24.647 回答
0

Bluezero 库通过 DBus 与BlueZ蓝牙守护进程 ( bluetoothd) 对话。由于 BlueZ 不适用于 MacOS,因此这是行不通的。

于 2020-07-28T14:53:19.637 回答