gpt4 book ai didi

linux - 如何始终连接到 Linux 上的同一个 rfcomm 端口?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:12:14 25 4
gpt4 key购买 nike

我尝试在 Linux 中连接多个蓝牙设备。除了一个设备,我对任何设备都没有问题。不同之处在于所有其他设备都以(我假设的)标准方式处理它们的蓝牙连接,即它们等待主机设备(PC)启动连接。另一方面,另一台设备每隔几秒就会尝试自行启动连接,中间会休眠一秒左右。

对于其他设备,我一直这样连接:

rfcomm connect /dev/rfcommX <deviceMacAddress>

(其中 X 是任何未使用的 rfcomm 端口号)

在发出此命令之前,我使用所需的配对 key 运行蓝牙代理。这里一切正常。

对于有问题的设备,这在设备配对之前第一次运行良好。然而,配对后,rfcomm connect 命令失败的可能性非常高。这是因为设备本身正在尝试初始化连接。当设备处于休眠状态时,连接失败(“主机关闭”)。

相反,我发现对于此设备,以下命令非常有效:

rfcomm listen /dev/rfcommX

(我必须先通过sdptool add SP添加串口)

由于 PC 将坐在那里等待来自设备的传入连接,因此每次都有效。

但是,当我有多个设备时,问题就来了。 rfcomm listen 命令工作出色,但似乎没有办法控制哪个设备(由 Mac 地址标识)连接到哪个 rfcomm 端口;如果打开了多个设备,则第一个尝试连接的设备将连接,无论如何。然而,在我们的应用程序中,我们希望用户知道他们正在连接到哪个设备。

有没有人处理过这样的事情?我们已经到了考虑编写 bluez 蓝牙包的自定义版本的地步,因此我们将不胜感激 :)

最佳答案

或者write a udev rule每次都创建一个具有相同名称的符号链接(symbolic link),或者按照适当的路径通过 /sys 到达设备。

关于linux - 如何始终连接到 Linux 上的同一个 rfcomm 端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5142246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com