https://www.cnblogs.com/yangfengwu/p/5205570.html
介绍
qt界面及开发
移动端界面
实际手机操作与qt界面
无线通讯协议参考HeartBeat协议实现led的控制
一级封装
数据发送帧格式
数据传输命令 (传输头1byte) | 一帧数据总长度(1byte) (10~210BYTE) | 目标地址 2BYTE | 自身地址 2BYTE | 数据(数据长度范围0~200BYTE) | 数据效验 4BYTE(crc32) |
0xFD | 0x??..... |
|
| 0x??.... | 0x???? |
数据接收帧格式
数据传输命令 (传输头1byte) | 一帧数据总长度(1byte) (10~210BYTE) | 自身地址 2BYTE | 来源地址 2BYTE | 数据(数据长度范围0~200BYTE) | 数据效验 4BYTE(crc32) |
0xFD | 0x??..... |
|
| 0x??.... | 0x???? |
二级封装(数据层)
数据命令格式
起始标识 (区分类别) 1BYTE | 命令标识 1BYTE | 数据 |
|
0x0A | {0x1,0x2...} | ******** |
|
0x0B |
|
|
|
0x0C | {0x01,0x02...} |
|
|
|
|
|
|
一级封装保证数据的准确性,及收发目的地
二级封装区分数据的作用类别
1:更新程序(0x0a){写入flash,擦除flash,特定位置}
2:写进读取eprom(0x0b){写入eprom,读取eprom,特定位置}
3:接受与反馈命令(0x0c){控制命令,反馈状态命令}
一帧数据总长度
接受与反馈命令默认20个字节
更新flash与eprom默认200字节
一段一段的更新(避免数据过大导致接受问题)
起始标识 (区分类别) 1BYTE | 命令标识 1BYTE
| 起始地址 4byte 0x12345678 | 更新或擦除的字节数 4byte | 数据 |
0x0A | 0x01(更新flash) |
|
|
|
0x0A | 0x02(擦除flash) |
|
| 0x0 |
0x0B | 0x01(更新eprom) |
|
|
|
0x0B | 0x02(擦除eprom) |
|
| 0x0 |
接受与反馈命令
起始标识 (区分类别) 1BYTE | 命令标识 1BYTE
| 1byte | 1byte | 1byte | 1byte | 1byte | 1byte | 1byte | 1byte | |
0x0C | 0x1 |
|
|
|
|
|
|
|
| |
0x0C | 0x2 |
|
|
|
|
|
|
|
| |
0x0C | 0x3 |
|
|
|
|
|
|
|
| |
0x0C | 0x4 |
|
|
|
|
|
|
|
| |
0xc | . |
|
|
|
|
|
|
|
| |
. | . | . |
|
|
|
|
|
|
| |
0xc | 0x32(50) |
|
|
|
|
|
|
|
| |
0xc | 0x33 |
|
|
|
|
|
|
|
| |
. | . | . |
|
|
|
|
|
|
| |
0xc | 0x64(100) |
|
|
|
|
|
|
|
| |
0xc | 0x65 |
|
|
|
|
|
|
|
| |
. | . | . |
|
|
|
|
|
|
| |
0xc | 0x96(150) |
|
|
|
|
|
|
|
| |
0xc | 0x97 |
|
|
|
|
|
|
|
| |
. | . | . |
|
|
|
|
|
|
| |
0xc | 0xc8(200) |
| ||||||||
0xc | 0xc9 |
| ||||||||
. | . | . |
程序宏定义定义出是否需要crc校验,是否需要目标地址与自身地址匹配,是否反馈接收到的不符合规则的数据
1.校验
2.匹配
3.回送错误数据
| led灯 | Led1 | Led2 | Led3 | Led4 | Led5 |
0x0c | 0x01 | 1 | 0 | 0 | 1 | 0 |
|
|
|
|
|
|
|
0x0c 0x01led灯处理
0x0c 0x01
0x02
git 地址如下
https://github.com/sswm/serial2net.git
com_tcp为qt界面控制esp8266
mobilePhone为qt编写的android应用
手机端通过连接esp8266提供的wifi来控制qt上的led灯,采用的通讯协议如上。