diff --git a/LFtid1056/cloudfront/code/cfg_parser.cpp b/LFtid1056/cloudfront/code/cfg_parser.cpp index 7a30419..a3341a7 100644 --- a/LFtid1056/cloudfront/code/cfg_parser.cpp +++ b/LFtid1056/cloudfront/code/cfg_parser.cpp @@ -2827,6 +2827,9 @@ bool compare_qvvr_and_file(const std::string& cfg_path, const std::vector(data.QVVR_time) - trig_tm; @@ -3067,6 +3070,9 @@ bool SendAllQvvrFiles(qvvr_file& qfile, std::string& out_wavepath) { //文件下载结束接口 bool update_qvvr_file_download(const std::string& filename_with_mac, const std::string& terminal_id) { + std::cout << "[update_qvvr_file_download] filename_with_mac=" << filename_with_mac + << " terminal_id=" << terminal_id << std::endl; + //台账加锁 std::lock_guard lock(ledgermtx); @@ -3093,8 +3099,31 @@ bool update_qvvr_file_download(const std::string& filename_with_mac, const std:: try { // 将监测点台账中的 logical_device_seq 转换为数字进行匹配 ushort monitor_seq = static_cast(std::stoi(monitor.logical_device_seq)); - if (monitor_seq != logical_seq) continue; - } catch (...) { + if (monitor_seq != logical_seq) { + // ★新增:不匹配时对比打印 + std::cout << "[cmp-monitor-seq][NOT-MATCH]" + << " monitor_id=" << monitor.monitor_id + << " seq_in_ledger=\"" << seq_str << "\"" + << " parsed=" << monitor_seq + << " target_seq=" << logical_seq + << std::endl; + continue; + } + } catch (const std::exception& e) { + // ★新增:解析失败详细原因 + std::cout << "[cmp-monitor-seq][PARSE-FAIL]" + << " monitor_id=" << monitor.monitor_id + << " seq_in_ledger=\"" << monitor.logical_device_seq << "\"" + << " err=" << e.what() + << std::endl; + continue; // logical_device_seq 非法,跳过 + }catch (...) { + // ★新增:未知异常 + std::cout << "[cmp-monitor-seq][PARSE-FAIL]" + << " monitor_id=" << monitor.monitor_id + << " seq_in_ledger=\"" << monitor.logical_device_seq << "\"" + << " err=" + << std::endl; continue; // logical_device_seq 非法,跳过 } @@ -3108,6 +3137,7 @@ bool update_qvvr_file_download(const std::string& filename_with_mac, const std:: if (it != qfile.file_name.end()) { // 添加到 file_download(记录完整路径,避免重复) if (std::find(qfile.file_download.begin(), qfile.file_download.end(), filename_with_mac) == qfile.file_download.end()) { + std::cout << "[update_qvvr_file_download] Adding downloaded file: " << filename_with_mac << std::endl; qfile.file_download.push_back(filename_with_mac); } @@ -3120,8 +3150,16 @@ bool update_qvvr_file_download(const std::string& filename_with_mac, const std:: s_down.insert(extract_filename1(path)); // 提取每个路径中的文件名 } + //打印s_name和s_down内容 + std::cout << "[update_qvvr_file_download] Expected files (file_name): "; + for (const auto& fn : s_name) std::cout << fn << " "; + std::cout << std::endl; + std::cout << "[update_qvvr_file_download] Downloaded files (file_download): "; + for (const auto& fn : s_down) std::cout << fn << " "; + // 检查 file_download 是否与 file_name 完全一致(集合相同) if (s_name == s_down) { + std::cout << "[update_qvvr_file_download] All files downloaded for qfile in logical_seq=" << logical_seq << std::endl; qfile.is_download = true; // 全部下载完成 // 找到其中的 .cfg 文件进行匹配 @@ -3169,7 +3207,13 @@ bool update_qvvr_file_download(const std::string& filename_with_mac, const std:: if (it != monitor.qvvrevent.qvvrdata.end()) { monitor.qvvrevent.qvvrdata.erase(it); } - } + } + else { + std::cerr << "[update_qvvr_file_download] Failed to send qvvr files for logical_seq=" << logical_seq << std::endl; + } + } + else { + std::cout << "[update_qvvr_file_download] No matching qvvr_data found for cfg file: " << fpath << std::endl; } break; // 只处理第一个 cfg 文件 } diff --git a/LFtid1056/dealMsg.cpp b/LFtid1056/dealMsg.cpp index 78d1e20..269c0c9 100644 --- a/LFtid1056/dealMsg.cpp +++ b/LFtid1056/dealMsg.cpp @@ -609,7 +609,7 @@ void process_received_message(string mac, string id,const char* data, size_t len cid, //߼豸ID0-߼豸-1 0x04, //͹̶Ϊ 1, //ԣޡ0ʵʱ1ͳơ2 - 1, //ݼţݼʽͣ-1 + 2, //ݼţݼʽͣ-1 arr // ); //std::cout << js << std::en @@ -1031,6 +1031,7 @@ void process_received_message(string mac, string id,const char* data, size_t len uint8_t monitor_index = parser.RecvData[0]; std::cout << "Monitor Index: " << static_cast(monitor_index) << std::endl; send_set_value_reply(id, monitor_index, dz_list); + on_device_response_minimal(static_cast(ResponseCode::OK), id, 0, static_cast(DeviceState::READING_FIXEDVALUE)); //ֵȡϣΪУ ClientManager::instance().change_device_state(id, DeviceState::IDLE); @@ -1261,6 +1262,7 @@ void process_received_message(string mac, string id,const char* data, size_t len } send_internal_value_reply(id, control_words); + on_device_response_minimal(static_cast(ResponseCode::OK), id, 0, static_cast(DeviceState::READING_INTERFIXEDVALUE)); // ȡϣΪУ ClientManager::instance().change_device_state(id, DeviceState::IDLE); diff --git a/LFtid1056/main_thread.cpp b/LFtid1056/main_thread.cpp index cf42326..9e0d208 100644 --- a/LFtid1056/main_thread.cpp +++ b/LFtid1056/main_thread.cpp @@ -154,17 +154,17 @@ void* client_manager_thread(void* arg) { printf("Started client connections\n"); // - std::vector points1 = { + /*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} }; std::vector points2 = { {"P003", "Main Voltage", "D002",1 ,1, 1, 1, 1,"0.38k",0}, {"P004", "Backup Voltage", "D002",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 = { + /*std::vector devices = { { "D001", "Primary Device", "Model-X", "00-B7-8D-01-88-7f", 1, points1,true @@ -173,13 +173,13 @@ void* client_manager_thread(void* arg) { "D002", "Primary Device1", "Model-X1", "00-B7-8D-01-71-09", 1, points2,true } - }; + };*/ // 100װ //std::vector test_devices = generate_test_devices(100); //lnk̨˶ȡ豸 - //std::vector devices = GenerateDeviceInfoFromLedger(terminal_devlist);//lnk + std::vector devices = GenerateDeviceInfoFromLedger(terminal_devlist);//lnk //̨˴ӡ PrintDevices(devices); @@ -310,7 +310,7 @@ int main(int argc ,char** argv) {// std::cerr << "process param error,exit" << std::endl; return 1; } - //init_daemon(); + init_daemon(); srand(time(NULL)); // ʼ // ʼ߳