前言
有时候开发,掌握一定理论知识,有助于缕清思路,避免走弯路,提高开发效率。
一般来说,终端设备包括Android系统及其关联的硬件模块的组合体,Android系统与硬件通讯有多种连接方式,比如常见的
串口,usb,wifi,蓝牙
等连接方式,不同连接方式在传输速率、性能、协议、应用场景等方面各有不同。其中串口一般是指传统的串口
RS232
((也叫
COM口
,通讯口))。广义串口包含USB接口,usb就是通用串行总线(Universal Serial Bus, USB)。传统串口相信不久会被市场淘汰,目前市场上大部分是usb口。
串口
串口是指利用串行方式传输数据的接口,它是一大类接口,
USB接口、RS232接口、网线RJ45接口、RS485接口、SATA接口
等等都属于串口。各种串口之间的通讯协议、接口电平等并不完全相同,传输速率也不同,因此有一种串口得到另一种串口时需要转换。
通用串行总线(Universal Serial Bus, USB)是连接外部设备的一个串口总线标准,在计算机上使用广泛,但也可以用在机顶盒和游戏机上,补充标准(On-The-Go)使其能够用于在便携设备之间直接交换数据。
传统串口连接:
Android上串口连接一般使用google的库
android-serialport-api
,串口有五个重要的参数:串口设备名,波特率,检验位,数据位,停止位, 其中检验位一般默认位NONE,数据位一般默认为8,停止位默认为1。
串口操作流程:
- 打开串口
- 读写串口
- 关闭串口
推荐一个基于android-serialport-api编译,可用在Android上的库:
Android-SerialPort-API
,或者自己下载编译
USB COM
USB转串口
即实现计算机USB接口到通用串口之间的转换。为没有串口的计算机提供快速的通道,而且,使用USB转串口设备等于将传统的串口设备变成了即插即用的USB设备。USB连接中需要知道对应USB设备的vendorId(设备厂商Id)和productId(设备产品Id),这两个id主要是用于连接和过滤设备,参考:
https://www.cnblogs.com/blogzhangwei/p/4758230.html
USB转串口一般都需要驱动,常见的驱动程序有PL23xx、CP21xx、FTD、CDC_ACM、CH34XX等,驱动程序被植入到硬件设备中,作为一块驱动芯片存在。
开发使用这个库:
usb-serial-for-android
,就可以实现USB COM开发,该库支持:
- FTDI FT232R, FT232H, FT2232H, FT4232H, FT230X, FT231X, FT234XD
- Prolific PL2303
- Silabs CP2102 and all other CP210x
- Qinheng CH340, CH341A
蓝牙串口
蓝牙串口
是基于SPP协议(Serial Port Profile),能在蓝牙设备之间创建串口进行数据传输的一种设备。蓝牙串口的目的是针对如何在两个不同设备(通信的两端)上的应用之间保证一条完整的通信路径。平时Android蓝牙连接都需要一个UUID,不同UUID的含义也不同,其中有一个是蓝牙串口服务的ID。
//蓝牙串口服务的ID
UUID BluetoothUUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
硬件通讯
针对以上硬件通讯需求, 本人封装了一个通用的硬件连接库,
DeviceConnector
,欢迎Star,用法参考:
https://blog.csdn.net/u011082160/article/details/126119843
扩展资料:
串口其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。
作为应用最广泛的USB接口,每台电脑必不可少的通讯接口之一,它的最大特点是支持热插拨,即插即用。传输速度快。对于大多数工程师来说,开发USB2.0 接口产品主要障碍在于:要面对复杂的USB2.0协议、自己编写USB设备的驱动程序、熟悉单片机的编程。
参考:
https://baike.baidu.com/item/%E8%93%9D%E7%89%99%E4%B8%B2%E5%8F%A3/1415870