目前我正在使用工业安卓平板做上位机,工业安卓平板带有232、485串口以及USB接口,通常驱动232、485接口需要有厂家提供的JNI库以及相关的java类。某天浏览Android Developers开发者指南时,看到了关于USB使用的文档,因此想参考文档做USB转串口的通信实验,但实验的过程中遇到了不少问题,特此记录。
说明一下实验所用的硬件:
1.工业安卓平板(带有USB接口)
2.USB转TTL数据线(芯片型号PL2303HXD)
遇到的问题
首先USB转TTL线插到工业安卓平板的USB口,然后根据参考文档(Android 开发者指南USB主机概览),获取UsbManager,利用UsbManager枚举出所有的UsbDevice,通过UsbDevice的getProductId()和getDeviceId()两个方法返回的Int值,与所需要通信设备的ProductId和DeviceId进行比较,最终得到所需要的设备UsbDevice。
取得所需要的UsbDevice后,找到该Device的对应的UsbInterface和UsbEndpoint,再打开UsbDeviceConnection建立连接,使用bulkTransfer()方法发送和接收数据。
这里说一下如何查看USB设备的Product Id和Device Id:将USB设备插到电脑上,通过设备管理器找到该端口,右击打开属性,属性栏中有一列详细信息,选中硬件信息就可以看到了,VID对应Android中的Device Id,PID对应Android中的Product Id,注意Window下查看的ID号是16进制的,Android中是10进制的,要进行一下进制转换(查看USB设备ID操作方法链