介绍
上位机和下位机的通信方式多种多样,一般有usart、can、usb、ethernet等,走什么通信方式视下位机的设备资源而定;以ethernet tcp通信为例,大部分情形下,下位机即嵌入式设备作为server端,PC端作为client端;嵌入式设备需要默认一个IP地址,比如192.168.137.22
,还要有一个端口号,比如8738
帧格式
帧格式的设计应包含四个部分:帧头 + 长度 + 数据段 + 校验
- 帧头:两个字节,例如固定为0xaa 0x55
- 长度:uint16,大端,整个包的长度,包含帧头、长度、数据段和校验四个部分的总长 度。单个包的最大长度为512
- 数据段:包荷载的内容,长度不固定
- 校验:两个字节,帧头、长度和数据段的CRC16计算值,当然也可以用异或校验
心跳包
心跳包设计原则:
- 最好仅支持一个设备连接
- 客户端请求,服务器应答
- 约定一个心跳时间,如30秒进行一次心跳查询;还要一个超时时间,如300秒没有任何应答则视为连接已经断开
请求
请求报文格式参考:协议码 + 消息类型 + 功能码 + 序号 + 功能数据
应答
应答报文格式参考:协议码 + 消息类型 + 功能码 + 序号 + 错误码 + 功能数据
总结
以上请求和应答设计范例其实是一种web服务的思想