1.串口与USB转串口 这两种方式都可以实现android下软件与硬件的通信,串口要早于usb出现,在行业应用范围广,不过传输速度及便携性要逊于usb; 2.android 下与串口通信不需要或者很少需要驱动,使用jni调用linux 方法读写硬件设备; 3.而usb转串口则实现了串口与usb之间的转化,这种方式为没有串口的计算机提供快速的通道,并且将传统的串口设备变成了即插即用的usb设备;串口转换为usb(或者说通过usb的方式来操控串口设备)一般都需要驱动,常见的驱动程序有PL23xx, CP21xx, FTD, CDC_ACM, CH34XX, 驱动程序一般都被植入到硬件设备中,作为一块驱动芯片存在,如果没有内植驱动芯片想要转换为usb,也可以购买usb转串接口实现外部转换;每种驱动都有一套自己的操作方式,因此在android 上操作usb转串设备,先要区分驱动类型,根据不同驱动来读写设备,如果不按驱动类型来操作,一般软件上会报错或设备读写没有反应或接收的字节异常;android UsbDevice 就是linux下的usb设备反应到android上的对象,操控UsbDevice即可实现对usb设备的读写; 4.通过android API查询当前系统下挂载的usb设备,android 的实现则是遍历linux下节点设备,并转化为android UsbDevice,usb 设备因为其热插拨的特性,因此不能被固定的方式识别即UsbDevice并不是唯一性的,不过被固化在andrid 主板上的串口接口却是不变的; 我用kotlin写了一个usb转串及串口通信的框架usb-with-serial-port,查看源码应当会对android usb转串及串口通信方式有更多的理解,项目有其他问题也欢迎指出,另外也可以参考串口通信官方,usb转串口项目