添加了状态翻转和设备在线函数

This commit is contained in:
zw
2025-09-09 13:55:29 +08:00
parent d526ffe415
commit 8dd6b1f0ea
4 changed files with 49 additions and 14 deletions

View File

@@ -9,6 +9,7 @@
#include <unordered_map> #include <unordered_map>
#include <sstream> #include <sstream>
#include <algorithm> #include <algorithm>
#include <interface.h>
// 配置参数 // 配置参数
constexpr int BASE_RECONNECT_DELAY = 20000; // 基础重连延迟(ms) constexpr int BASE_RECONNECT_DELAY = 20000; // 基础重连延迟(ms)
@@ -832,6 +833,35 @@ void ClientManager::restart_device(const std::string& device_id) {
} }
} }
//设备运行情况判断
bool ClientManager::get_dev_status(const std::string& identifier) {
std::lock_guard<std::mutex> lock(mutex_);
for (auto& pair : clients_) {
auto& ctx = pair.second;
// 匹配装置ID或MAC地址
if (ctx->device_info.device_id == identifier ||
ctx->device_info.mac == identifier) {
if (ctx->cloudstatus == 1) {
//设备已登录
std::cout << "[Device " << identifier
<< "] online!" <<std::endl;
return true;
}
else{
//设备状态异常
//设备已登录
std::cout << "[Device " << identifier
<< "] offline!" << std::endl;
return false;
}
}
}
return false;
}
//修改客户端云前置登录状态 //修改客户端云前置登录状态
bool ClientManager::set_cloud_status(const std::string& identifier, int status) { bool ClientManager::set_cloud_status(const std::string& identifier, int status) {
std::lock_guard<std::mutex> lock(mutex_); std::lock_guard<std::mutex> lock(mutex_);
@@ -844,11 +874,13 @@ bool ClientManager::set_cloud_status(const std::string& identifier, int status)
if (ctx->cloudstatus == 0 && status == 1) { if (ctx->cloudstatus == 0 && status == 1) {
//设备从离线转换至在线,通知前台状态发生翻转 //设备从离线转换至在线,通知前台状态发生翻转
connect_status_update(identifier, status);
std::cout << "[Device " << identifier std::cout << "[Device " << identifier
<< "] ****Cloud status: " << ctx->cloudstatus << " updated to: " << status << std::endl; << "] ****Cloud status: " << ctx->cloudstatus << " updated to: " << status << std::endl;
} }
else if (ctx->cloudstatus == 1 && status == 0) { else if (ctx->cloudstatus == 1 && status == 0) {
//设备从在线转换至离线,通知前台状态发生翻转 //设备从在线转换至离线,通知前台状态发生翻转
connect_status_update(identifier, status);
std::cout << "[Device " << identifier std::cout << "[Device " << identifier
<< "] ****Cloud status: " << ctx->cloudstatus << " updated to: " << status << std::endl; << "] ****Cloud status: " << ctx->cloudstatus << " updated to: " << status << std::endl;
} }

View File

@@ -441,6 +441,8 @@ public:
//<2F><>ȡװ<C8A1>ð汾<C3B0><E6B1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ //<2F><>ȡװ<C8A1>ð汾<C3B0><E6B1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
bool read_devversion_action_to_device(const std::string& identifier); bool read_devversion_action_to_device(const std::string& identifier);
//<2F><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
bool get_dev_status(const std::string& identifier);
/** /**
* @brief <20><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD> * @brief <20><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD>
* @param Time1 <20><>ʼʱ<CABC><CAB1> * @param Time1 <20><>ʼʱ<CABC><CAB1>

View File

@@ -90,7 +90,8 @@ void process_received_message(string mac, string id,const char* data, size_t len
//װ<>õ<EFBFBD>¼<EFBFBD>ɹ<EFBFBD> //װ<>õ<EFBFBD>¼<EFBFBD>ɹ<EFBFBD>
ClientManager::instance().set_cloud_status(id, 1); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>õ<EFBFBD>¼״̬Ϊ<CCAC>ѵ<EFBFBD>¼ ClientManager::instance().set_cloud_status(id, 1); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>õ<EFBFBD>¼״̬Ϊ<CCAC>ѵ<EFBFBD>¼
ClientManager::instance().read_devversion_action_to_device(id);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡװ<C8A1>ð汾<C3B0><E6B1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD>õ<EFBFBD>¼<EFBFBD><C2BC>ִ<EFBFBD><D6B4>һ<EFBFBD>Σ<EFBFBD><CEA3><EFBFBD>ǰ<EFBFBD><C7B0>ȡ<EFBFBD><EFBFBD><E6B1BE>Ϣȷ<CFA2>϶<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>Ľṹ<C4BD><E1B9B9> ClientManager::instance().read_devversion_action_to_device(id);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡװ<C8A1>ð汾<C3B0><E6B1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD>õ<EFBFBD>¼<EFBFBD><C2BC>ִ<EFBFBD><D6B4>һ<EFBFBD>Σ<EFBFBD><CEA3><EFBFBD>ǰ<EFBFBD><C7B0>ȡ<EFBFBD><EFBFBD><E6B1BE>Ϣȷ<CFA2>϶<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>Ľṹ<C4BD><E1B9B9>
ClientManager::instance().add_file_menu_action_to_device(id, "/etcc");
//ClientManager::instance().get_dev_status(id);//<2F><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD> ture<72><65><EFBFBD><EFBFBD> false<73><65><EFBFBD><EFBFBD>
//ClientManager::instance().set_real_state_count("D002", 1,1);//<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵʱ //ClientManager::instance().set_real_state_count("D002", 1,1);//<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵʱ
//ClientManager::instance().add_file_menu_action_to_device("D002","/etc");//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>Ŀ¼<C4BF><C2BC>ȡ //ClientManager::instance().add_file_menu_action_to_device("D002","/etc");//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>Ŀ¼<C4BF><C2BC>ȡ
//ClientManager::instance().add_file_download_action_to_device("D002", "/etc/NPQS570_VX_ZJ_2(V103).icd");//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> //ClientManager::instance().add_file_download_action_to_device("D002", "/etc/NPQS570_VX_ZJ_2(V103).icd");//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>

View File

@@ -153,19 +153,19 @@ void* client_manager_thread(void* arg) {
printf("Started client connections\n"); printf("Started client connections\n");
/*// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
std::vector<PointInfo> points1 = { //std::vector<PointInfo> points1 = {
{"P001", "Main Voltage", "D001",1 ,1, 1, 1, 1,"0.38k",0}, // {"P001", "Main Voltage", "D001",1 ,1, 1, 1, 1,"0.38k",0},
{"P002", "Backup Voltage", "D001",2 ,1, 1, 1, 1,"0.38k",0} // {"P002", "Backup Voltage", "D001",2 ,1, 1, 1, 1,"0.38k",0}
}; //};
//00B78DA800D6 00-B7-8D-01-79-06 00-B7-8D-A8-00-D6 00-B7-8D-01-71-09 00-B7-8D-01-88-7f ////00B78DA800D6 00-B7-8D-01-79-06 00-B7-8D-A8-00-D6 00-B7-8D-01-71-09 00-B7-8D-01-88-7f
// <20><><EFBFBD><EFBFBD>װ<EFBFBD><D7B0><EFBFBD>б<EFBFBD> //// <20><><EFBFBD><EFBFBD>װ<EFBFBD><D7B0><EFBFBD>б<EFBFBD>
std::vector<DeviceInfo> devices = { //std::vector<DeviceInfo> devices = {
{ // {
"D001", "Primary Device", "Model-X", "00-B7-8D-01-88-7f", // "D001", "Primary Device", "Model-X", "00-B7-8D-01-79-06",
1, points1,true // 1, points1,true
} // }
};*/ //};
// <20><><EFBFBD><EFBFBD>100<30><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><D7B0> // <20><><EFBFBD><EFBFBD>100<30><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><D7B0>
//std::vector<DeviceInfo> test_devices = generate_test_devices(100); //std::vector<DeviceInfo> test_devices = generate_test_devices(100);