本项目自定义了一套上位机和下位机通信协议,协议并不复杂,包含:配置节点、控制节点继电器开关、节点周期上报数据、升级节点和重启节点功能。
在讲解通信协议前,需要先了解下位机的4种运行模式,在不同的运行模式下,上位机可以对下位机有不同的功能权限,如下图所示:
- 只有在运行模式下,上位机才可以切换到其他几种模式,其他模式无法执行切换模式操作。
- 只有在运行模式下,上位机才可以控制继电器开关,其他模式无法控制继电器。
1、配置节点协议
配置节点是配置节点的ID、硬件版本、软件版本、出厂时间等信息,只有节点处于运行模式下发配置节点指令才有效。上位机界面如下所示:
配置节点前需要先下发指令将节点从运行模式到配置模式,默认上电后,节点处于运行模式,协议如下所示:
下位机软件定义数据结构如下所示:
// WiFi接收数据帧,控制切换模式
#pragma pack(1)
typedef struct receive_data_mode_t
{
uint8_t device_head; // 数据帧头:0XA0+功能码(FUNCTION_ID3),A款产品智能插座
uint16_t device_len; // 数据包总长度
uint16_t device_id; // 节点ID 0X0001~0XFFFE
char software_version[15]; // 软件版本 SMART_SW_A1_1.0 A款产品软件1.0版本
char hardware_version[15]; // 硬件版本 SMART_HW_A1_1.0 A款产品硬件1.0版本
uint8_t switch_mode; // 切换模式 0:运行模式,1:配置模式,2:节点升级,3:节点重启
uint16_t crc; // 校验位
}ReceiveData_Mode_t;
#pragma pa