首页 > 解决方案 > 将 Python 蓝牙套接字绑定到虚拟端口

问题描述

我在 Arduino 和 Raspberry Pi 之间创建了蓝牙通信。我正在使用BlueZ用来配对和信任的D-BUS API ,以及Python 套接字模块来建立rfcomm 通信

我想在 Pi上的Node-RED上访问我从 Arduino 收到的数据。不幸的是,Node-RED 没有任何正在积极开发的经典蓝牙节点。所以,我能做的是使用串行输入节点

如果我使用已弃用的命令行工具rfcomm进行连接(例如sudo rfcomm connect hci0 00:11:12:34:56:78 1),它会创建一个绑定到/dev/rfcomm0的rfcomm 通道。我可以使用串行输入节点并访问 Node-RED 中的数据。但是,我想避免使用这个已弃用的工具。

但是,如果我通过Python 套接字模块连接如下:

s = socket.socket(socket.AF_BLUETOOTH,socket.SOCK_STREAM, socket.BTPROTO_RFCOMM)
s.bind(some_address, some_port)
s.connect(some_address, some_port)

没有创建虚拟设备/端口,例如/dev/rfcomm0。因此,我无法从 Node-RED 访问数据。

那么问题是如何将python socket创建的socket绑定到任意虚拟端口呢?这个 rfcomm 频道的具体位置在哪里?它必须以某种方式绑定到虚拟网络端口?

当我检查 rfcomm 工具的源文件时,我觉得我需要深入研究一些操作系统编程来做我想做的事。

标签: python-3.xsocketsbluetoothnode-redrfcomm

解决方案


推荐阅读