#ifndef DATAUPDATETHREAD_H #define DATAUPDATETHREAD_H #include #include #include #include "widget.h" #include #define SHM_NAME "/smartPDU_shm" #include "pdu_ctrl.h" struct smartPDU_shm_data { //电源数据 int bPDUSet; int nSelectPowerCH; int nMaxCh; float fV; float fA; float fW; float fF; float fS; int nStatus; //传感器数据 int nSelectSensor; float fT;//温度 float fH;//湿度 float fCO2;//co2 char strVer[20];//版本号 //三项数据 int bT_ACType;//三相类型 int nSelectPh;//当前通道的三相ph参数:0:A相 1:B相 2:C相 -1通道总计 //报警列表 0表示空,1表示写入,2表示已确认可清空。 int nTypeCtrlType[10]; char strMSG[10][64]; }; enum MSGCtrlType { MSGCtrl_Null=0, MSGCtrl_Write=1, MSGCtrl_Click=2, MSGCtrl_ReWrite=3, }; class DataUpdateThread : public QThread { Q_OBJECT public: DataUpdateThread(QObject *parent); ~DataUpdateThread(); void InitSql(); void run(); void SetShowWidget(Widget* pShowWidget); void ReadSqlData(int nCHID=0); void ReadMaxCh(); //共享内存初始化 int initShm(); void deleteShm(); void setShmChRead(int nCh,int nPhID); void ReadShmData(); void ReadShmMaxch(); void ReadShmVer(); int isT_ACType();//三相标志 void ReadMSG();//获取报警提示 int NextIndex(); void ShowMSGWidget(QString strShowData); signals: void signal_ShowMSGWidget(QString strShowData); public slots: void slot_ClickMSG();//确认msg public: //窗口 Widget* pwidget; //sql地址 QString strSqliteAddress; QSqlDatabase m_db; bool isRunStats; bool isDBOpen; QString strV; QString strA; QString strW; QString strF; QString strS; QString strT; QString strH; QString strCO2; QString strStatus; QString strVer; int nMaxCh; //读取状态:-1空删除,0 int nReadType; int shm_fd; int bTacStatus; smartPDU_shm_data* m_shmData; //显示msg位置 int nIndexMSG; QString strNowMSG;//当前显示的名字 }; #endif // DATAUPDATETHREAD_H