为状态机增加了线程运行,并补充了数据库
This commit is contained in:
@@ -20,6 +20,12 @@ bool _ListenCB(void * pParam)
|
||||
return pMe->ListenLoopUDP();
|
||||
}
|
||||
|
||||
bool _FsmCB(void * pParam)
|
||||
{
|
||||
PowerManger* pMe = (PowerManger* )pParam;
|
||||
return pMe->FsmLoop();
|
||||
}
|
||||
|
||||
//---------------------------------------------------------
|
||||
// Constructor()
|
||||
|
||||
@@ -38,9 +44,9 @@ PowerManger::PowerManger()
|
||||
//初始化数据库
|
||||
string dbPath = "/home/zjk/project/H100/H100PowerManger/data/power_data.db";
|
||||
m_db = new SQLiteDB(dbPath);
|
||||
m_db->createTables();
|
||||
|
||||
|
||||
m_db->createPowerDataTables();
|
||||
m_db->createStateTables();
|
||||
|
||||
//注册状态机
|
||||
m_fsm.RegisterState("Init", 1, m_Inite_s1);
|
||||
m_fsm.RegisterState("Fault", 99, m_Fault_s99);
|
||||
@@ -111,10 +117,14 @@ bool PowerManger::Iterate()
|
||||
updatePmState();
|
||||
updateTime();
|
||||
//2. 运行状态机
|
||||
m_fsm.run(m_pmState,this);
|
||||
// m_fsm.run(m_pmState,this);
|
||||
if (FSM_RUN_IS_OK)
|
||||
m_FsmThread.Start();
|
||||
else
|
||||
m_FsmThread.Stop();
|
||||
// 数据库测试
|
||||
PowerData data;
|
||||
data.id = 1;
|
||||
// data.id = 1;
|
||||
data.timestamp = "2023-05-22 10:00:00";
|
||||
data.voltage = 12.3 + rand() % 100 / 100.0;
|
||||
data.current = 4.5 + rand() % 100 / 100.0;
|
||||
@@ -188,6 +198,7 @@ bool PowerManger::OnStartUp()
|
||||
}
|
||||
m_ListenThread.Initialise(_ListenCB,this);
|
||||
m_ListenThread.Start();
|
||||
m_FsmThread.Initialise(_FsmCB,this);
|
||||
return(true);
|
||||
}
|
||||
|
||||
@@ -259,6 +270,17 @@ bool PowerManger::ListenLoopUDP()
|
||||
return true;
|
||||
}
|
||||
|
||||
bool PowerManger::FsmLoop()
|
||||
{
|
||||
while (!m_FsmThread.IsQuitRequested())
|
||||
{
|
||||
m_fsm.run(m_pmState,this);
|
||||
//延时200ms
|
||||
usleep(200000);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool PowerManger::updatePmState()
|
||||
{
|
||||
@@ -338,12 +360,11 @@ string PowerManger::getTypeName(const string typeName)
|
||||
} else if (typeName == "St6vector" || typeName == "St5deque" || typeName == "St4list" || typeName == "St4pair") {
|
||||
return "_array";
|
||||
} else {
|
||||
// 默认情况下,我们假设它是一个对象
|
||||
// 默认情况
|
||||
return "_obj";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool PowerManger::buildPowerSysReport()
|
||||
{
|
||||
//TODO: 构建能源系统报告
|
||||
@@ -455,12 +476,6 @@ bool PowerManger::buildPowerSysReport()
|
||||
suffix = getTypeName(typeid(m_pmCurrentState.ccustate.flameDetection).name());
|
||||
fcs[VAR_TO_STR(flameDet)+suffix] = m_pmCurrentState.ccustate.flameDetection;
|
||||
|
||||
// unsigned char fcuGZ_1L;
|
||||
// unsigned char fcuGZ_1H;
|
||||
// unsigned char fcuGZ_2L;
|
||||
// unsigned char fcuGZ_2H;
|
||||
// unsigned char fcuGZ_3L;
|
||||
// unsigned char fcuGZ_3H;
|
||||
unsigned short faultCode1;
|
||||
unsigned short faultCode2;
|
||||
unsigned short faultCode3;
|
||||
@@ -801,6 +816,16 @@ bool PowerManger::disSystemOperation(disBreaker optBreaker, disBreakerOpt)
|
||||
|
||||
return true;
|
||||
}
|
||||
void PowerManger::printState(FSM_State st, string desp){
|
||||
cout << MOOS::ConsoleColours::Yellow() << "STATE " << st.id << " [" << st.name << "] " << MOOS::ConsoleColours::reset();
|
||||
cout << MOOS::ConsoleColours::Blue() << " -> " << MOOS::ConsoleColours::reset();
|
||||
// 检查desp是否有“故障”
|
||||
if (desp.find("故障") != string::npos) {
|
||||
cout << MOOS::ConsoleColours::Red() << desp << MOOS::ConsoleColours::reset() << endl;
|
||||
return;
|
||||
}
|
||||
cout << MOOS::ConsoleColours::Green() << desp << MOOS::ConsoleColours::reset() << endl;
|
||||
}
|
||||
|
||||
int PowerManger::handleInite_s1(FSM_State &fsm, void* pData)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user