文章目录
- 项目简介
- 1、主要功能
- 2、软件功能设计
- 0x00命令
- 0x01命令
- 0x02命令
- 0x03命令
- 0x04命令
- 0x05命令
- 0x06~0x08
- 0x10
- 0x11
- 0x12
- 0x13
- 0x14
- 0x20
- 0x21
- 0x22
- 一、界面
- 二、程序设计
- 未完待续
 
项目简介
1、主要功能
1.可以升级下位机程序
2.可以配置下位机的某些参数
3.可以接收下位机数据并可视化显示出来
4.可以接收下位机输出的日志信息,并可以保存下来
5.下位机可能会记录存储某些数据,上位机可以读取并显示出来
6.上位机需要具备完整的操作提示和错误提示2、软件功能设计
物理层需使用UART或232的全双工通讯,同时规定数据如果没有特殊标注都使用小端模式传输(低字节在前高字节在后)。
 在上一章中使用了比较通用的Modbus协议和下位机进行通讯,这一章将通过自定义的协议实现一个这个调试上位机。
 协议格式如下:
| 帧头 | 命令标识 | 数据个数 | 数据 | 校验 | 
| 2Byte | 1Byte | N个Byte | N个Byte | 1Byte | 
| 0xAAAA | 0~0xff | 使用varint编码 | 异或校验 | 
命令标识定义如下:
0x00命令
此命令标识只能由下位机向上位机发送,上位机无需回复,功能为监控数据,数据段包含两个4个字节的整型数据,同时为节省带宽使用varint编码
 一个字节的0~6bit为数据,第7个bit为是否需要向下解析,如下示例:
 第一个数据为1,第二个数据为500,那么发送数据为:
| 帧头 | 命令标识 | 数据个数 | 数据 | 校验 | 
| 0~1字节 | 2字节 | 3字节 | 4~6字节 | 7字节 | 
| 0xAA,0xAA | 0x00 | 0x03 | 0x01,0xF4,0x03 | 0x00 | 
第一个数据为500,第二个数据为60000,那么发送数据为:
| 帧头 | 命令标识 | 数据个数 | 数据 | 校验 | 
| 0~1字节 | 2字节 | 3字节 | 4~8字节 | 9字节 | 
| 0xAA,0xAA | 0x00 | 0x05 | 0xF4,0x03,0xE0,0xD4,0x03 | 0x00 | 
0x01命令
上位机向下位机发送此命令查询下位机当前运行的程序状态:
| 帧头 | 命令标识 | 数据个数 | 数据 | 校验 | 
| 0~1字节 | 2字节 | 3字节 | 无 | 4字节 | 
| 0xAA,0xAA | 0x01 | 0x00 | 无 | 0x00 | 
下位机回复:
| 帧头 | 命令标识 | 数据个数 | 数据 | 校验 | 
| 第0~1字节 | 第2字节 | 第3字节 | 第4字节 | 第5字节 | 
| 0xAA,0xAA | 0x01 | 0x01 | 0x00:当前运行在boot中,0x01:运行在app中 | 0x00 | 
0x02命令
上位机向下位机发送此命令控制下位机跳转boot或app
| 帧头 | 命令标识 | 数据个数 | 数据 | 校验 | 
| 0~1字节 | 2字节 | 3字节 | 4字节 | 5字节 | 
| 0xAA,0xAA | 0x02 | 0x01 | 0x00:跳转到App,0x01:跳转到Boot | 0x00 | 
下位机回复:
| 帧头 | 命令标识 | 数据个数 | 数据 | 校验 | 
| 第0~1字节 | 第2字节 | 第3字节 | 第4字节 | 第5字节 | 
| 0xAA,0xAA | 0x02 | 0x01 | 0x00:成功,其他失败 | 0x00 | 
0x03命令
上位机向下位机发送此命令或取下位机app软件版本号
 上位机数据:无
 下位机数据:3个字节版本号
0x04命令
上位机向下位机发送此命令通知下位机app程序开始升级,下位机收到命令后进行升级前的初始化操作
 上位机数据:4个字节的文件大小
 下位机数据:0:成功,其他失败
0x05命令
上位机向下位机发送app程序升级文件数据
 上位机数据:N个字节,前4个字节为文件的偏移
 下位机数据:5个字节,第一个字节为错误码:0:成功,1:Flash写入失败,2:偏移错误(后面4个字节为正确的偏移),3:还未接收到文件信息
0x06~0x08
0x03到0x05为仅在boot中支持的升级app程序用到的指令,0x06~0x08为仅在app中支持的升级boot程序用到的指令
0x10
上位机获取下位机配置数量,同时下位机接收到命令将把读取索引设置到开头
 上位机数据:无
 下位机数据:2个字节,当前设备的配置数量
0x11
上位机获取下位机配置,同时下位机每反回一条索引向后加1
 上位机数据:无
 下位机数据:N个字节,第一个字节为故障码,0为正常,后续格式为,Key:Value,Key为配置名称,Value为值
0x12
上位机设置下位机配置
 上位机数据:N个字节,格式为,Key\0Value,Key为配置名称,Value为值
 下位机数据:0:成功,其他失败
0x13
上位机获取下位机配置
 上位机数据:N个字节,格式为,Key\0,Key为配置名称
 下位机数据:N个字节,第一个字节为故障码,0为正常,后续为Value
0x14
时间同步
 上位机数据:4个字节,当前时间戳
 下位机数据:0:成功,其他失败
0x20
上位机获取下位机事件记录条数
 上位机数据:8个字节,前4字节开始时间戳,后4字节结束时间戳
 下位机数据:4个字节,当前设备的记录条数
0x21
上位机获取下位机事件记录条数,同时启动传输,通过0x22命令
 上位机数据:8个字节,前4字节开始时间戳,后4字节结束时间戳
 下位机数据:4个字节
0x22
下位机上传事件记录数据通道
 下位机数据:N个字节,前4个字节为时间戳,其他为事件描述字符串
一、界面

 配置和监控页面都使用表的形式来显示

 
 
                     
            
        













 
                    

 
                 
                    