我正在尝试使用
Bluez API将热敏打印机连接到运行
Raspbian GNU/Linux 12 (bookworm)
的树莓派 4。
到目前为止,我已成功与打印机配对,但现在我很难将 raspi 与其连接。由于打印机使用蓝牙的串行端口配置文件,我设法通过 CLI 使用 rfcomm
与其连接,但我想通过嵌入 django 应用程序中的某种向导以 100% 编程方式完成此操作。
我知道我首先需要配置配置文件,我显然是这样做的:
import dbus
bus = dbus.SystemBus()
device_path = "/org/bluez/hci0/dev_xx_xx_xx_xx_xx_xx"
manager = dbus.Interface(bus.get_object("org.bluez", "/org/bluez"),
"org.bluez.ProfileManager1")
manager.RegisterProfile(device_path, "00001101-0000-1000-8000-00805f9b34fb", {})
当我尝试通过
connect()
连接到打印机时,出现以下错误:
dbus.exceptions.DBusException: org.bluez.Error.NotAvailable: br-connection-profile-unavailable
我真的很感谢有关这个问题的一些帮助。
按照@ukBaz的好建议,我设法使用
python-sockets
连接到BT4.0打印机:
dongle_addr = xx:xx:xx:xx:xx:xx (MAC-address of bluetooth adapter)
port = 1
s = socket.socket(socket.AF_BLUETOOTH, socket.SOCK_STREAM, socket.BTPROTO_RFCOMM)
s.bind((dongle_addr, port))
try:
s.connect((printer_addr, port))
print(f'Device {printer.name} connected')
except Exception as error:
print(type(error).__name__, error)
s.close()
s.send(b"Hello World\n")
我根据这里的代码成功连接到BLE打印机。 感谢@ukBaz 的帮助!