java - 如何在 Android 中读取和写入数据到 COM/串口?

标签 java android javax.comm

<分区>

我必须在使用 Android 的设备的 COM 端口上读取和写入数据。我为此使用了 javax.comm 包,但是当我安装 apk 文件时,它没有显示设备的任何端口。我需要在 list 文件中添加任何权限吗?

最佳答案

您的问题与操作系统有关。 Android runs Linux under the hood , Linux 对待串行端口的方式与 Windows 不同。 javax.comm 还包含 win32com.dll,一个 driver file ,您将无法将其安装在 Android 设备上。如果您确实找到了一种方法来实现您想要做的事情,那么您实际上无法在 Linux 环境中寻找“COM”端口。串行端口将使用不同的名称。

 Windows Com Port   Linux equivalent  
      COM 1           /dev/ttyS0  
      COM 2           /dev/ttyS1
      COM 3           /dev/ttyS2 

因此,假设如果您的想法可行,您必须寻找这些名称。

幸运的是,Android 确实提供了与 USB 设备连接的功能(我假设您想要连接到它,而不是并行或 RS-232 端口)。为此,您需要将设备设置为 USB Host.。以下是您需要执行的操作:

  1. 获取USBManager.
  2. 找到您的设备。
  3. 获取 USBInterfaceUSBEndpoint .
  4. 打开连接。
  5. 传输数据。

这是我对您将如何做的粗略估计。当然,您的代码将采用更成熟的处理方式。

String YOUR_DEVICE_NAME;
byte[] DATA;
int TIMEOUT;

USBManager manager = getApplicationContext().getSystemService(Context.USB_SERVICE);
Map<String, USBDevice> devices = manager.getDeviceList();
USBDevice mDevice = devices.get(YOUR_DEVICE_NAME);
USBDeviceConnection connection = manager.openDevice(mDevice);
USBEndpoint endpoint = device.getInterface(0).getEndpoint(0);

connection.claimInterface(device.getInterface(0), true);
connection.bulkTransfer(endpoint, DATA, DATA.length, TIMEOUT);

额外的阅读 Material :http://developer.android.com/guide/topics/connectivity/usb/host.html

关于java - 如何在 Android 中读取和写入数据到 COM/串口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11011515/

相关文章:

java - Java 1.6 中清理资源的首选方法

java - 算术异常 : Divide by zero with table layout dynamically in Android

android - 如何在android上全屏显示图像

android - 无法弄清楚如何获取 View /布局宽度/高度

java - MongoJack 未找到对象

java - 从java将日期时间插入sqlite的正确方法是什么?

java - 在 aar 库文件内的布局中获取 inflateException

java - 从 int 到 byte 的可能有损转换

java - 使用java将较大值的十六进制字符串转换为字节

java - 实现 SerialPortEventListener - java