add rtdata idx
This commit is contained in:
@@ -498,58 +498,13 @@ void process_received_message(string mac, string id,const char* data, size_t len
|
||||
//lnk20250708使用接口发送
|
||||
time_t data_time = ConvertToTimestamp(avg_data.time);
|
||||
|
||||
std::vector<DataArrayItem> arr;
|
||||
arr.push_back({1, //数据属性 -1-无, 0-“Rt”,1-“Max”,2-“Min”,3-“Avg”,4-“Cp95”
|
||||
data_time, //数据转换出来的时间,数据时标,相对1970年的秒,无效填入“-1”
|
||||
0, //数据时标,微秒钟,无效填入“-1”
|
||||
0, //数据标识,1-标识数据异常
|
||||
max_base64Str});
|
||||
arr.push_back({2, data_time, 0, 0, min_base64Str});
|
||||
arr.push_back({3, data_time, 0, 0, avg_base64Str});
|
||||
arr.push_back({4, data_time, 0, 0, cp95_base64Str});
|
||||
|
||||
std::string js = generate_json(
|
||||
normalize_mac(mac),
|
||||
-1, //需应答的报文订阅者收到后需以此ID应答,无需应答填入“-1”
|
||||
1, //设备唯一标识Ldid,填入0代表Ndid,后续根据商议决定填id还是数字
|
||||
1, //报文处理的优先级:1 I类紧急请求/响应 2 II类紧急请求/响应 3 普通请求/响应 4 广播报文
|
||||
0x1302, //设备数据主动上送的数据类型
|
||||
avg_data.name, //逻辑子设备ID,0-逻辑设备本身,无填-1
|
||||
0x04, //数据类型固定为电能质量
|
||||
2, //数据属性:无“0”、实时“1”、统计“2”等
|
||||
1, //数据集序号(以数据集方式上送),无填-1
|
||||
arr //数据数组
|
||||
);
|
||||
|
||||
//std::cout << js << std::endl;
|
||||
|
||||
//// 创建输出流并打开文件(覆盖模式)
|
||||
//std::ofstream outFile("json.txt"); // 等价于 std::ofstream outFile(filePath, std::ios::out);
|
||||
|
||||
//if (outFile.is_open()) { // 检查文件是否成功打开
|
||||
// outFile << js; // 写入字符串
|
||||
// outFile.close(); // 关闭文件
|
||||
// // 成功提示(实际应用中建议使用日志)
|
||||
//}
|
||||
//else {
|
||||
// // 错误处理:文件打开失败(如路径不存在)
|
||||
//}
|
||||
|
||||
queue_data_t data;
|
||||
data.monitor_no = avg_data.name; //监测点序号
|
||||
data.strTopic = TOPIC_STAT;//统计topic
|
||||
data.strText = js;
|
||||
data.mp_id = ""; //监测点id,暂时不需要
|
||||
data.tag = G_ROCKETMQ_TAG; //统计tag
|
||||
data.key = G_ROCKETMQ_KEY; //统计key
|
||||
std::lock_guard<std::mutex> lock(queue_data_list_mutex);
|
||||
queue_data_list.push_back(data);
|
||||
|
||||
std::cout << "Successfully assembled tagPqData for line: "
|
||||
<< avg_data.name << std::endl;
|
||||
// 输出结果
|
||||
//std::cout << "Base64 Encoded Data (" << max_data.CalculateFloatCount()
|
||||
// << " floats): " << base64Str << std::endl;
|
||||
enqueue_stat_pq(max_base64Str,
|
||||
min_base64Str,
|
||||
avg_base64Str,
|
||||
cp95_base64Str,
|
||||
data_time,
|
||||
mac,
|
||||
avg_data.name);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -685,41 +640,8 @@ void process_received_message(string mac, string id,const char* data, size_t len
|
||||
strScale,
|
||||
nPTType);
|
||||
|
||||
std::string base64 = realdata.ConvertToBase64(nPTType);
|
||||
//std::cout << base64 << std::endl;
|
||||
|
||||
//lnk实时数据使用接口发送20250711
|
||||
time_t data_time = ConvertToTimestamp(realdata.time);
|
||||
|
||||
std::vector<DataArrayItem> arr;
|
||||
arr.push_back({1, //数据属性 -1-无, 0-“Rt”,1-“Max”,2-“Min”,3-“Avg”,4-“Cp95”
|
||||
data_time, //数据转换出来的时间,数据时标,相对1970年的秒,无效填入“-1”
|
||||
0, //数据时标,微秒钟,无效填入“-1”
|
||||
0, //数据标识,1-标识数据异常
|
||||
base64});
|
||||
std::string js = generate_json(
|
||||
normalize_mac(mac),
|
||||
-1, //需应答的报文订阅者收到后需以此ID应答,无需应答填入“-1”
|
||||
1, //设备唯一标识Ldid,填入0代表Ndid,后续根据商议决定填id还是数字
|
||||
1, //报文处理的优先级:1 I类紧急请求/响应 2 II类紧急请求/响应 3 普通请求/响应 4 广播报文
|
||||
0x1302, //设备数据主动上送的数据类型
|
||||
cid, //逻辑子设备ID,0-逻辑设备本身,无填-1
|
||||
0x04, //数据类型固定为电能质量数据
|
||||
1, //数据属性:无“0”、实时“1”、统计“2”等
|
||||
2, //数据集序号(以数据集方式上送),无填-1
|
||||
arr //数据数组
|
||||
);
|
||||
//std::cout << js << std::en
|
||||
queue_data_t data;
|
||||
data.monitor_no = 1; //上送的实时数据没有测点序号,统一填1
|
||||
data.strTopic = TOPIC_RTDATA; //实时topic
|
||||
data.strText = js;
|
||||
data.mp_id = ""; //监测点id,暂时不需要
|
||||
data.tag = G_RT_TAG; //实时tag
|
||||
data.key = G_RT_KEY; //实时key
|
||||
std::lock_guard<std::mutex> lock(queue_data_list_mutex);
|
||||
queue_data_list.push_back(data);
|
||||
|
||||
// 转换为Base64字符串并发送lnk20250924
|
||||
enqueue_realtime_pq(realdata, nPTType, cid, mac, id);
|
||||
|
||||
// 处理完成后重置状态
|
||||
ClientManager::instance().change_device_state(id, DeviceState::IDLE);
|
||||
|
||||
Reference in New Issue
Block a user