2

我正在尝试连接到 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 根本不会为串行流创建虚拟设备。相反,我直接将我的客户端代码与蓝牙套接字集成。

4

1 回答 1

0

好吧,如果您有原始蓝牙套接字并且它已连接,为什么不在您的代码中手动处理数据格式化/转换,然后在没有串行流的情况下将其发送给另一方?Android OS AFAIK 支持有限数量的蓝牙配置文件。

于 2014-05-15T07:30:13.303 回答