From 3fb8ac84f52b80758e7b617fe15f483051c11387 Mon Sep 17 00:00:00 2001 From: lnk Date: Fri, 11 Jul 2025 14:12:47 +0800 Subject: [PATCH] rtdata use mq interface --- LFtid1056/dealMsg.cpp | 63 ++++++++++++++++++++++++++++++++----------- 1 file changed, 47 insertions(+), 16 deletions(-) diff --git a/LFtid1056/dealMsg.cpp b/LFtid1056/dealMsg.cpp index 3fdb929..ead4191 100644 --- a/LFtid1056/dealMsg.cpp +++ b/LFtid1056/dealMsg.cpp @@ -19,14 +19,14 @@ using namespace std; SafeMessageQueue message_queue; // 全局消息队列 //时间转换函数 -time_t ConvertToTimestamp(const tagPqData_Float& data) { +time_t ConvertToTimestamp(const tagTime& time) { struct tm t = {}; - t.tm_year = data.time.DeviceYear - 1900; // tm_year 从 1900 开始计 - t.tm_mon = data.time.DeviceMonth - 1; // tm_mon 从 0(1月)开始 - t.tm_mday = data.time.DeviceDay; - t.tm_hour = data.time.DeviceHour; - t.tm_min = data.time.DeviceMinute; - t.tm_sec = data.time.DeviceSecond; + t.tm_year = time.DeviceYear - 1900; // tm_year 从 1900 开始计 + t.tm_mon = time.DeviceMonth - 1; // tm_mon 从 0(1月)开始 + t.tm_mday = time.DeviceDay; + t.tm_hour = time.DeviceHour; + t.tm_min = time.DeviceMinute; + t.tm_sec = time.DeviceSecond; // 返回时间戳(本地时间) return mktime(&t); @@ -177,7 +177,7 @@ void process_received_message(string mac, string id,const char* data, size_t len std::string cp95_base64Str = cp95_data.ConvertToBase64(); //lnk20250708使用接口发送 - time_t data_time = ConvertToTimestamp(avg_data); + time_t data_time = ConvertToTimestamp(avg_data.time); std::vector arr; arr.push_back({1, //数据属性 -1-无, 0-“Rt”,1-“Max”,2-“Min”,3-“Avg”,4-“Cp95” @@ -191,22 +191,22 @@ void process_received_message(string mac, string id,const char* data, size_t len std::string js = generate_json( -1, //需应答的报文订阅者收到后需以此ID应答,无需应答填入“-1” - 123456, //设备唯一标识Ldid,填入0代表Ndid - 1, //报文处理的优先级 + 123456, //设备唯一标识Ldid,填入0代表Ndid,后续根据商议决定填id还是数字 + 3, //报文处理的优先级:1 I类紧急请求/响应 2 II类紧急请求/响应 3 普通请求/响应 4 广播报文 0x1302, //设备数据主动上送的数据类型 - max_data.name, //逻辑子设备ID,0-逻辑设备本身,无填-1 - max_data.Data_Type, //数据类型 + avg_data.name, //逻辑子设备ID,0-逻辑设备本身,无填-1 + avg_data.Data_Type, //数据类型 2, //数据属性:无“0”、实时“1”、统计“2”等 - 1, //数据集序号(以数据集方式上送),无填-1 + -1, //数据集序号(以数据集方式上送),无填-1 arr //数据数组 ); //std::cout << js << std::endl; queue_data_t data; - data.monitor_no = 1; - data.strTopic = TOPIC_STAT; + data.monitor_no = 1; //暂无意义 + data.strTopic = TOPIC_STAT;//统计topic data.strText = js; - data.mp_id = "test"; + data.mp_id = "test"; //暂无意义 std::lock_guard lock(queue_data_list_mutex); queue_data_list.push_back(data); @@ -341,6 +341,37 @@ void process_received_message(string mac, string id,const char* data, size_t len std::string base64 = realdata.ConvertToBase64(); std::cout << base64 << std::endl; + + //lnk实时数据使用接口发送20250711 + time_t data_time = ConvertToTimestamp(realdata.time); + + std::vector arr; + arr.push_back({1, //数据属性 -1-无, 0-“Rt”,1-“Max”,2-“Min”,3-“Avg”,4-“Cp95” + data_time, //数据转换出来的时间,数据时标,相对1970年的秒,无效填入“-1” + -1, //数据时标,微秒钟,无效填入“-1” + 0, //数据标识,1-标识数据异常 + base64}); + std::string js = generate_json( + -1, //需应答的报文订阅者收到后需以此ID应答,无需应答填入“-1” + 123456, //设备唯一标识Ldid,填入0代表Ndid,后续根据商议决定填id还是数字 + 3, //报文处理的优先级:1 I类紧急请求/响应 2 II类紧急请求/响应 3 普通请求/响应 4 广播报文 + 0x1302, //设备数据主动上送的数据类型 + 1,//realdata.name, //逻辑子设备ID,0-逻辑设备本身,无填-1;后续确认实时数据从何获取 + 1,//realdata.Data_Type, //数据类型;后续确认实时数据从何获取 + 1, //数据属性:无“0”、实时“1”、统计“2”等 + -1, //数据集序号(以数据集方式上送),无填-1 + arr //数据数组 + ); + //std::cout << js << std::en + queue_data_t data; + data.monitor_no = 1; //暂无意义 + data.strTopic = TOPIC_RTDATA; //实时topic + data.strText = js; + data.mp_id = "test"; //暂无意义 + std::lock_guard lock(queue_data_list_mutex); + queue_data_list.push_back(data); + + // 处理完成后重置状态 ClientManager::instance().change_device_state(id, DeviceState::IDLE); }