• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

串口通信中如何自己定义协议

a3d600d93d65cfb1 2020-01-21 浏览量:1031

串口通信中如何自己定义协议

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
所有亮答 数量:9
  • 可以参考MODULEbus 协议。  然后自己在定义规则。怎么方便自己怎么来。

  • 可以根据目前已有的协议,比如modbus,在上面稍加修改,就是自己的协议。目前很多厂家用的串口协议就是modbus修改而来的

  • 这个其实完全看你自己的需求,基本上可以随意定义。

    你要知道串口通信协议和其需要传递的数据有关,比如本身只需要传递简单的字符串信息、或者char整形,客户端只是需要简单接收,则不特意定制协议其实就是一种自定义协议。

    如果通信双方需要交换数据,且数据宽带超过了1byte,则需要有一个双方发生数据、解析接收到数据的约定,这就是双方的通信协议,比如这里为了交互long数据(通信中只有这个交互需求),规定4byte是一个通信单位,采用大端模式,就是一个很简单的自定义协议。

    更复杂的协议可以传递更复杂的数据,比如前面答题的几位提到的MODULEbus协议,不过这个协议因为不光是针对串口的,所以修改也要有方向,主要涉及

    1. 地址部分是否需要,单纯的串口通信是点对点的,不需要地址部分,而MODULEbus本身是一种总线协议,是包含地址部分的。

    2. 数据信息的定义格式,这个可以结合已有的类型支持进行组合等来实现。

  • 最好使用现有的通讯协议,比如modbus协议,有完善的校验机制,不过自己定义协议也是可以的比如帧头帧尾自己定义,还需要加上校验,如果是字符传输可以结尾通过回车换行符判断一帧

  • 看看通讯的对象,依据不同情况而定。

    比如如果和PLC通讯,就要针对不同品牌的PLC专有协议。

    如果是仪表,那就用MODUBUS。

    如果是两边都是自己开发的,那就掌握简单可靠的原则。

    比如对通讯速率要求高,就不检验。

    如果可靠性高,就加校验位,还可以采取回传方式。

  • 发一帧数据时用几个字节,带不带校验和,起始字节是什么,结束字节是什么,关键的命令字是什么,数据字节是什么。命令字表示什么动作,数据表示状态。反正都是自己确定的,怎么编写协议都 行的。

  • MODULEbus 既是自己定义的,可以自己参考一下

  • modbus就是自己定义的,可以参考一下

  • https://www.icxbk.com/article/detail?aid=866

    可以看看我写的这篇文章,这个有对串口协议,数据断帧有讲解

相关问题

问题达人换一批

串口通信中如何自己定义协议