【Android】串口通信的理论与使用教程

news2024/11/17 9:50:48

Android系统诞生这十几年以来,Android开发工程师岗位经历了由盛转衰的过程,目前纯UI的Android APP已经鲜有公司愿意花费巨资去开发,Android APP开发的业务也仅剩游戏、物联网(Internet of Things,简称IoT)等方向。在物联网的世界中,串口通信是常见的有线通信方式,本篇文章围绕Android与串口通信,来重新认识一下串口通信。

目录

  • 串口通信简介
  • 串口通信分类
    • 串行通信
      • 根据数据同步方式划分
      • 根据数据传输方式划分
      • 根据电气标准及协议划分
    • 并行通信
    • 图表总结串口通信
  • 串口通信的使用

串口通信简介

串口通信(Serial Communications),即串口按位(bit)发送和接收字节的通信方式。

串口是显控设备与信号处理板之间通信的主要接口,也是显控设备与其他设备、设备与设备之间的协议数据帧通信传输的重要接口。

串口通信分类

根据通信方式划分,可以将串口通信划分为串行通信并行通信

串行通信

串行通信:通信双方按位进行,遵守时序的一种通信方式。
在这里插入图片描述

串行通信可以根据数据同步方式数据传输方式电气标准及协议再次细分为不同的种类。

根据数据同步方式划分

  • 同步通信
    同步通信:一次通信只传送一帧信息,通常含有若干个数据字符。数据格式分别为面向字符和面向bit
  • 异步通信
    异步通信:每一个字符要用起始位和停止位作为字符开始和结束的标志,以字符为单位一个个地发送和接收。在进行异步传输数据时,通信双方必须约好:字符格式、通信速率。

根据数据传输方式划分

  • 单工
    单工:通信双方中,一方固定为发送端,一方则固定为接收端。信息只能沿一个方向传输,使用一根传输线。
    在这里插入图片描述
  • 半双工
    半双工:在通信过程的任意时刻,信息既可由A传到B,又能由B传A,但只能有一个方向上的传输存在。
    在这里插入图片描述
  • 全双工
    全双工:通信允许数据在两个方向上同时传输,它在能力上相当于两个单工通信方式的结合。全双工指可以同时(瞬时)进行信号的双向传输(A→B且B→A)。指A→B的同时B→A,是瞬时同步的。
    在这里插入图片描述

根据电气标准及协议划分

串口按电气标准及协议来划分,包括EIA-RS-232CEIA-422EIA-485等。

  • EIA-RS-232C
    RS-232C标准(协议)的全称是EIA-RS-232C标准,定义是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”。它是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于全双工串行通讯的标准。例如,在PC机上的COM1COM2接口,就是RS-232C接口。

查看更多详情:EIA-RS-232C

  • EIA-422
    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
    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、通信方式的分类(串行通信和并行通信)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/486252.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springcloud:新一代分布式定时任务框架——PowerJob

0. 引言 之前我们讲解过主流的分布式定时任务框架xxl-job,随着技术的迭代更新,更多的定时任务框架也开始出现,今天我们来看一看新一代的定时任务框架PowerJob 1. PowerJob简介 PowerJob是基于java开发的企业级的分布式任务调度平台&#x…

Java设计原则之单一职责原则、开闭原则、里氏代换原则

文章目录 面向对象设计原则概述 单一职责原则 开闭原则 里氏代换原则 面向对象设计原则概述 软件的可维护性(Maintainability)和可复用性(Reusability)是两个非常重要的用于衡量软件质量的属性,软件的可维护性是指软…

Ubuntu常用命令总结

目录 1)安装包命令及下载包命令 2)阅读协议内容 3)执行sh文件: 4)创建虚拟环境 5)激活虚拟环境 6)虚拟环境中安装包 7)安装上传代码工具 8)代码上传 9&#xff09…

传输控制协议(TCP)知识点总结

文章目录 传输控制协议(TCP)知识点总结介绍数据包格式TCP连接的建立和关闭三次握手四次挥手一张图展示这些过程 其他知识 传输控制协议(TCP)知识点总结 维基百科: 传输控制协议(TCP)是Internet协议套件中的主要协议之一。它起源于…

五种最危险的新兴网络攻击技术

SANS研究所的网络专家揭示了包括网络罪犯和民族国家行为者在内的网络攻击者正在使用的五种最危险的新兴网络攻击技术。在旧金山举行的RSA网络安全会议上,由SANS研究所的几位分析师组成的讨论组讨论了新兴的网络攻击战术、技术和程序,并提供了如何为企业做…

使用GLSL来实现实时滤镜的效果

1. 先来明确几个概念 1.1 OpenGL OpenGL 全称为 Open Graphics Library(开放图形库)。 是用于渲染 2D 或 3D 图像的跨语言跨平台的应用程序编程接口,用于CPU控制GPU做图像渲染,是一套API。 提供设计人员一个共同的硬件驱动标准…

虚函数、静态绑定和动态绑定

静态绑定 class Base { public:Base(int data) :ma(data) {}void show() { cout << "Base::show()" << endl; }void show(int) { cout << "Base::show(int)" << endl; }protected:int ma; };class Derive : public Base { public…

Go | 一分钟掌握Go | 10 - 反射

作者&#xff1a;Mars酱 声明&#xff1a;本文章由Mars酱编写&#xff0c;部分内容来源于网络&#xff0c;如有疑问请联系本人。 转载&#xff1a;欢迎转载&#xff0c;转载前先请联系我&#xff01; 前言 反射你以为只在Java中有吗&#xff1f;Go也有反射机制&#xff0c;很多…

【JavaEE】应用层自定义协议及UDP协议

博主简介&#xff1a;想进大厂的打工人博主主页&#xff1a;xyk:所属专栏: JavaEE初阶 本篇文章将为大家介绍应用层中UDP协议~~ 在应用层这里&#xff0c;虽然存在一些现有的协议&#xff08;HTTP&#xff09;&#xff0c;但是也有很多情况&#xff0c;需要程序猿自定制协议&a…

OJ 功能介绍 使用手册

目录 服务器配置 OJ界面展示 用户管理 一、批量导入&#xff08;从方便管理角度建议以 学生姓名 作为 用户名 &#xff09; 二、批量生成临时用户 后期修改成需要的用户名和密码 &#xff08;学生登录后修改密码&#xff09; 三、用户自行注册&#xff08;填写邮箱获取验证码…

Nmap入门到高级【第九章】

预计更新Nmap基础知识 1.1 Nmap简介和历史 1.2 Nmap安装和使用方法 1.3 Nmap扫描技术和扫描选项 Nmap扫描技术 2.1 端口扫描技术 2.2 操作系统检测技术 2.3 服务和应用程序检测技术 2.4 漏洞检测技术 Nmap扫描选项 3.1 扫描类型选项 3.2 过滤器选项 3.3 探测选项 3.4 输出选项…

【致敬未来的攻城狮计划】— 连续打卡第二十天:RA2E1_UART —— 串口通信例程

系列文章目录 1.连续打卡第一天&#xff1a;提前对CPK_RA2E1是瑞萨RA系列开发板的初体验&#xff0c;了解一下 2.开发环境的选择和调试&#xff08;从零开始&#xff0c;加油&#xff09; 3.欲速则不达&#xff0c;今天是对RA2E1 基础知识的补充学习。 4.e2 studio 使用教程 5.…

Docker consul服务注册与发现

目录 一、服务注册与发现 1、什么是服务注册与发现 2、什么是consul 3、consul提供的一些关键特性 4、容器更新与发现 二、基于nginx与consul构建自动发现即高可用的Docker服务架构 consul服务器部署 1、建立consul 2、查看集群信息 3、通过http获取集群信息 regist…

SpringBoot+vue文件上传下载预览分片上传

学习链接 Blob & File 上传文件 前台 整个过程&#xff0c;就是在使用FormData 添加 上File&#xff08;这个Blob&#xff09;&#xff0c;并且key要和后台的名字对应上在点击上传按钮开始上传之前&#xff0c;使用了URL.createObjectURL(File)创建blobUrl&#xff0c;…

MySQL数据库之库表管理

一、常用的数据类型&#xff1a; 类型含义tinyint(n)1个字节&#xff0c;范围(-128~127)smallint(n)2个字节&#xff0c;范围(-32768~32767)mediumint(n)3个字节&#xff0c;范围(-8388608~8388607)int(n)4个字节(32个比特位)&#xff0c;整数型&#xff0c;范围(-2147483648~…

JavaEE - 网络编程

一、网络编程基础 为什么需要网络编程&#xff1f; 用户在浏览器中&#xff0c;打开在线视频网站&#xff0c;如优酷看视频&#xff0c;实质是通过网络&#xff0c;获取到网络上的一个视频资源。 与本地打开视频文件类似&#xff0c;只是视频文件这个资源的来源是网络。 相比本…

KALI入门到高级【第五章】

预计更新第一章 入门 1.1 什么是Kali Linux&#xff1f; 1.2 安装Kali Linux 1.3 Kali Linux桌面环境介绍 1.4 基本命令和工具 第二章 信息收集 1.1 网络扫描 1.2 端口扫描 1.3 漏洞扫描 1.4 社交工程学 第三章 攻击和渗透测试 1.1 密码破解 1.2 暴力破解 1.3 漏洞利用 1.4 特…

模糊PID(模糊规则表)

模糊PID的模糊化相关内容,请参看下面的博客文章: PLC模糊控制模糊PID(梯形图实现+算法分析)_RXXW_Dor的博客-CSDN博客博途PLC的模糊PID控制详细内容请查看下面的博客文章:Matlab仿真+博途PLC模糊PID控制完整SCL源代码参考(带模糊和普通PID切换功能)_博途怎么实现模糊pid_…

后端程序员的前端必备【Vue】 - 05 class与style绑定、表单输入绑定、Vue生命周期

class与style绑定、表单输入绑定、Vue生命周期 1 class与style绑定1.1 绑定class1.2 绑定style1.3 练习 2 表单输入绑定3 Vue生命周期3.1 vue生命周期3.2 组件的生命周期钩子 1 class与style绑定 操作元素的 class 列表和内联样式是数据绑定的一个常见需求。因为它们都是 attri…

【操作系统】操作系统内核

图灵机 当系统中有一个CPU的时候 &#xff0c;MR就是它的状态 当系统中有n个CPU的时候&#xff0c;MR1,MR2…MRn 是它的状态 IRQ和NMI是低电平有效信号 NMI不可屏蔽中断 6502的CPU一共40个引脚 eflags寄存器里的 IF 表示 interrupt enable 1表示可以响应中断&#xff0c;0表示…