三易串口屏协议解析器详解:一文掌握协议解析器的属性与使用方法

三易串口屏协议解析器详解:一文掌握协议解析器的属性与使用方法 在串口通讯开发中最耗费时间的往往不是发送数据而是接收数据后的解析。传统开发需要逐字节判断帧头、长度、命令码和校验代码量大调试也比较繁琐。三易VP开发环境提供了协议解析器控件可以统一接收串口数据并在接收事件中完成协议解析非常适合自定义串口协议开发。1、什么是协议解析器协议解析器属于非显示控件。它不会显示在界面上一个工程中只能添加一个协议解析器。每接收到一帧完整的数据都会自动触发一次接收事件开发者只需要在事件脚本中完成数据解析即可。适用于STM32通讯ESP32通讯自定义串口协议协议转换2、协议解析器有哪些属性协议解析器虽然只有几个属性但都非常重要。1rxMaxLen接收缓存长度。用于设置一帧数据最大允许接收多少字节。例如设备一帧数据最长50字节。那么可以设置64。如果协议较复杂也可以根据实际需要调整最大支持512字节。2rxBuf接收缓冲区。每收到一帧数据后所有数据都会保存在 rxBuf 数组中。例如收到A5 43 01 7C 01 91 86那么rxBuf[0]0xA5rxBuf[1]0x43……rxBuf[6]0x86开发时基本所有的数据解析都是从 rxBuf 中读取。3rxLen本次接收到的数据长度。例如收到7字节数据。那么rxLen7开发时通常第一步都会判断数据长度是否正确。if(proto.rxLen7){}3、协议解析器如何工作整个流程非常简单。MCU发送数据↓协议解析器接收↓保存到rxBuf↓触发接收事件↓脚本解析数据↓刷新控件整个过程无需轮询也不用自己写串口接收缓存。4、协议解析器的开发流程推荐按照下面的步骤开发。第一步设计通讯协议。例如帧头命令数据CRC第二步拖入协议解析器控件。配置串口参数。例如波特率校验位停止位保证与主机一致。扩展协议解析器还支持配置工作模式普通串口或 Modbus等参数。第三步编写接收事件。一般流程都是判断帧头。判断长度。判断CRC。解析命令。更新变量或控件。开发指南提供的示例也是按照这一流程进行处理。5、常用函数协议解析器开发中经常会配合以下函数使用。crc16()计算CRC校验。crc16(array,start,len)用于验证收到的数据是否正确。uartSendBytes()发送字节数组。解析完成以后可以直接回复主机。开发指南中的协议解析示例就是解析完成后重新组帧再调用 uartSendBytes() 返回响应数据。6、什么时候建议使用协议解析器如果只是简单控制一个LED或者发送几个固定命令直接使用串口发送即可。但如果协议包含帧头地址命令码数据区CRC校验数据尾建议直接使用协议解析器。不仅代码更加规范后期维护也更加方便。写在最后协议解析器最大的优势不是替代串口通讯而是帮助开发者建立统一的数据解析流程。接收数据、校验数据、解析数据、更新界面都可以在一个事件中完成代码结构更加清晰。