qvvr has bug

This commit is contained in:
lnk
2025-05-20 16:31:12 +08:00
parent 093e8e5dd6
commit 3ad2e7c590
12 changed files with 314 additions and 44 deletions

View File

@@ -659,7 +659,7 @@ void check_3s_config()
printf("begin 3s config...\n");
last_check_3s_config_time = now; //记录本次运行时间
while (APR_SUCCESS==parse_3s_xml(&trigger_3s_xml)){ //处理3秒文件
while (APR_SUCCESS==parse_3s_xml(&trigger_3s_xml)){ //处理3秒文件,一次处理一个
//处理实时触发加台账锁lnk20250114
//pthread_mutex_lock(&mtx); printf("3s hold lock !!!!!!!!!!!");
process_3s_config(&trigger_3s_xml); //根据文件处理数据
@@ -1799,6 +1799,33 @@ apr_status_t call_cn_wavelist(LD_info_t *LD_info )
/*上传.cfg和.dat两个文件*/
/*上传消息*/
/////////////////////////////////////////////////////lnk20250520
//根据配置文件控制上传的暂态事件时间为北京时间的ms数
printf("~~~~~~~this dev type is %s~~~~~~~",ied_usr->dev_type);
XmlConfigC cfg1;
if (get_xml_config_by_dev_type(ied_usr->dev_type, &cfg1)) {
printf("UnitOfTimeUnit = %s\n", cfg1.UnitOfTimeUnit);
printf("ValueOfTimeUnit = %s\n", cfg1.ValueOfTimeUnit);
} else {
printf("读取失败,未找到 dev_type\n");
}
double s_or_ms;
long long utc_or_beijing;
if(cfg1.UnitOfTimeUnit == "1"){//持续时间上送的是秒1还是毫秒0
s_or_ms = 0.001;
}
else{
s_or_ms = 1.0;
}
if(cfg1.ValueOfTimeUnit == "utc"){//持续时间上送的是秒1还是毫秒0
utc_or_beijing = 28800000;
}
else{
utc_or_beijing = 0;
}
/////////////////////////////////////////////////////
//to send json of this qvvr and rdre
end_tm = (long long)(qvvr->QVVR_PerTime*1000) + trig_tm; //结束时间是持续时间加触发时间
if (FILE_FLAG == 3) {
@@ -1809,7 +1836,18 @@ apr_status_t call_cn_wavelist(LD_info_t *LD_info )
if (cfg_result != NULL && dat_result != NULL) {
snprintf(cfg_result, cfg_len, "%s-%s", uuid_cfg, filename_cfg); // 拼接字符串并确保不会溢出目标缓冲区
snprintf(dat_result, dat_len, "%s-%s", uuid_dat, filename_dat); // 拼接字符串并确保不会溢出目标缓冲区
ret3 = transfer_json_qvvr_data(g_node_id, LD_info->line_id, (double)qvvr->QVVR_Amg, (double)qvvr->QVVR_PerTime, start_tm, end_tm, qvvr->QVVR_type, cfg_result, dat_result, LD_info->mp_id, qvvr->QVVR_Rptname, ied_usr->dev_type);
ret3 = transfer_json_qvvr_data(g_node_id,
LD_info->line_id,
(double)qvvr->QVVR_Amg,
(double)qvvr->QVVR_PerTime/s_or_ms, //lnk20250520上送的暂态持续时间为毫秒
start_tm + utc_or_beijing, //lnk20250520上送的暂态时间为北京时间
end_tm + utc_or_beijing, //lnk20250520上送的暂态时间为北京时间
qvvr->QVVR_type,
cfg_result,
dat_result,
LD_info->mp_id,
qvvr->QVVR_Rptname,
ied_usr->dev_type);
}
free(cfg_result); // 使用完毕后释放动态分配的内存空间
free(dat_result); // 使用完毕后释放动态分配的内存空间
@@ -1827,11 +1865,16 @@ apr_status_t call_cn_wavelist(LD_info_t *LD_info )
snprintf(dat_result, dat_len, wavepath_dat); // 拼接字符串并确保不会溢出目标缓冲区
ret3 = transfer_json_qvvr_data(g_node_id, //这个参数没有使用
LD_info->line_id, //监测点序号
(double)qvvr->QVVR_Amg, (double)qvvr->QVVR_PerTime,
qvvr->QVVR_time, //这里不使用文件中的开始时间start_tm因为会影响写库使用QVVR的时间QVVR_time//lnk20250311
end_tm, qvvr->QVVR_type, //伏值、持续时间、开始时间、结束时间、暂态类型
cfg_result, dat_result, //两个文件路径
LD_info->mp_id, qvvr->QVVR_Rptname, ied_usr->dev_type);//监测点号,文件和监测点暂态事件匹配上的暂态报告名,终端类型
(double)qvvr->QVVR_Amg,
(double)qvvr->QVVR_PerTime/s_or_ms, //lnk20250520上送的暂态持续时间为毫秒
qvvr->QVVR_time + utc_or_beijing, //lnk20250520上送的暂态时间为北京时间 //这里不使用文件中的开始时间start_tm因为会影响写库使用QVVR的时间QVVR_time//lnk20250311
end_tm + utc_or_beijing, //lnk20250520上送的暂态时间为北京时间
qvvr->QVVR_type, //伏值、持续时间、开始时间、结束时间、暂态类型
cfg_result,
dat_result, //两个文件路径
LD_info->mp_id,
qvvr->QVVR_Rptname,
ied_usr->dev_type);//监测点号,文件和监测点暂态事件匹配上的暂态报告名,终端类型
}
free(cfg_result); // 使用完毕后释放动态分配的内存空间
free(dat_result); // 使用完毕后释放动态分配的内存空间
@@ -1845,7 +1888,18 @@ apr_status_t call_cn_wavelist(LD_info_t *LD_info )
if (cfg_result != NULL && dat_result != NULL) {
snprintf(cfg_result, cfg_len, "%s-%s", oss_file_fullname_cfg, cfg_only_filename_ret); // 拼接字符串并确保不会溢出目标缓冲区
snprintf(dat_result, dat_len, "%s-%s", oss_file_fullname_dat, dat_only_filename_ret); // 拼接字符串并确保不会溢出目标缓冲区
ret3 = transfer_json_qvvr_data(g_node_id, LD_info->line_id, (double)qvvr->QVVR_Amg, (double)qvvr->QVVR_PerTime, start_tm, end_tm, qvvr->QVVR_type, cfg_result, dat_result, LD_info->mp_id, qvvr->QVVR_Rptname, ied_usr->dev_type);
ret3 = transfer_json_qvvr_data(g_node_id,
LD_info->line_id,
(double)qvvr->QVVR_Amg,
(double)qvvr->QVVR_PerTime/s_or_ms, //lnk20250520上送的暂态持续时间为毫秒
start_tm + utc_or_beijing, //lnk20250520上送的暂态时间为北京时间
end_tm + utc_or_beijing, //lnk20250520上送的暂态时间为北京时间
qvvr->QVVR_type,
cfg_result,
dat_result,
LD_info->mp_id,
qvvr->QVVR_Rptname,
ied_usr->dev_type);
}
free(cfg_result); // 使用完毕后释放动态分配的内存空间
free(dat_result); // 使用完毕后释放动态分配的内存空间