详细流程:感知层传感器数据字节流→字节转FIFO节点结构体→放入接收FIFO缓存队列→从接收缓存中依次读取字节→判断协议包头相等→读取整个首部→校验首部→读取数据域→校验数据和→存入协议包PackBlock结构体→存入接收包缓冲队列→从接收包缓存中取出协议包→判断包目标地址→删除应答包→发送
软件设计
1、系统主程序结构
软件系统分为数据采集、数据传输、控制输出三大部分,各部分采用多个进程协同完成功能,每个进程职责单一。通过Contiki嵌入式操作系统进行各部分任务进程的调度。
2、数据采集流程
数据采集主要是指对各个传感器输出数字信号的读取,并存入FIFO队列进行数据缓存,等待数据传输流程提取数据的过程。其中包括温湿度传感器串行数据读取,二氧化碳浓度UART串口数据的读取,土壤温湿度和光照强度I2C串行总线数字信号的读取。
3、数据传输流程
数据传输流程主要指的是从FIFO队列提取各传感器数据按照JSON格式打包后利用串口通过Wi-Fi传输数据的过程。详细流程:感知层传感器数据字节流→字节转FIFO节点结构体→放入接收FIFO缓存队列→从接收缓存中依次读取字节→判断协议包头相等→读取整个首部→校验首部→读取数据域→校验数据和→存入协议包PackBlock结构体→存入接收包缓冲队列→从接收包缓存中取出协议包→判断包目标地址→删除应答包→发送回应包→处理包。
4、输出输出控制流程
输出控制流程是指Web运用层发出控制信号到感知层下位机收到数据包后解析数据包并做出相应控制的过程。详细流程:应用层产生控制消息→cJSON封装消息→cJSON获取JSON字符串→生成协议包PackBlock结构体→转为待发送的字符流→字符流添加到未发送缓冲队列→从未发送队列取出字符流包→指定通道发送字符流包→获取字符流包→解析字符流包→做出相应控制。