新增了装置重启命令的校验和执行流程。
This commit is contained in:
@@ -93,6 +93,9 @@ void process_received_message(string mac, string id,const char* data, size_t len
|
||||
//装置登录成功
|
||||
ClientManager::instance().set_cloud_status(id, 1); //设置了云前置登录状态为已登录
|
||||
ClientManager::instance().read_devversion_action_to_device(id);//主动触发,读取装置版本配置信息,仅在装置登录后执行一次,当前获取版本信息确认对时报文结构。
|
||||
|
||||
//ClientManager::instance().set_ctrl_action_to_device(id,0x01,0x00);//尝试装置重启指令!第一步校验
|
||||
//ClientManager::instance().set_ctrl_action_to_device(id, 0x01, 0x01);//尝试装置重启指令!校验完毕后尝试执行重启指令
|
||||
|
||||
//ClientManager::instance().get_dev_status(id);//设备在线情况判断 ture在线 false离线
|
||||
//ClientManager::instance().set_real_state_count("D002", 1,1);//登录后测试实时
|
||||
@@ -410,6 +413,7 @@ void process_received_message(string mac, string id,const char* data, size_t len
|
||||
// 接收心跳报文错误,调整为空闲状态,处理下一项工作。
|
||||
ClientManager::instance().change_device_state(id, DeviceState::IDLE);
|
||||
}
|
||||
break;
|
||||
|
||||
case DeviceState::READING_STATS:
|
||||
// 读取统计数据状态
|
||||
@@ -2232,6 +2236,39 @@ void process_received_message(string mac, string id,const char* data, size_t len
|
||||
}
|
||||
break;
|
||||
|
||||
case DeviceState::SET_CTRL:
|
||||
//装置控制命令
|
||||
if (udata[8] == static_cast<unsigned char>(MsgResponseType::Response_Ctrl)) {
|
||||
//第一次接收到控制命令应答,尝试校验命令是否合法!
|
||||
if (udata[9] == 0x01) {
|
||||
//当前仅检查0x01复位指令!其余控制指令全部依照不合法处理!
|
||||
std::cout << "***ctrl do next" << mac << std::endl;
|
||||
//控制命令校验合法,调整为空闲,处理后续工作。
|
||||
ClientManager::instance().change_device_state(id, DeviceState::IDLE);
|
||||
}
|
||||
else {
|
||||
std::cout << "***ctrl fail" << mac << std::endl;
|
||||
//控制命令校验不合法,调整为空闲,处理后续工作。
|
||||
ClientManager::instance().change_device_state(id, DeviceState::IDLE);
|
||||
}
|
||||
}
|
||||
else if (udata[8] == static_cast<unsigned char>(MsgResponseType::Response_NewACK)) {
|
||||
std::cout << "***ctrl success" << mac << std::endl;
|
||||
//控制命令执行完毕,调整为空闲,处理后续工作。
|
||||
ClientManager::instance().change_device_state(id, DeviceState::IDLE);
|
||||
}
|
||||
else if (udata[8] == static_cast<unsigned char>(MsgResponseType::Response_NewNACK)) {
|
||||
std::cout << "***ctrl fail" << mac << std::endl;
|
||||
//控制命令执行失败,调整为空闲,处理后续工作。
|
||||
ClientManager::instance().change_device_state(id, DeviceState::IDLE);
|
||||
}
|
||||
else {
|
||||
// 装置答非所问异常
|
||||
// 控制命令失败,调整为空闲状态,处理下一项工作。
|
||||
ClientManager::instance().change_device_state(id, DeviceState::IDLE);
|
||||
}
|
||||
break;
|
||||
|
||||
case DeviceState::CUSTOM_ACTION:
|
||||
// 自定义动作状态
|
||||
std::cout << "CUSTOM_ACTION state: Processing custom response from " << mac << std::endl;
|
||||
|
||||
Reference in New Issue
Block a user