1。网关二利用 串口3 485通讯 对网关一下发查询命令
起始位 ae00010401720000002f
查询命令0x02:(起始位+网关1ID+校验码+消息长度+功能控制位+time)
2。当网关一收到命令时 串口2发生中断 并记录标志位 check_over=1;
3。TIM2中断触发,case Free_station: receiveuart2();//解析网关2发过来的数据
(receive_check_SIMfirst(temp_SIM)!=NULL;接收网关2的数据并解包 不为空
网关ID接收正确 1
校验码接收正确 4
长度为 17
命令接受到位 2
0年 0月 0日 0时 0分 0秒
case inquire_Over: GW_ok_station=Busy_station;
4。TIM3中断触发,任务的调度case Busy_station:(Command_exe (gw_Command_inquire,Number_nodes)!=NULL);
输出: 网关2查询查询命令接收完毕
5。网关一向节点发送查询命令
查询命令0x02:( 节点ID+0x02+0x2f(结束符) ) 共6个字节
网关1会对32个节点一个一个的进行查询。
开始查询第1个节点。
节点ID1
00012040e0111332f
6。当节点收到查询命令时 串口2发生中断 并记录标志位 check_over_sim==1
7。TIM2中断触发,case Busy_station: receiveuart3();接收节点发过来的数据解包
响应命令0x03:(节点ID+功能控制位+校验码+长度+节点名称+电源状态+返回结果+结束符) 共14个字节 查询和控制节点的响应
(receive_check_Messege(temp_GW)!=NULL)解包节点发送给网关一数据不为空
节点ID为 1
命令接受到位 2
校验码接收正确 4
节点to网关1长度为 e
节点名称 1
11 电源状态 33 返回结果
结束 2f
节点数据接收完毕
case gw_Command_inquire:串口3中断
8。查询10次后,printf("\r\n数据上传完毕\r\n");