qt通过物联网esp8266与手机之间的通讯
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灯,采用的通讯协议如上。