Android系统诞生这十几年以来,Android开发工程师岗位经历了由盛转衰的过程,目前纯UI的Android APP已经鲜有公司愿意花费巨资去开发,Android APP开发的业务也仅剩游戏、
Android
系统诞生这十几年以来,Android
开发工程师岗位经历了由盛转衰的过程,目前纯UI的Android APP已经鲜有公司愿意花费巨资去开发,Android APP开发的业务也仅剩游戏、物联网(Internet of Things,简称ioT)等方向。在物联网的世界中,串口通信是常见的有线通信方式,本篇文章围绕Android
与串口通信,来重新认识一下串口通信。
串口通信(Serial Communications
),即串口按位(bit
)发送和接收字节的通信方式。
串口是显控设备与信号处理板之间通信的主要接口,也是显控设备与其他设备、设备与设备之间的协议数据帧通信传输的重要接口。
根据通信方式划分,可以将串口通信划分为串行通信
与并行通信
。
串行通信:通信双方按位进行,遵守时序的一种通信方式。
串行通信可以根据数据同步方式
、数据传输方式
、电气标准及协议
再次细分为不同的种类。
bit
。串口按电气标准及协议来划分,包括EIA-RS-232C
、EIA-422
、EIA-485
等。
RS-232C
标准(协议)的全称是EIA-RS-232C
标准,定义是“数据终端设备(DTE
)和数据通讯设备(DCE
)之间串行二进制数据交换接口技术标准”。它是在1970年由美国电子工业协会(EIA
)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于全双工串行通讯的标准。例如,在PC
机上的COM1
、COM2
接口,就是RS-232C
接口。查看更多详情:EIA-RS-232C
EIA-422
(又称为RS-422
)是一系列的规定采用4线,全双工,差分传输,多点通信的数据传输协议。它采用平衡传输采用单向/非可逆,有使能端或没有使能端的传输线。和EIA-485
不同的是EIA-422
不允许出现多个发送端而只能有多个接受端。硬件构成上EIA-422
(RS-422
) 相当于两组EIA-485
(RS-485
),即两个半双工的EIA-485
(RS-485
)构成一个全双工的RS-422
(EIA-422
)。查看更多详情:EIA-422
EIA-485
(过去叫做RS-485
或者RS485
)是隶属于OSI模型物理层的电气特性规定为2线、半双工、平衡传输线多点通信的标准。是由电信行业协会(TIA
)及电子工业联盟(EIA
)联合发布的标准。实现此标准的数字通信网可以在有电子噪声的环境下进行长距离有效率的通信。在线性多点总线的配置下,可以在一个网络上有多个接收器。因此适用在工业环境中。查看更多详情:EIA-485
并行通信:是指以字节(byte
)或字节(byte
)的倍数为传输单位,同时通过并行线进行传送,这样数据传送速度大大提高,但并行传送的线路长度受到限制,因为长度增加,干扰就会增加,数据也就容易出错,因此并行通信不适合远距离数据传输。例如:打印机端口、IDE端口等。
作为一个
Android
开发者,与串口相关的很多东西我们都不需要去了解,我们基本都只需要关注如何去连接上这个串口,或许也只有硬件开发工程师,才需要了解到串口通信的原理等相关知识。
使用前先前往GitHub clone
项目AndroidSerialPort到本地,拷贝lib_serialport
模块到项目。
接着配置串口的连接所需参数:
Baud rate
):一个单位时间内传输符号的个数。如,9600的波特率表示每秒传输9600个字节,每毫秒9.6字节。RTS/CTS
流控制(数据终端就绪/数据设置就绪)流控制,软件流控制常用的有XON/XOFF
。var mSerialPortHelper = SerialPortHelper()// 配置串口号mSerialPortHelper.port = ConfigManage.serialPort// 配置波特率mSerialPortHelper.baudRate = ConfigManage.baudRate.toInt()// 配置数据位mSerialPortHelper.dataBits = ConfigManage.dataBits.toInt()// 配置校验位mSerialPortHelper.parity = SerialPortDataManage.parity[ConfigManage.parity]!!.toInt()// 配置停止位mSerialPortHelper.stopBits = ConfigManage.stopBits.toInt()// 配置流控mSerialPortHelper.flowCon = SerialPortDataManage.flow_bits[ConfigManage.flowBits]!!.toInt()// 监听串口数据的传输mSerialPortHelper.setISerialPortDataListener(object : ISerialPortDataListener {override fun onDataReceived(bytes: ByteArray?) {byteToHex(1, bytes)}override fun onDataSend(bytes: ByteArray?) {byteToHex(0, bytes)}})// 打开串口mSerialPortHelper.open()
最终效果:
参考文档
1、【串口通信】学习笔记
2、通信方式的分类(串行通信和并行通信)
来源地址:https://blog.csdn.net/baidu_41616022/article/details/130478138
--结束END--
本文标题: 【Android】串口通信的理论与使用教程
本文链接: https://lsjlt.com/news/432941.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-01-21
2023-10-28
2023-10-28
2023-10-27
2023-10-27
2023-10-27
2023-10-27
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0