我有几个蓝牙设备,我正在尝试连接到Linux。除了一个设备外,我对任何设备都没有任何问题。不同之处在于所有其他设备都以标准方式处理其(我假设的)蓝牙连接,即它们等待主机设备(PC)发起连接。另一方面,另一个设备尝试每隔几秒启动一次连接,其间有两秒左右的睡眠。
对于其他设备,我一直在这样连接:
rfcomm connect /dev/rfcommX <deviceMacAddress>
(其中X是任何未使用的rfcomm端口号)
在发出此命令之前,我使用所需的配对键运行bluetooth-agent。这里的一切都很好。
对于有问题的设备,这在设备配对之前首次运行良好。但是,配对后,rfcomm connect命令很可能失败。这是因为设备本身正在尝试初始化连接..当设备处于休眠状态时,连接失败(“主机关闭”)。
相反,我发现,对于这个设备,以下命令就像魅力一样:
rfcomm listen /dev/rfcommX
(我必须先通过sdptool添加一个串口添加SP)
由于PC将坐在那里等待来自设备的传入连接,因此每次都可以工作。
然而,当我有多个设备时会出现问题。 rfcomm listen命令运行良好,但似乎没有办法控制哪个设备(由Mac地址标识)连接到哪个rfcomm端口;如果打开了多个设备,则第一个尝试连接的设备将连接,无论如何。但是,在我们的应用程序中,我们希望用户知道他们要连接到哪个设备。
之前有没有人处理过类似的事情?我们正在考虑编写bluez蓝牙套件的自定义版本,所以我们将非常感谢任何帮助:)