• 串口通信扩展知识


    在Android工控系统上,Android与硬件的通讯交互随处可见,其中串口通讯是最常用的通讯方式之一。
    串口通信(Serial Communication), 是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。
    传统的串口通讯是异步串行(UART),传输数据采用帧格式传输,一帧数据由起始位、数据位、校验位、停止位组成。

    • 波特率:传输速率,波特率9600,则表示每秒发送 9600 bit
    • 数据位:通信中实际数据位的参数,5-8位
    • 停止位:表示单个包的最后一位。典型的值为1,1.5和2位
    • 校验位:检错方式,有四种检错方式:偶、奇、高和低,也可以没有校验位

    常见串口接线通常有两种接法,一种是串口直通线,另一种串口交叉线,区别如下图
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    从上面可知:实现设备间的全双工通信串口通讯至少需要三根线:TX(发送数据)、RX(接收数据)、GND(信号地)

    特别注意:接线端到端要保持一致,接法不能混合,否则硬件通讯失败

    常见串口主要有两种RS232、RS485,主要区别如下:

    rs232和rs485的区别如下:

    1、传输方式不同

    接口传输方式传输距离传输速率通信方式
    RS232采用不平衡传输方式,即所谓的单端传输。发送端输出正电平为515V,负电平为-5-15V,无数据时线上为TTL,接收器工作点评在312V与-3-12V。共模抑制能力差适合本地设备之间的传输,传输距离最大为15米最高速率为20kb/s只允许一对一的通信,是全双工的,同时可收发
    RS485采用平衡传输,即差分传输方式。AB之间正点平为+2+6V,负电平为-2-6。接收器AB之间大于+200mV为正逻辑电平,小于-200mV为负逻辑电平传输距离为几十米到上千米最高可以达到10M在总线上允许链接128个收发器,是半双工的,某一个只能收或者发

    实际开发没有硬件设备,怎么进行串口通讯测试?可以参考下面:

    虚拟串口调试模拟工具:

    下载地址:https://www.eltima.com/vspdpro-post-download.html

    PC端的使用步骤

    1. 添加端口,虚拟端口是成对出现的(这里自己创建的端口是COM1、COM2),一个负责收数据,一个负责发数据。
    2. 使用PC Windows端串口测试工具,分别打开端口COM1、COM2,打开端口的设置参数一样(波特率、数据位、校验位、停止位)
    3. 在PC端串口测试工具进行数据的发送和接收

    Android的端使用步骤

    1. 由于串口是互通的,我们可以在PC端使用串口测试工具打开串口COM1,作为数据接收(当然也可以发送数据,因为全双工通讯)

    2. 在Oracle VM VirtualBox中设置Genymotion模拟器(Android Genymotion模拟器运行在Oracle VM VirtualBox中运行的)的虚拟串口
      将Android Genymotion模拟器的串口设备COM1也就是 /dev/ttyS0(COM2对应 /dev/ttyS1),映射到PC的虚拟COM2端口
      在这里插入图片描述

    3. 配置Android Genymotion模拟器串口/dev/ttyS0权限,cmd分别执行

       adb shell
       chmod 777 /dev/ttyS0
      
      • 1
      • 2
    4. 启动模拟器,运行Android端的串口调试工具

    5. 最后进行数据发送和接收测试

    备注:上面测试只是模拟串口测试,实际还得对接实际硬件设备进行调试

  • 相关阅读:
    雷军的演讲以及产品发布
    dhtmlx甘特图marker不随小时移动
    Linux操作系统讲义大全
    Jmeter接口自动化(四)配置元件
    (01)ORB-SLAM2源码无死角解析-(55) 闭环线程→闭环检测:寻找闭环候选关键帧 LoopClosing::DetectLoop()
    投研报告 -用DEX技术链改投注网站的项目Betswap($BSGG)
    ArcGIS Enterprise + ArcGIS Pro 常用服务类型发布
    复习 --- QT服务器客户端
    LeetCode中等题之整数转罗马数字
    GO语言基础
  • 原文地址:https://blog.csdn.net/u011082160/article/details/128207734