我正在尝试连接到 RFID 阅读器设备。我可以通过创建一个 BluetoothSocket 并在其上调用 connect 来连接它,如下所示(省略了许多细节):
public static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
BluetoothSocket socket = device.createRfcommSocketToServiceRecord( MY_UUID);
这与预期的一样工作,并且可以建立与设备的连接。
我的问题是,设备 API 旨在与串行端口一起使用。为了使用 API,我必须向它传递一个如下所示的字符串:
String uri = "eapi:///com1";
Android 似乎并没有以这种方式向世界开放串行端口。在 linux 上,我希望能够连接如下字符串:
String uri = "eapi:///dev/ttyS0";
查看手机上的 /dev 目录并没有显示任何类似的内容。此外,/dev 中的条目在我建立连接时不会改变。这让我相信 Android 在连接到蓝牙设备时不会在 /dev 中创建串行设备。
如何访问 BluetoothSocket 用于连接设备的 com 端口?android 上是否有像 com1 或 /dev/ttyS0 这样的虚拟设备?
使用类 RfcommSocket 的 API 的旧版本有一个 getPort() 和 getFileDescriptor() 方法,可能会帮助我。当前的蓝牙插座似乎隐藏了这些细节。
提前致谢!
编辑:事实证明,Android 根本不会为串行流创建虚拟设备。相反,我直接将我的客户端代码与蓝牙套接字集成。