#include "dataupdatethread.h" #include #include #include #include #include /* For O_* constants */ #include #include #include /* For shm_open, mmap, ftruncate, etc */ #include /* For mode constants */ #include #include #include DataUpdateThread::DataUpdateThread(QObject *parent) :QThread(parent) { isRunStats=true; nMaxCh=0; nReadType=0; m_shmData=0; bTacStatus=0; } DataUpdateThread::~DataUpdateThread() { isRunStats=false; m_db.close(); } void DataUpdateThread::InitSql() { m_db=QSqlDatabase::addDatabase("QSQLITE"); m_db.setDatabaseName(strSqliteAddress); qDebug()<getShowModeIndex(); int nPage=pwidget->getShowPagIndex(); // qDebug() <<"ReadType=0 nMode:"<getShowSubIndex(); ReadSqlData(nSubPag); pwidget->SetV(strV); pwidget->SetA(strA); pwidget->SetW(strW); pwidget->SetF(strF); pwidget->SetSUM(strS); pwidget->setCH(nSubPag); pwidget->update(); //qDebug() <<"V:"<UpdateDate(); pwidget->update(); } }else { int nMode=pwidget->getShowModeIndex(); int nPage=pwidget->getShowPagIndex(); //qDebug() <<"ReadType=1 nMode:"<getShowSubIndex(); int nPHIndex=pwidget->getShowPHIndex(); setShmChRead(nSubPag,nPHIndex); ReadShmData(); pwidget->SetV(strV); pwidget->SetA(strA); pwidget->SetW(strW); pwidget->SetF(strF); pwidget->SetSUM(strS); pwidget->SetStatus(strStatus); pwidget->setCH(nSubPag); pwidget->SetT(strT); pwidget->SetH(strH); pwidget->SetCO2(strCO2); pwidget->update(); //qDebug() <<"V:"<UpdateDate(); pwidget->SetVer(strVer); pwidget->update(); } } } sleep(1); } } void DataUpdateThread::ReadSqlData(int nCHID) { if(!isDBOpen) { return; } QSqlQuery sql_query(m_db); QString strSql=QString("SELECT * FROM Table_PowerInfo WHERE product_id=1 AND product_ch_id=%1 ORDER BY product_Index DESC LIMIT 1").arg(nCHID); //qDebug()<nMAXChildIndex=nMaxCh; } } }else { qDebug()<nSelectSensor=10; nReadType=1; return 0; } void DataUpdateThread::deleteShm() { m_shmData->bPDUSet=-1; if (munmap(m_shmData, sizeof(smartPDU_shm_data)) == -1) { perror("munmap"); return; } if (shm_unlink(SHM_NAME) == -1) { perror("shm_unlink"); return; } m_shmData=nullptr; } void DataUpdateThread::setShmChRead(int nCh,int nPhID) { if(nReadType!=1&&!m_shmData) { return; } if(m_shmData->bPDUSet>0) { if(m_shmData->nSelectPowerCH!=nCh||m_shmData->nSelectPh!=nPhID||bTacStatus!=m_shmData->bT_ACType) { m_shmData->nSelectPowerCH=nCh; qDebug()<<"ShmData_____bT_ACType:"<nSelectPowerCH; bTacStatus=m_shmData->bT_ACType; pdu_Ctrl::instance()->isT_ACType=bTacStatus; if(bTacStatus==1) { if(m_shmData->nSelectPh!=nPhID) { m_shmData->nSelectPh=nPhID; qDebug()<<"ShmData_____nSelectPowerCH:"<nSelectPowerCH<<"nSelectPh:"<nSelectPh; } }else { m_shmData->nSelectPh=0; } m_shmData->bPDUSet=0; } } } void DataUpdateThread::ReadShmData() { if(nReadType!=1&&!m_shmData) { return; } if(m_shmData->bPDUSet>0) { if(m_shmData->fV>=0.1) { strV = QString::number(m_shmData->fV,'f',2); }else { strV = "0.00"; } if(m_shmData->fA>=0.01) { strA = QString::number(m_shmData->fA,'f',2); }else { strA="0.00"; } strW = QString::number(m_shmData->fW,'f',2); strF = QString::number(m_shmData->fF,'f',2); strS = QString::number(m_shmData->fS,'f',2); if(m_shmData->nStatus==0) { strStatus="OFF"; }else { strStatus="ON"; } strT = QString::number(m_shmData->fT,'f',2); strH = QString::number(m_shmData->fH,'f',2); QString strShow=QString::number(m_shmData->fCO2,'f',2); //qDebug()<< "Update CO2:"+strShow; strCO2 = strShow;//QString::number(m_shmData->fCO2,'f',2); } } void DataUpdateThread::ReadShmMaxch() { if(nReadType!=1&&!m_shmData) { if(pwidget) { pwidget->nMAXChildIndex=0; } return; } if(pwidget&&m_shmData->bPDUSet>0) { if(pwidget->nMAXChildIndex!=m_shmData->nMaxCh) { pwidget->nMAXChildIndex=m_shmData->nMaxCh; } } } void DataUpdateThread::ReadShmVer() { if(nReadType!=1&&!m_shmData) { return; } if(m_shmData->bPDUSet>0) { strVer=QString::fromLocal8Bit(m_shmData->strVer); } } int DataUpdateThread::isT_ACType() { return bTacStatus; }