修复Web服务内存泄露、数据竞争与页面显示bug,适配x86编译

- 修复WebSocket推送无背压导致mongoose发送缓冲无限增长的内存泄露
- 为SystemData增加互斥锁,消除pushSystemData与主线程的数据竞争
- 修复网页状态文本判断反转、漏水告警阈值、FC状态、H2单位等显示bug
- 按协议修正电池紧急状态枚举解码(0x3A-0x3D为1-4级报警)
- 调整CMake适配系统安装的MOOS/IvP及jsoncpp,删除ARM专用build_debug.sh
This commit is contained in:
zjk
2026-08-12 23:17:36 +08:00
parent 7b0d0ff34b
commit ea06a415a1
11 changed files with 76 additions and 124 deletions
+20 -5
View File
@@ -195,7 +195,10 @@ bool LowerCommManager::updatePoweSystemStates(){
m_pm->m_db->insertData(m_pm->m_pmCurrentState.ccustate); //写入数据库
msg_CcuStateFbMsg_Update_time = time;
m_pm->m_systemData->updateSystemData(m_pm->m_pmCurrentState.ccustate);
m_pm->m_systemData->device_common_status.ccu_status.lastUpdateTime = m_pm->m_lowerCommManager->msg_CcuStateFbMsg_Update_time;
{
std::lock_guard<std::mutex> lock(m_pm->m_systemData->m_dataMutex);
m_pm->m_systemData->device_common_status.ccu_status.lastUpdateTime = m_pm->m_lowerCommManager->msg_CcuStateFbMsg_Update_time;
}
}
}
if(!m_udpComm->m_qReceiveDisHighVolBusBuffer.empty())
@@ -226,7 +229,10 @@ bool LowerCommManager::updatePoweSystemStates(){
delete pdis1;
m_pm->m_systemData->updateSystemData(m_pm->m_pmCurrentState.bus1State);
m_pm->m_systemData->device_common_status.dis_hv_c1.lastUpdateTime = m_pm->m_lowerCommManager->msg_disHighVolBusFbMsg_Update_time;
{
std::lock_guard<std::mutex> lock(m_pm->m_systemData->m_dataMutex);
m_pm->m_systemData->device_common_status.dis_hv_c1.lastUpdateTime = m_pm->m_lowerCommManager->msg_disHighVolBusFbMsg_Update_time;
}
}
}
if(!m_udpComm->m_qReceiveDisHighAVolBusBuffer.empty())
@@ -250,7 +256,10 @@ bool LowerCommManager::updatePoweSystemStates(){
delete pdis2;
m_pm->m_systemData->updateSystemData(m_pm->m_pmCurrentState.bus2State);
m_pm->m_systemData->device_common_status.dis_hv_c2.lastUpdateTime = m_pm->m_lowerCommManager->msg_disHighAVolBusFbMsg_Update_time;
{
std::lock_guard<std::mutex> lock(m_pm->m_systemData->m_dataMutex);
m_pm->m_systemData->device_common_status.dis_hv_c2.lastUpdateTime = m_pm->m_lowerCommManager->msg_disHighAVolBusFbMsg_Update_time;
}
}
}
@@ -275,7 +284,10 @@ bool LowerCommManager::updatePoweSystemStates(){
m_pm->m_currentDisBreakerState.bus3Breaker = *pdis3;
delete pdis3;
m_pm->m_systemData->updateSystemData(m_pm->m_pmCurrentState.bus3State);
m_pm->m_systemData->device_common_status.dis_lv_c1.lastUpdateTime = m_pm->m_lowerCommManager->msg_disHighBVolBusFbMsg_Update_time;
{
std::lock_guard<std::mutex> lock(m_pm->m_systemData->m_dataMutex);
m_pm->m_systemData->device_common_status.dis_lv_c1.lastUpdateTime = m_pm->m_lowerCommManager->msg_disHighBVolBusFbMsg_Update_time;
}
}
}
if(!m_udpComm->m_qReceiveDisLowBusBuffer.empty())
@@ -300,7 +312,10 @@ bool LowerCommManager::updatePoweSystemStates(){
m_pm->m_currentDisBreakerState.bus4Breaker = *pdis4;
delete pdis4;
m_pm->m_systemData->updateSystemData(m_pm->m_pmCurrentState.bus4State);
m_pm->m_systemData->device_common_status.dis_lv_c2.lastUpdateTime = m_pm->m_lowerCommManager->msg_disLowBusFbMsg_Update_time;
{
std::lock_guard<std::mutex> lock(m_pm->m_systemData->m_dataMutex);
m_pm->m_systemData->device_common_status.dis_lv_c2.lastUpdateTime = m_pm->m_lowerCommManager->msg_disLowBusFbMsg_Update_time;
}
}
}
return true;