diff --git a/LFtid1056/cloudfront/code/interface.h b/LFtid1056/cloudfront/code/interface.h index 3f897e0..b94c1f2 100644 --- a/LFtid1056/cloudfront/code/interface.h +++ b/LFtid1056/cloudfront/code/interface.h @@ -380,8 +380,8 @@ typedef struct { // 单条 DataArray 数据 struct DataArrayItem { int DataAttr; - int DataTimeSec; - int DataTimeUSec; + time_t DataTimeSec; + time_t DataTimeUSec; int DataTag; std::string Data; }; diff --git a/LFtid1056/cloudfront/code/main.cpp b/LFtid1056/cloudfront/code/main.cpp index 718e9f2..074555a 100644 --- a/LFtid1056/cloudfront/code/main.cpp +++ b/LFtid1056/cloudfront/code/main.cpp @@ -317,7 +317,7 @@ void Front::FrontThread() { try { while (!m_bIsFrontThreadCancle) { - check_3s_config(); // 实时数据触发 + //check_3s_config(); // 实时数据触发 //create_recall_xml(); // 生成待补招xml文件 check_ledger_update(); // 触发台账更新 } diff --git a/LFtid1056/cloudfront/code/rocketmq.cpp b/LFtid1056/cloudfront/code/rocketmq.cpp index a23440b..1147ae9 100644 --- a/LFtid1056/cloudfront/code/rocketmq.cpp +++ b/LFtid1056/cloudfront/code/rocketmq.cpp @@ -37,6 +37,8 @@ #include "interface.h" #include "front.h" +#include "../../client2.h" + ////////////////////////////////////////////////////////////////////////////////////////////////////////// using namespace std; @@ -876,11 +878,13 @@ rocketmq::ConsumeStatus myMessageCallbackrtdata(const rocketmq::MQMessageExt& ms } // 写入 XML - if (!createXmlFile(dev_index, mp_index, realData, soeData, limit, "new")) { + /*if (!createXmlFile(dev_index, mp_index, realData, soeData, limit, "new")) { DIY_ERRORLOG("process", "【ERROR】前置无法创建实时数据触发文件"); std::cerr << "Failed to create the XML file." << std::endl; return rocketmq::RECONSUME_LATER; - } + }*/ + //不再使用文件触发方式,直接调用接口向终端发起请求 + ClientManager::instance().set_real_state_count(devid, 60,mp_index);//一秒询问一次,询问60次 return rocketmq::CONSUME_SUCCESS; } @@ -1009,7 +1013,7 @@ rocketmq::ConsumeStatus myMessageCallbackrecall(const rocketmq::MQMessageExt& ms if (!result.empty()) { std::lock_guard lock(ledgermtx); - recall_json_handle(result); + recall_json_handle(result);//不再使用文件补招方式 } else { std::cerr << "recall data is NULL." << std::endl; diff --git a/LFtid1056/dealMsg.cpp b/LFtid1056/dealMsg.cpp index f0dca5a..b276cdb 100644 --- a/LFtid1056/dealMsg.cpp +++ b/LFtid1056/dealMsg.cpp @@ -20,14 +20,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 01£ʼ - 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 01£ʼ + t.tm_mday = time.DeviceDay; + t.tm_hour = time.DeviceHour; + t.tm_min = time.DeviceMinute; + t.tm_sec = time.DeviceSecond; // ʱʱ䣩 return mktime(&t); @@ -333,7 +333,7 @@ void process_received_message(string mac, string id,const char* data, size_t len //std::cout << "New star base64Str0:" << max_base64Str << std::endl; //std::cout << "New del base64Str1:" << avg_data.ConvertToBase64(1) << std::endl; //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 @@ -347,22 +347,22 @@ void process_received_message(string mac, string id,const char* data, size_t len std::string js = generate_json( -1, //ӦıĶյԴIDӦӦ롰-1 - 123456, //豸ΨһʶLdid0Ndid - 1, //Ĵȼ + 123456, //豸ΨһʶLdid0Ndid,id + 3, //Ĵȼ1 I/Ӧ 2 II/Ӧ 3 ͨ/Ӧ 4 㲥 0x1302, //豸͵ - max_data.name, //߼豸ID0-߼豸-1 - max_data.Data_Type, // + avg_data.name, //߼豸ID0-߼豸-1 + 0x04, //͹̶Ϊ 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); @@ -440,6 +440,10 @@ void process_received_message(string mac, string id,const char* data, size_t len std::cout << "READING_REALSTAT state: Processing stats data from " << mac << std::endl; if (udata[8] == static_cast(MsgResponseType::Response_New_3S)) { unsigned char packet_type = udata[13]; + + //ȡ + unsigned char cid = udata[12]; + // ӵ const uint8_t* data_ptr = parser.RecvData.data() + 4; size_t data_size = parser.RecvData.size() - 4; @@ -495,16 +499,39 @@ void process_received_message(string mac, string id,const char* data, size_t len } } - std::string strScale;//ѹȼ - int nPTType = 0;//߷ʽ - ClientManager::instance().get_point_scale_and_pttype( - id, // ʹid - static_cast(udata[12]), // ӱнIJ - strScale, - nPTType); + 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, //豸ΨһʶLdid0Ndid,id + 3, //Ĵȼ1 I/Ӧ 2 II/Ӧ 3 ͨ/Ӧ 4 㲥 + 0x1302, //豸͵ + cid, //߼豸ID0-߼豸-1 + 0x04, //͹̶Ϊ + 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); + - std::string base64 = realdata.ConvertToBase64(nPTType); - //std::cout << base64 << std::endl; // ɺ״̬ ClientManager::instance().change_device_state(id, DeviceState::IDLE); }