完善了数据库功能,将udp单独编译为一个静态库

This commit is contained in:
zjk
2025-02-13 22:00:15 +08:00
parent 25b4e0d688
commit 6d00ecfbf2
11 changed files with 265 additions and 172 deletions
+1 -1
View File
@@ -3,7 +3,7 @@
ProcessConfig = pPowerManger
{
AppTick = 4
AppTick = 2
CommsTick = 4
}
+36 -36
View File
@@ -1,47 +1,47 @@
{
"HVABFTDev123Cur_uint16": 1024,
"HVABFTDev123Cur_uint16": 12373,
"HVABactCur_uint16": 0,
"HVABbowRudCur_uint16": 0,
"HVABbusBCur_uint16": 1792,
"HVABbowRudCur_uint16": 48628,
"HVABbusBCur_uint16": 58368,
"HVABbusBVol_uint16": 127,
"HVABmastSteGeaCur_uint16": 0,
"HVABopenWaterCur_uint16": 23040,
"HVABxczCur_uint16": 0,
"HVBBCCUCur_uint16": 44210,
"HVBBFCSSecurSysCur_uint16": 23197,
"HVBBbatInsCur_uint16": 33584,
"HVBBbowLowVolDisBoxCur_uint16": 44214,
"HVBBdcC1InsCur_uint16": 23197,
"HVBBemer2BusVol_uint16": 57344,
"HVBBemerBatCur_uint16": 57344,
"HVBBinsBusVol_uint16": 26624,
"HVBBplcCur_uint16": 127,
"HVABopenWaterCur_uint16": 15788,
"HVABxczCur_uint16": 62464,
"HVBBCCUCur_uint16": 0,
"HVBBFCSSecurSysCur_uint16": 0,
"HVBBbatInsCur_uint16": 48768,
"HVBBbowLowVolDisBoxCur_uint16": 62844,
"HVBBdcC1InsCur_uint16": 64539,
"HVBBemer2BusVol_uint16": 9472,
"HVBBemerBatCur_uint16": 51712,
"HVBBinsBusVol_uint16": 29696,
"HVBBplcCur_uint16": 0,
"HVBBreservedCur1_uint16": 127,
"HVBBreservedCur2_uint16": 127,
"HVBBunit4Cur_uint16": 23197,
"HVBFTDev45Cur_uint16": 32765,
"HVBbatGroupCur_uint16": 448,
"HVBbowHVolDisBoxCur_uint16": 24982,
"HVBBunit4Cur_uint16": 15788,
"HVBFTDev45Cur_uint16": 32573,
"HVBbatGroupCur_uint16": 32970,
"HVBbowHVolDisBoxCur_uint16": 44222,
"HVBbusACur_uint16": 0,
"HVBbusAVol_uint16": 40256,
"HVBbusAVol_uint16": 7157,
"HVBdcDc5Cur_uint16": 0,
"HVBfbCur_uint16": 49495,
"HVBmotorCur_uint16": 32602,
"HVBpowerBusCur_uint16": 31744,
"HVBpowerBusVol_uint16": 32602,
"HVBreservedCur1_uint16": 24982,
"HVBfbCur_uint16": 31908,
"HVBmotorCur_uint16": 32764,
"HVBpowerBusCur_uint16": 31796,
"HVBpowerBusVol_uint16": 32573,
"HVBreservedCur1_uint16": 0,
"HVBreservedCur2_uint16": 0,
"HVBreservedCur3_uint16": 0,
"HVBsternRud1Cur_uint16": 440,
"HVBsternRud2Cur_uint16": 32765,
"HVBreservedCur3_uint16": 44222,
"HVBsternRud1Cur_uint16": 3590,
"HVBsternRud2Cur_uint16": 0,
"HVBtyzCur_uint16": 0,
"LVBBbowPZDevCur_uint16": 0,
"LVBBemerBatCur_uint16": 768,
"LVBBemerBusVol_uint16": 0,
"LVBBinsBusCur_uint16": 97,
"LVBBunit1Cur_uint16": 0,
"LVBBunit2Cur_uint16": 0,
"LVBBunit3Cur_uint16": 0,
"LVBBunit5Cur_uint16": 0,
"LVBinsBusVol_uint16": 38402
"LVBBbowPZDevCur_uint16": 127,
"LVBBemerBatCur_uint16": 29696,
"LVBBemerBusVol_uint16": 62844,
"LVBBinsBusCur_uint16": 15788,
"LVBBunit1Cur_uint16": 127,
"LVBBunit2Cur_uint16": 30720,
"LVBBunit3Cur_uint16": 62844,
"LVBBunit5Cur_uint16": 64539,
"LVBinsBusVol_uint16": 49434
}
+27 -27
View File
@@ -1,30 +1,30 @@
{
"backpressure1_fp32": 7.7812956078560092e-10,
"backpressure2_fp32": 0.0,
"ch4oConcent1_fp32": -4.8547832420808845e-12,
"ch4oConcent2_fp32": 1.1695613932541827e-38,
"ch4o_fp32": 1.1695613932541827e-38,
"excTemp_fp32": 1.1695613932541827e-38,
"faultCode1_uint16": 34036,
"faultCode2_uint16": 40361,
"faultCode3_uint16": 32602,
"fcuCurIns_fp32": -1.2859852072111266e-13,
"fcuCurPower_fp32": 1.1695613932541827e-38,
"fcuCur_fp32": -1.6155215737897056e+25,
"fcuFaultLeve_uint8": 98,
"fcuOutIns_fp32": 1.1695613932541827e-38,
"fcuOutPower_fp32": 8.3046377128711946e+19,
"fcuState_uint8": 105,
"fcuVolIns_fp32": -1.0396555642088759e-25,
"fcuVolPower_fp32": 1.1754003236953313e-38,
"fcuVol_fp32": 1.1695613932541827e-38,
"backpressure1_fp32": -0.2467193603515625,
"backpressure2_fp32": 1.1685231712219644e-38,
"ch4oConcent1_fp32": 1.8108811898653892e-39,
"ch4oConcent2_fp32": 0.0,
"ch4o_fp32": 1.1685231712219644e-38,
"excTemp_fp32": 1.1685231712219644e-38,
"faultCode1_uint16": 59856,
"faultCode2_uint16": 44221,
"faultCode3_uint16": 32573,
"fcuCurIns_fp32": 8.3046377128711946e+19,
"fcuCurPower_fp32": 1.1685231712219644e-38,
"fcuCur_fp32": -0.2467193603515625,
"fcuFaultLeve_uint8": 245,
"fcuOutIns_fp32": 6.7262326287591219e-44,
"fcuOutPower_fp32": -1.1348810210013775e-34,
"fcuState_uint8": 123,
"fcuVolIns_fp32": 7.3381652328374862e+19,
"fcuVolPower_fp32": 1.1685231712219644e-38,
"fcuVol_fp32": 1.1685231712219644e-38,
"flameDet_uint8": 0,
"h2Concent1_fp32": 1.7280140038790768e-39,
"h2Concent2_fp32": 0.0,
"o2Concent1_fp32": -1.2491396805813793e-13,
"o2Concent2_fp32": 1.1695613932541827e-38,
"o2Level_fp32": 1.9618178500547439e-44,
"o2_fp32": -5.3151927303929369e-14,
"powLimit_fp32": 1.1695613932541827e-38,
"powerGen_fp32": -1.2491396805813793e-13
"h2Concent1_fp32": -3.1907161748557105e+32,
"h2Concent2_fp32": 1.1753546413653943e-38,
"o2Concent1_fp32": -0.2515411376953125,
"o2Concent2_fp32": 1.1685231712219644e-38,
"o2Level_fp32": 1.1685231712219644e-38,
"o2_fp32": -0.1107940673828125,
"powLimit_fp32": 1.1753546413653943e-38,
"powerGen_fp32": 2.1756349367871582e+21
}
+27 -27
View File
@@ -1,38 +1,38 @@
{
"fcuCurToInsLimit1_uint8": 127,
"fcuCurToInsLimit1_uint8": 0,
"fcuCurToinsLimit2_uint8": 0,
"insBatCurElect_uint16": 32765,
"insBatLimit_uint16": 40361,
"insBatCurElect_uint16": 32573,
"insBatLimit_uint16": 62950,
"insBatSoc_uint8": 0,
"insBatTotalElect_uint16": 244,
"insChargeState_uint8": 202,
"insCurSocHold1_uint8": 172,
"insCurSocHold2_uint8": 157,
"insCurSocHold3_uint8": 90,
"insBatTotalElect_uint16": 28728,
"insChargeState_uint8": 80,
"insCurSocHold1_uint8": 0,
"insCurSocHold2_uint8": 0,
"insCurSocHold3_uint8": 0,
"insCurrent_uint16": 0,
"insLinkVol_uint16": 40362,
"insLinkVol_uint16": 44098,
"insNegRelayState_uint8": 0,
"insNegRes_uint16": 0,
"insPackVol_uint16": 32602,
"insNegRes_uint16": 7157,
"insPackVol_uint16": 32573,
"insPosRelayState_uint8": 0,
"insPosRes_uint16": 37,
"insfaultCode_uint8": 208,
"insPosRes_uint16": 31732,
"insfaultCode_uint8": 94,
"powBatCurElect_uint16": 0,
"powBatSoc_uint8": 0,
"powBatTotalElect_uint16": 24982,
"powChargeState_uint8": 16,
"powBatTotalElect_uint16": 44098,
"powChargeState_uint8": 122,
"powCurSocHold1_uint8": 0,
"powCurSocHold2_uint8": 248,
"powCurSocHold3_uint8": 0,
"powCurToInsLimit1_uint8": 150,
"powCurToinsLimit2_uint8": 97,
"powCur_uint16": 35008,
"powLinkVol_uint16": 0,
"powNegRelayState_uint8": 133,
"powNegRes_uint16": 32602,
"powPosRelayState_uint8": 0,
"powPosRes_uint16": 40361,
"powerBatLimit_uint16": 32602,
"powCurSocHold2_uint8": 164,
"powCurSocHold3_uint8": 124,
"powCurToInsLimit1_uint8": 190,
"powCurToinsLimit2_uint8": 172,
"powCur_uint16": 32970,
"powLinkVol_uint16": 32764,
"powNegRelayState_uint8": 22,
"powNegRes_uint16": 32573,
"powPosRelayState_uint8": 243,
"powPosRes_uint16": 44222,
"powerBatLimit_uint16": 0,
"powerPackVol_uint16": 0,
"powfaultCode_uint8": 170
"powfaultCode_uint8": 9
}
+1 -1
View File
@@ -49,7 +49,7 @@ int main() {
// 定义路由,处理 /api/power-data 的请求
CROW_ROUTE(app, "/api/download-db")
([&db]() {
std::ifstream file("/home/zjk/project/H100/H100PowerManger/src/appPowerMangerWebUI/static/index.html", std::ios::binary);
std::ifstream file("/home/zjk/project/H100/H100PowerManger/src/appPowerMangerWebUI/index.html", std::ios::binary);
if (!file) {
return crow::response(404, "Database file not found");
}
+5
View File
@@ -41,8 +41,13 @@ TARGET_LINK_LIBRARIES(pPowerManger
sqlite3)
# Add SQLiteDB static library
SET(UDPCOMM_SRC
udpComm.cpp
)
SET(SQLITEDB_SRC
SQLiteDB.cpp
)
ADD_LIBRARY(SQLiteDB STATIC ${SQLITEDB_SRC})
ADD_LIBRARY(UDPComm STATIC ${UDPCOMM_SRC})
+23 -9
View File
@@ -122,8 +122,6 @@ bool PowerManger::Iterate()
m_FsmThread.Start();
else
m_FsmThread.Stop();
// 数据库测试
//3. 输出报告
buildPowerSysReport();
//4. 打印错误信息
@@ -138,6 +136,8 @@ bool PowerManger::Iterate()
//AppCastingMOOSApp::PostReport();
//5. 清空UDP消息队列
m_udpComm.clearMsgQueue();
//6. 写入数据库
writeDataToDB();
return(true);
}
@@ -276,7 +276,7 @@ bool PowerManger::FsmLoop()
bool PowerManger::updatePmState()
{
//1. 更新下位机状态
if(!m_udpComm.m_qReceiveCcuStateBuffer.empty())
{
double time;
@@ -802,6 +802,23 @@ bool PowerManger::saveStringToJsonFile(const string &strJson, const string &file
return false;
}
}
bool PowerManger::writeDataToDB()
{
m_stateData.state_id = m_pmState.id;
m_stateData.state_name = m_pmState.name;
m_stateData.event = m_pmEvent;
m_stateData.event_id = 1;
m_stateData.fault_code = m_faultNum;
m_stateData.note = "No fault";
if(!m_db->insertStateData(m_stateData))
return false;
return true;
}
//TODO:配电系统操作函数
bool PowerManger::disSystemOperation(disBreaker optBreaker, disBreakerOpt)
{
@@ -823,14 +840,10 @@ int PowerManger::handleInite_s1(FSM_State &fsm, void* pData)
{
cout << fsm.name << endl;
PowerManger* pm = (PowerManger*)pData;
//1. 检查复合管控器连接
//1. 检查复合管控器连接 如果10S则进入故障状态
double StartTime = pm->GetAppStartTime();
while (!pm->m_connected)
{
// disHighVolBusCmd a;
// a.fuelCellCircuitBreaker = DIS_BREAKER_OFF;
// a.propulsionMotorCircuitBreaker = DIS_BREAKER_OFF;
// pm->m_udpComm.sendDisSysCmd(a);
MOOSPause(1000);
pm->updateTime();
double dft = abs(pm->m_current_time - StartTime);
@@ -862,7 +875,7 @@ int PowerManger::handleInite_s1(FSM_State &fsm, void* pData)
}
//3. 检查当前配电装置状态
//a. 断开高压母线的主要断路器
//TODO 检查并配置当前配电装置状态
//TODO 配置当前配电装置状态
disHighVolBusCmd a;
a.fuelCellCircuitBreaker = DIS_BREAKER_OFF;
a.propulsionMotorCircuitBreaker = DIS_BREAKER_OFF;
@@ -917,6 +930,7 @@ int PowerManger::handleFault_s99(FSM_State &fsm, void* pData)
{
case 1:
pm->printState(fsm,"通信故障");
pm->m_pmEvent = "复合管控连接超时";
break;
default:
+2 -1
View File
@@ -107,6 +107,7 @@ class PowerManger : public AppCastingMOOSApp
//数据库
SQLiteDB* m_db;
bool writeDataToDB();
// CMOOSThread m_SendThread;
private: //
@@ -114,9 +115,9 @@ class PowerManger : public AppCastingMOOSApp
public: //状态实现
void printState(FSM_State st, string desp);
bool FSM_RUN_IS_OK = true;
StateData m_stateData;
FSM_State m_pmState; //当前状态
string m_pmEvent;
FSM m_fsm;
+102 -57
View File
@@ -17,87 +17,135 @@ SQLiteDB::~SQLiteDB() {
}
}
void SQLiteDB::createPowerDataTables() {
if (!m_db) return;
bool SQLiteDB::createPowerDataTables() {
if (!m_db) return false;
const char* sql = "CREATE TABLE IF NOT EXISTS power_data ("
"id INTEGER PRIMARY KEY AUTOINCREMENT,"
"timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,"
"timestamp DATETIME DEFAULT (strftime('%Y-%m-%d %H:%M:%f', 'now')),"
"voltage REAL NOT NULL,"
"current REAL NOT NULL,"
"power REAL NOT NULL,"
"temperature REAL NOT NULL);";
"temperature REAL NOT NULL,"
"PRIMARY KEY(timestamp, voltage, current));";
char* errMsg = nullptr;
if (sqlite3_exec(m_db, sql, nullptr, nullptr, &errMsg) != SQLITE_OK) {
std::cerr << "SQL error: " << errMsg << std::endl;
sqlite3_free(errMsg);
return false;
}
return true;
}
void SQLiteDB::createStateTables() {
if (!m_db) return;
bool SQLiteDB::createStateTables() {
if (!m_db) return false;
const char* sql = "CREATE TABLE IF NOT EXISTS state_data ("
"id INTEGER PRIMARY KEY AUTOINCREMENT,"
"timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,"
"state_id INTEGER NOT NULL,"
"timestamp DATETIME DEFAULT (strftime('%Y-%m-%d %H:%M:%f', 'now')),"
"state_name TEXT NOT NULL,"
"event TEXT NOT NULL,"
"event_id INTEGER NOT NULL,"
"fault_code INTEGER NOT NULL);";
"fault_code INTEGER DEFAULT 0,"
"note TEXT NOT NULL);";
char* errMsg = nullptr;
if (sqlite3_exec(m_db, sql, nullptr, nullptr, &errMsg) != SQLITE_OK) {
std::cerr << "SQL error: " << errMsg << std::endl;
sqlite3_free(errMsg);
return false;
}
return true;
}
void SQLiteDB::insertPowerData(float voltage, float current, float power, float temperature) {
if (!m_db) return;
bool SQLiteDB::insertPowerData(const PowerData& powerData) {
if (!m_db) return false;
const char* sql = "INSERT INTO power_data (voltage, current, power, temperature) VALUES (?, ?, ?, ?);";
sqlite3_stmt* stmt;
bool result = true;
if (sqlite3_prepare_v2(m_db, sql, -1, &stmt, nullptr) == SQLITE_OK) {
sqlite3_bind_double(stmt, 1, voltage);
sqlite3_bind_double(stmt, 2, current);
sqlite3_bind_double(stmt, 3, power);
sqlite3_bind_double(stmt, 4, temperature);
sqlite3_bind_double(stmt, 1, powerData.voltage);
sqlite3_bind_double(stmt, 2, powerData.current);
sqlite3_bind_double(stmt, 3, powerData.power);
sqlite3_bind_double(stmt, 4, powerData.temperature);
if (sqlite3_step(stmt) != SQLITE_DONE) {
std::cerr << "Error inserting data: " << sqlite3_errmsg(m_db) << std::endl;
result = false;
}
sqlite3_finalize(stmt);
} else {
std::cerr << "Error preparing statement: " << sqlite3_errmsg(m_db) << std::endl;
result = false;
}
return result;
}
void SQLiteDB::insertStateData(StateData stateData) {
if (!m_db) return;
const char* sql = "INSERT INTO state_data (timestamp, state_id, state_name, event, event_id, fault_code) VALUES (?, ?, ?, ?, ?, ?);";
bool SQLiteDB::insertStateData(StateData stateData,bool filter) {
if (!m_db) return false;
if(filter){
StateData lastStateData;
if(getStateData(lastStateData)){
if(lastStateData.state_id==stateData.state_id &&
lastStateData.event_id==stateData.event_id &&
lastStateData.fault_code==stateData.fault_code &&
lastStateData.note==stateData.note &&
lastStateData.state_name==stateData.state_name &&
lastStateData.event==stateData.event){
return true;
}
}
}
const char* sql = "INSERT INTO state_data (state_id, state_name, event, event_id, fault_code, note) VALUES (?, ?, ?, ?, ?, ?);";
sqlite3_stmt* stmt;
if (sqlite3_prepare_v2(m_db, sql, -1, &stmt, nullptr) == SQLITE_OK) {
sqlite3_bind_text(stmt, 1, stateData.timestamp.c_str(), -1, SQLITE_TRANSIENT);
sqlite3_bind_int(stmt, 2, stateData.state_id);
sqlite3_bind_text(stmt, 3, stateData.state_name.c_str(), -1, SQLITE_TRANSIENT);
sqlite3_bind_text(stmt, 4, stateData.event.c_str(), -1, SQLITE_TRANSIENT);
sqlite3_bind_int(stmt, 5, stateData.event_id);
sqlite3_bind_int(stmt, 6, stateData.fault_code);
sqlite3_bind_int(stmt, 1, stateData.state_id);
sqlite3_bind_text(stmt, 2, stateData.state_name.c_str(), -1, SQLITE_TRANSIENT);
sqlite3_bind_text(stmt, 3, stateData.event.c_str(), -1, SQLITE_TRANSIENT);
sqlite3_bind_int(stmt, 4, stateData.event_id);
sqlite3_bind_int(stmt, 5, stateData.fault_code);
sqlite3_bind_text(stmt, 6, stateData.note.c_str(), -1, SQLITE_TRANSIENT);
if (sqlite3_step(stmt) != SQLITE_DONE) {
std::cerr << "Error inserting data: " << sqlite3_errmsg(m_db) << std::endl;
return false;
}
sqlite3_finalize(stmt);
} else {
std::cerr << "Error preparing statement: " << sqlite3_errmsg(m_db) << std::endl;
return false;
}
return true;
}
bool SQLiteDB::getStateData(StateData &stateData) {
if (!m_db) return false;
const char* sql = "SELECT * FROM state_data ORDER BY timestamp DESC LIMIT 1;";
sqlite3_stmt* stmt;
if (sqlite3_prepare_v2(m_db, sql, -1, &stmt, nullptr) == SQLITE_OK) {
if (sqlite3_step(stmt) == SQLITE_ROW) {
stateData.state_id = sqlite3_column_int(stmt, 1);
stateData.state_name = reinterpret_cast<const char*>(sqlite3_column_text(stmt, 3));
stateData.event = reinterpret_cast<const char*>(sqlite3_column_text(stmt, 4));
stateData.event_id = sqlite3_column_int(stmt, 5);
stateData.fault_code = sqlite3_column_int(stmt, 6);
stateData.note = reinterpret_cast<const char*>(sqlite3_column_text(stmt, 7));
sqlite3_finalize(stmt);
return true;
}
sqlite3_finalize(stmt);
} else {
std::cerr << "Error preparing statement: " << sqlite3_errmsg(m_db) << std::endl;
}
return false;
}
bool SQLiteDB::isDatabaseConnected(const std::string& path, const std::string& dbName) {
if (!m_db) return false;
@@ -124,35 +172,32 @@ bool SQLiteDB::isDatabaseConnected(const std::string& path, const std::string& d
return true;
}
std::vector<PowerData> SQLiteDB::getPowerData(int limit) {
std::vector<PowerData> data;
if (!m_db) return data;
const char* sql = "SELECT id, timestamp, voltage, current, power, temperature FROM power_data ORDER BY timestamp DESC LIMIT ?;";
sqlite3_stmt* stmt;
if (sqlite3_prepare_v2(m_db, sql, -1, &stmt, nullptr) == SQLITE_OK) {
sqlite3_bind_int(stmt, 1, limit);
while (sqlite3_step(stmt) == SQLITE_ROW) {
PowerData record;
// record.id = sqlite3_column_int(stmt, 0);
record.timestamp = reinterpret_cast<const char*>(sqlite3_column_text(stmt, 1));
record.voltage = sqlite3_column_double(stmt, 2);
record.current = sqlite3_column_double(stmt, 3);
record.power = sqlite3_column_double(stmt, 4);
record.temperature = sqlite3_column_double(stmt, 5);
data.push_back(record);
}
sqlite3_finalize(stmt);
} else {
std::cerr << "Error preparing statement: " << sqlite3_errmsg(m_db) << std::endl;
}
return data;
}
string SQLiteDB::getDBPatch(){
return m_dbPath;
}
}
bool SQLiteDB::clearPowerData() {
if (!m_db) return false;
const char* sql = "DELETE FROM power_data;";
char* errMsg = nullptr;
if (sqlite3_exec(m_db, sql, nullptr, nullptr, &errMsg) != SQLITE_OK) {
std::cerr << "SQL error: " << errMsg << std::endl;
sqlite3_free(errMsg);
return false;
}
return true;
}
bool SQLiteDB::clearStateData() {
if (!m_db) return false;
const char* sql = "DELETE FROM state_data;";
char* errMsg = nullptr;
if (sqlite3_exec(m_db, sql, nullptr, nullptr, &errMsg) != SQLITE_OK) {
std::cerr << "SQL error: " << errMsg << std::endl;
sqlite3_free(errMsg);
return false;
}
return true;
}
+17 -11
View File
@@ -5,11 +5,9 @@
#include <string>
#include <vector>
#include "json/json.h"
// #include <nlohmann/json.hpp>
using namespace std;
struct PowerData {
std::string timestamp;
double voltage;
double current;
double power;
@@ -17,12 +15,12 @@ struct PowerData {
};
struct StateData {
std::string timestamp;
int state_id;
std::string state_name;
std::string event;
int event_id;
int fault_code;
std::string note;
};
class SQLiteDB {
@@ -30,21 +28,29 @@ public:
SQLiteDB(const std::string& dbPath);
~SQLiteDB();
void createPowerDataTables();
void insertPowerData(float voltage, float current, float power, float temperature);
void createStateTables();
void insertStateData(StateData stateData);
bool createPowerDataTables();
bool createStateTables();
bool clearPowerData();
bool clearStateData();
bool insertPowerData(const PowerData& powerData);
bool insertStateData(StateData stateData,bool filter=true);
// 获取最新的状态数据
bool getStateData(StateData &stateData);
// 使用函数
bool isDatabaseConnected(const std::string& path, const std::string& dbName);
std::vector<PowerData> getPowerData(int limit = 100);
//使用函数
bool isDatabaseConnected(const std::string& path, const std::string& dbName);
//获取数据库状态函数
// 获取数据库状态函数
string getDBPatch();
private:
sqlite3* m_db;
string m_dbPath;
};
#endif // SQLITEDB_H
+24 -2
View File
@@ -5,12 +5,34 @@ TEST_CASE("SQLiteDB Test", "[SQLiteDB]") {
SQLiteDB db("test.db");
SECTION("Create Tables") {
db.createPowerDataTables();
db.createStateTables();
REQUIRE(db.createPowerDataTables() == true);
REQUIRE(db.createStateTables() == true);
}
SECTION("Test isDatabaseConnected") {
REQUIRE(db.isDatabaseConnected("/home/zjk/project/H100/H100PowerManger/bin","test.db") == true);
}
SECTION("Test insertPowerData") {
PowerData powerData;
StateData stateData;
stateData.state_id = 1;
stateData.state_name = "test";
stateData.event = "test";
stateData.event_id = 1;
stateData.fault_code = 1;
stateData.note = "test";
REQUIRE(db.insertStateData(stateData) == true);
// db.insertPowerData(powerData);
StateData stateDataForGet;
REQUIRE(db.getStateData(stateDataForGet) == true);
REQUIRE(stateDataForGet.state_id == 1);
REQUIRE(stateDataForGet.state_name == "test");
REQUIRE(stateDataForGet.event == "test");
REQUIRE(stateDataForGet.event_id == 1);
REQUIRE(stateDataForGet.fault_code == 1);
REQUIRE(stateDataForGet.note == "test");
}
}