精华内容
下载资源
问答
  • 此程序将RS232串口通讯报文转化为可视化的高低电平图像,支持不同的奇偶校验、停止位设置
  • 报文格式化程序.zip

    2020-02-20 16:20:37
    主要是对杂乱无章的报文进行格式化整理。如整篇的串口数据,复制进报文格式化工具然后确定后。报文按照规律自动整理。
  • 在socket或者使用串口通信的时候,我们在打印报文信息的时候,遇到打印乱码的情况: 1、存储报文数组: unsigned char send[100]; 2、报文信息: uint16_t head = 0xAA01; head = htons(head); memcpy(send,&...

    在socket或者使用串口通信的时候,我们在打印报文信息的时候,遇到打印乱码的情况:

    1、存储报文数组:

    unsigned char send[100];

    2、报文信息:

    uint16_t  head = 0xAA01;

    head = htons(head);

    memcpy(send,&head,sizeof(uint16_t));

    uint16_t  length = 0x1234;

    length = htons(length);

    memcpy(send+2,&length,sizeof(uint16_t));

    3、打印报文

    printf("%s",send); //错误打印方式,打印出来的是乱码,因为我们写入到报文的是十六进制数,读的时候也要以十六进制的形式读出每个字节。

    for(int i =0;i<4;i++)    //正确打印方式

          printf("%02x ",send[i]);

    4、总结

    一定要记住:整型变量和字符型变量是不分家的,二者可以相互转换;

    将写入的十六进制整型,以字符型打出,打印的是以该十六进制数为ASCII码的字符,所以,可能是乱码;

    故,要将写入的十六进制数原样打印出来,需要使用%x(%02x含义:打印出来的十六进制数为两位,不足两位的左边补0);

     

     

     

    展开全文
  • 深入剖析串口通信数据格式

    千次阅读 多人点赞 2019-05-10 21:43:05
    串口串行接口(serial port)的简称,也称为串行通信接口或COM接口。串口通信是指采用串行通信协议(serial communication)在一条信号线上将数据一个比特一个比特地逐位进行传输的通信模式。 串口按电气标准及...

    串口是串行接口(serial port)的简称,也称为串行通信接口或COM接口。串口通信是指采用串行通信协议(serial communication)在一条信号线上将数据一个比特一个比特地逐位进行传输的通信模式。 串口按电气标准及协议来划分,包括RS-232-C、RS-422、RS485等。

    在串行通信中,数据在1位宽的单条线路上进行传输,一个字节的数据要分为8次,由低位到高位按顺序一位一位的进行传送。串行通信的数据是逐位传输的,发送方发送的每一位都具有固定的时间间隔,这就要求接收方也要按照发送方同样的时间间隔来接收每一位。不仅如此,接收方还必须能够确定一个信息组的开始和结束。常用的两种串行通信方式包括同步通信和异步通信。

    TTL电平和RS232电平

    TTL电平:+5V等价于逻辑”1”,0V等价于逻辑”0”;

    RS232电平: 串口的一个标准,采用负逻辑。

    1. 在TXD和RXD上:逻辑”1” = -15V ~ -3V,逻辑”0” = +3V ~ +15V

    2. 在RTS、CTS、DSR、DTR和DCD等控制线上:信号有效(接通,ON状态,正电压,高电平)= +3V~+15V,信号无效(断开,OFF状态,负电压,低电平) = -3V~-15V

    9针串口(DB9)

    这里写图片描述

    管脚功能说明如下:
    这里写图片描述

    串行同步通信与串行异步通信

    (PS:本节中电平为TTL电平)

    同步通信(SYNC:synchronous data communication)是指在约定的通信速率下,发送端和接收端的时钟信号频率和相位始终保持一致(同步),这样就保证了通信双方在发送和接收数据时具有完全一致的定时关系。

    异步通信(ASYNC:asynchronous data communication),是以字符为单位进行传输的,字符之间没有固定的时间间隔要求,而每个字符中的各位则以固定的时间传送。 异步通信中,收发双方取得同步是通过在字符格式中设置起始位和停止位的方法来实现的。具体来说就是,在一个有效字符正式发送之前,发送器先发送一个起始位,然后发送有效字符位,在字符结束时再发送一个停止位,起始位至停止位构成一帧。停止位至下一个起始位之间是不定长的空闲位,并且规定起始位为低电平(逻辑值为0),停止位和空闲位都是高电平(逻辑值为1),这样就保证了起始位开始处一定会有一个下跳沿,由此就可以标志一个字符传输的起始。而根据起始位和停止位也就很容易的实现了字符的界定和同步。
    显然,采用异步通信时,发送端和接收端可以由各自的时钟来控制数据的发送和接收,这两个时钟源彼此独立,可以互不同步。

    异步通信的数据格式

    (PS:本节电平为TTL电平)

    一个数据帧包括:1个起始位(低电平),8个数据位,1个校验位,1个停止位(高电平,表示数据帧结束),如下图所示。
    这里写图片描述
    1. 在信号线上共有两种状态,可分别用逻辑1(高电平)和逻辑0(低电平)来区分。在发送器空闲时,数据线应该保持在逻辑高电平状态
    2. 起始位(Start Bit):发送器是通过发送起始位而开始一个字符传送,起始位使数据线处于逻辑0状态,提示接受器数据传输即将开始;

    1. 数据位(Data Bits):起始位之后就是传送数据位。数据位一般为8位一个字节的数据(也有6位、7位的情况),标准的ASCII码是0~127(7位),扩展的ASCII码是0~255(8位),低位(LSB)在前,高位(MSB)在后

    2. 校验位(parity Bit):校验位一般用来判断接收的数据位有无错误,分为NONE(无校验位)/ODD(奇校验)/EVEN(偶校验)/MASK(标志位,校验位一直为1)/SPACE(空白,校验位一直为0),例如,如果数据是1011,那么对于偶校验,校验位为1,保证逻辑高的位数是偶数个,如果是奇校验,校验位为0,保证逻辑低的位数是奇数个。一般是奇偶校验,在使用中,该位常常取消;

    3. 停止位:停止位在最后,用以标志一个字符传送的结束,它对应于逻辑1状态
    4. 位时间:即每个位的时间宽度,起始位、数据位、校验位的位宽度是一致的,停止位有1位、1.5位、2位格式,一般为1位。

    异步数据的数据发送过程

    发送数据的具体步骤如下:

    1. 初始化后或者没有数据需要发送时,发送端输出逻辑1,可以有任意数量的空闲位;

    2. 当需要发送数据时,发送端首先输出逻辑0,作为起始位;

    3. 接着开始输出数据位,发送端首先输出数据的最低位D0,然后是D1,最后是数据的最高位;

    4. 如果设有奇偶检验位,发送端输出检验位;

    5. 最后,发送端输出停止位(逻辑1);

    6. 如果没有信息需要发送,发送端输出逻辑1(空闲位),如果有信息需要发送,则转入步骤2;

    7. 如果是以232电平发送的,示波器上看到的发送端信号应是上述数据包取反后的结果(负逻辑)。

    异步通信的数据接收过程

    在异步通信中,接收端以接收时钟和波特率因子决定每一位的时间长度。下面以波特率因子等于16(接收时钟每16个时钟周期使接收移位寄存器移位一次)为例来说明:

    1. 开始通信,信号线为空闲(逻辑1),当检测到由1到0的跳变时,开始对接收时钟计数;

    2. 接收端检测到起始位后,隔16个接收时钟对输入信号检测一次,把对应的值作为D0位数据;

    3. 再隔16个接收时钟,对输入信号检测一次,把对应的值作为D1位数据,直到全部数据位都输入;

    4. 检验奇偶检验位;

    5. 接收到规定的数据位个数和校验位之后,通信接口电路希望收到停止位(逻辑1),若此时未收到逻辑1,说明出现了错误,在状态寄存器中置“帧错误”标志;若没有错误,对全部数据位进行奇偶校验,无校验错时,把数据位从移位寄存器中取出送至数据输入寄存器,若校验错,在状态寄存器中置“奇偶错”标志;

    6. 本帧信息全部接收完,把线路上出现的高电平作为空闲位;

    7. 当信号再次变为低时,开始进入下一帧的检测。
      (PS1:接收时钟和发送时钟与波特率有如下关系:
      f = n × B 这里f 是发送时钟或接收时钟的频率; B 是数据传输的波特(Baud)率; n 称为波特率因子。设发送或接收时钟的周期为Tc,发送一个波形所需要的传输时间为Td,则: Tc = 1/f , Td = 1/B ,得到: Tc = Td /n,从而n代表发送一个波形需要几个时钟周期。 在实际串行通信中,波特率因子可以设定。在异步传送时,n = 1,16,64,常采用n = 16,即发送或接收时钟的频率要比数据传送的波特率高n倍。在同步通信时,波特率因子n必须等于1。
      PS2:波特率与比特率的关系:
      波特率代表1秒钟发送波形的个数,而比特率代表1秒钟发送比特的个数。在采用二进制传输的情况下,发送的波形一共有两种波形,即高电平和低电平,那么一个波形代表一个比特,因此波特率和比特率相等;在采用四进制传输的情况下,发送的波形一共有4种波形,此处假设发送的最高电平为3V,发送00的波形为0V,发送01的波形为1V,发送10的波形为2V,发送11的波形为3V,那么一个波形代表两个比特,因此比特率是波特率的两倍;同理,在采用八进制传输的情况下,比特率是波特率的三倍,以此类推。)

    串口助手通过DB9串口发送数据剖析

    波特率115200bps,每个比特时间:1s/115200 = 1000000us/115200=8.68us。

    发送5C4E,偶校验

    1.串口调试助手

    这里写图片描述

    2.5C4E对应二进制:0101_1100_0100_1110,分别对2个字节加起始位、校验位、停止位(data的LSB先发):
          b |<–data–>| ps
    0101_1100:0_0011_1010_0_1

          b |<–data–>| ps
    0100_1110:0_0111_0010_0_1
    合起来为:0_0011_1010_0_1_0_0111_0010_0_1
    3.转换为负逻辑:1_1100_0101_1_0_1_1000_1101_1_0,波形如下图,可以看到数据流的1逻辑为-11V,0逻辑为+11V:
    这里写图片描述

    发送7B3D2A,无奇偶校验位

    1.串口调试助手
    这里写图片描述

    2.7B3D2A对应二进制:0111_1011_0011_1101_0010_1010,分别对3个字节加起始位、停止位(data的LSB先发):
           b |<–data–>| s
    0111_1011:0__11011110__1

           b |<–data–>| s
    0011_1101:0__10111100__1

           b |<–data–>| s
    0010_1010:0__01010100__1
    合起来为:0_1101_1110_1_0_1011_1100_1_0_0101_0100_1
    3.转换为负逻辑:1_0010_0001_0_1_0100_0011_0_1_1010_1011_0,波形如下图,可以看到数据流的1逻辑为-11V,0逻辑为+11V:
    这里写图片描述

    参考文献

    https://wenku.baidu.com/view/83fc202b19e8b8f67d1cb93e.html
    https://wenku.baidu.com/view/681e210aba1aa8114431d9d4.html

    展开全文
  • 串口通信数据格式

    千次阅读 2020-09-17 12:21:38
    串口收发数据的单位:字节 (Byte) '', 1Byte = 8 bits , 串口收发数据格式一般为 :1bit 起始位(一般为0) + 8bits 数据位(一字节) +1bit 校验位(可有可无) + 1bit结束位(一般为1) 奇校验是指每帧数据中,包括...

    串行接口的定义:

    • 串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口)
    • 是指数据一位一位地顺序传送
    • 特点是通信线路简单,只要一对传输线就可以实现双向通信;成本低,适用于远距离通信,但传送速度较慢

     串口通信的定义:

    • 串口按位(bit)发送和接收字节。

    串口通讯的定义:

    • 串口通讯(Serial Communication), 是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式。一条信息的各位数据被逐位按顺序传送的通讯方式称为串行通讯。

    在串行通信中,数据在1位宽的单条线路上进行传输,一个字节的数据要分为8次,由低位到高位按顺序一位一位的进行传送。

    串口收发数据的单位:字节 (Byte) '',   1Byte = 8 bits , 串口收发数据格式一般为  :1bit 起始位(一般为0)   8bits 数据位(一字节)  1bit 校验位(可有可无)  + 1bit结束位(一般为1)

     

    • 奇校验是指每帧数据中,包括数据位和奇偶校验位的全部9个位中1的个数必须为奇数;
    • 偶校验是指每帧数据中,包括数据位和奇偶校验位的全部9个位中1的个数必须为偶数。
    展开全文
  • 6.1网络服务与报文格式

    6.1网络服务与报文格式

    展开全文
  • 串口通信协议编制原理和格式

    千次阅读 2019-08-12 19:33:23
    串口通信中用户层协议编制原理和格式 编制原理 在用户层的串口通信协议中,一般是围绕发送方如何建立数据包和接收方如何处理数据包,并从数据包中提取出我们关心的信息。有几个原则需要我们严格遵守: 1)数据包必须...
  • 托利多串口表头读取

    2018-05-31 17:54:15
    基于c#的托利多表头通过串口工具读取,本程序目前只适合托利多表头,其他表头也能读出数据,但是需要重新处理数据。
  • 三菱MELSEC 1帧协议报文格式

    千次阅读 2020-02-26 13:26:58
    关于三菱 MC 1E协议报文说明: 是不是1E协议可以发送:D100 ....报文格式: 请求报文格式:01ff0A00 64 00 00 00 20 44 0200 固定头部:01ff0A00。 请求地址:64 00 00 00地址因为跨度比较大,所以用了3个字节...
  • NMEA是现在GNSS(Global Navigation Satellite System)导航设备用作输出的统一标准,它有几种不同的格式,每种都是独立相关的ACSII字节流,使用,隔开。常用的格式有 GGA、GLL、GSA、GSV、RMC、VTG、ZDA、GST。 GGA...
  • 串口通信数据格式那点儿事儿

    千次阅读 2016-01-14 21:31:25
    要清楚一件事儿,计算机只识别ASC码,串口调试助手上可以16进制发送和16进制接收 1,比如如果单片机接收到一个ASC码0x31,  一,勾选16进制的话,就会以16进制的格式显示,因为ASC码本身就是16进制,则会显示...
  • 首先我们可以看到在应用层,根据当前的需求和动作,结合应用层的协议,有我们确定发送的数据内容,我们把这些数据放到一个缓冲区内,然后形成了应用层的报文data。 主要协议如下: HTTP (Hypertext Transfer ...
  • MODBUS RTU的报文格式

    千次阅读 2017-06-30 17:21:57
    如果是想通过串口调试助手给PLC发命令的话,假设PLC从站地址为1的情况下,比如要对Q0.0进行置位的话,可以发如下命令: 01 0F 00 00 00 08 01 01 3F 55 其中: 01:从站地址,指的就是PLC站地址 0F:功能码,用来...
  • using IND245; static void Main(string[] args) { ... int BAUDRATE = 9600; int TESTNUM = 3; double weight = 0;... string weightUnit = string.Empty;... if (i245.SerialOpen(PORTNAME, BAUDRATE).Equals(0)) ...
  • 有关打印格式以及串口输出形式整理1、printf 打印格式:1printf(" "); //空格2printf("\n"); //换行3printf("\r\n"); //换行并移动光标到本行开始处4printf("%x"); //...
  • MODBUS-RTU数据帧格式报文实例

    万次阅读 2018-11-17 19:39:59
    数据格式 CRC校验L CRC校验H 8bit 8bit N*8bit 8bit 8bit   一个报文就是一帧数据,一个数据帧就一个报文: 指的是一串完整的指令数据,就像上面的一串数据。 主机对从机写数据操作 ...
  • } /// /// 波特率(每秒传送字节数) /// private void cboBaudRate_SelectedIndexChanged(object sender, EventArgs e) { //获取或设置串口波特率 // cboBaudRate.Items.Add(sp.BaudRate); sp.BaudRate = Convert....
  • 使用C语言进行模拟新的语言对嵌入式进行编程,编程方式为报文发送然后解释运行,注释很丰富。
  • Modbus slave模拟Modbus主从通信虚拟串口基础知识积累MODBUS-RTU报文模型主机对从机写数据操作主机对从机写数据操作后,从机的返回内容主机对从机读数据操作主机对从机读数据操作后,从机对主机返回内容Modbus-RTU...
  • Qt5开发串口助手+自定义报文回复

    千次阅读 2019-10-28 13:23:37
    1、windows/linux-Ubuntu下串口信息收发(ASCII/HEX) 2、串口相关参数可配置,打开端口后实时生效 3、端口信息根据系统COM口事实刷新3 4、定时自动重发 5、自动换行,log显示接收时间 6、自定义报文自动回复...
  • https://blog.csdn.net/weixin_34202952/article/details/87990220
  • AOI串口通讯协议 1 PC与LCD测试架的通讯 PC与LCD测试架之间采用232串口线连接, 传输参数:波特率:115200,校验位:无,数据位:8,停止位:1,流控制:无 2 通讯数据包格式 数据包格式: 标志0x5A 数据长度N...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,476
精华内容 4,990
关键字:

串口报文格式

友情链接: Res-Choose.rar