常用的协议类型
- ASCII 协议,又称自由口
- Modbus 协议
基于自定义协议的通信(发送和接收都使用16进制进行),首先自定义一个通信协议。
使用RS232进行通信,设定如下:
波特率:9600;
数据位:8;
停止位:1;
奇偶校验:无;
通信协议内容:
寄存器1 置1 执行 功能1 地址 0b;
寄存器2 置1 执行 功能2 地址 1b;
crc校验: 将数据+地址等通过与或等操作生成的一个值(一般自定义的都会进行校验);
开始位:01;
结束位: 05;
地址位:0a(根据不同寄存器决定);
结果位:0e ( 成功0e,失败00);
发送例子:执行功能1。
01 0b 01 00 00 00 00 00 00 00 06 0e 05
解析:
01是开始位,0b是对应寄存器1的地址,数据长度是8,没有数据的置00,06是crc校验生成值,0e是结果位,05 是结束位。
返回成功:
01 0b 01 00 00 00 00 00 00 00 06 0e 05
返回失败:
01 0b 01 00 00 00 00 00 00 00 07 00 05
自定义的一个最简单的一个自定义协议,通信流程如下:
上位机发送数据
下位机接收到数据
下位机做crc校验,如果失败,那么不做反应。
下位机crc校验成功,执行功能。并反馈结果。
上位机接收到数据,做crc校验,如果成功,认为数据正确。否则认为数据错误,执行失败。
完成通信