diff --git a/LFtid1056/client2.cpp b/LFtid1056/client2.cpp index f0b59ab..a507cd6 100644 --- a/LFtid1056/client2.cpp +++ b/LFtid1056/client2.cpp @@ -9,6 +9,7 @@ #include #include #include +#include // 配置参数 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 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!" < lock(mutex_); @@ -844,11 +874,13 @@ bool ClientManager::set_cloud_status(const std::string& identifier, int status) if (ctx->cloudstatus == 0 && status == 1) { //设备从离线转换至在线,通知前台状态发生翻转 + connect_status_update(identifier, status); std::cout << "[Device " << identifier << "] ****Cloud status: " << ctx->cloudstatus << " updated to: " << status << std::endl; } else if (ctx->cloudstatus == 1 && status == 0) { //设备从在线转换至离线,通知前台状态发生翻转 + connect_status_update(identifier, status); std::cout << "[Device " << identifier << "] ****Cloud status: " << ctx->cloudstatus << " updated to: " << status << std::endl; } diff --git a/LFtid1056/client2.h b/LFtid1056/client2.h index 353c43f..3672eb3 100644 --- a/LFtid1056/client2.h +++ b/LFtid1056/client2.h @@ -441,6 +441,8 @@ public: //ȡװð汾Ϣ bool read_devversion_action_to_device(const std::string& identifier); + //豸ж + bool get_dev_status(const std::string& identifier); /** * @brief ¼־ * @param Time1 ʼʱ diff --git a/LFtid1056/dealMsg.cpp b/LFtid1056/dealMsg.cpp index b34fb4a..106c9ca 100644 --- a/LFtid1056/dealMsg.cpp +++ b/LFtid1056/dealMsg.cpp @@ -90,7 +90,8 @@ 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().add_file_menu_action_to_device(id, "/etcc"); + + //ClientManager::instance().get_dev_status(id);//豸ж ture false //ClientManager::instance().set_real_state_count("D002", 1,1);//¼ʵʱ //ClientManager::instance().add_file_menu_action_to_device("D002","/etc");//ļĿ¼ȡ //ClientManager::instance().add_file_download_action_to_device("D002", "/etc/NPQS570_VX_ZJ_2(V103).icd");//ļ diff --git a/LFtid1056/main_thread.cpp b/LFtid1056/main_thread.cpp index 7d83112..e873484 100644 --- a/LFtid1056/main_thread.cpp +++ b/LFtid1056/main_thread.cpp @@ -153,19 +153,19 @@ void* client_manager_thread(void* arg) { printf("Started client connections\n"); - /*// - std::vector points1 = { - {"P001", "Main Voltage", "D001",1 ,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 - // װб - std::vector devices = { - { - "D001", "Primary Device", "Model-X", "00-B7-8D-01-88-7f", - 1, points1,true - } - };*/ + // + //std::vector points1 = { + // {"P001", "Main Voltage", "D001",1 ,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 + //// װб + //std::vector devices = { + // { + // "D001", "Primary Device", "Model-X", "00-B7-8D-01-79-06", + // 1, points1,true + // } + //}; // 100װ //std::vector test_devices = generate_test_devices(100);