diff --git a/CmakeLists.txt b/CmakeLists.txt index 7933f65..83f27ec 100644 --- a/CmakeLists.txt +++ b/CmakeLists.txt @@ -22,6 +22,7 @@ include_directories("source/Thread") include_directories("source/LinearShutter") include_directories("source/OSIF/include") include_directories("source/Misc_Detector") +include_directories("source/Upload") link_directories("source/OSIF/DLib") link_directories("/home/pi/SeaBrease/lib") diff --git a/main.cpp b/main.cpp index e0f3726..3962026 100644 --- a/main.cpp +++ b/main.cpp @@ -16,6 +16,9 @@ int main(int argc, char *argv[]) using namespace ZZ_MISCDEF::MISC_DETECTOR; QCoreApplication a(argc, argv); + + system("gpio mode 1 output");//控制针脚初始化 + qDebug() << "gpio mode 1 output......" << endl; ////////////////////////////////////////////////////////////////////////// //// GY39Controller m_ctrlHumitureDetector; @@ -33,13 +36,16 @@ int main(int argc, char *argv[]) MEContext m_struMEC; HumitureDeviceInfo m_struHumitureDI; //////////////////////////////////////////////////////////////////////////logger - //QT_LOG::ZZ_InitLogger(QCoreApplication::applicationDirPath() + "/Log/"); + QT_LOG::ZZ_InitLogger("/home/data/Log/"); //m_test123; //m_test123.Initialize("COM11"); //m_test123.GetHumiture(fTemp, fHum); //////////////////////////////////////////////////////////////////////////config + system("gpio write 1 1");//设备上电 + qDebug() << "gpio write 1 1......" << endl; + bRes = m_scConfiggerLoader.Initialize(); if (bRes) { @@ -55,8 +61,10 @@ int main(int argc, char *argv[]) m_ctrlHumitureDetector.Initialize(m_struHumitureDI.qstrInterfaceName.toStdString()); //////////////////////////////////////////////////////////////////////////prepare m_sTimer.Preheating(); - m_ctrlHumitureDetector.GetHumiture_retry(m_fChassisTemp, m_fChassisHum); + + m_struEC.qstrCaseTemperature= QString("%1").arg(m_fChassisTemp); + m_struEC.qstrCaseHumidity = QString("%1").arg(m_fChassisHum); ////////////////////////////////////////////////////////////////////////// QThread* m_pqDataGrabberThreadHolder = new QThread(); QThread* m_pqTimerThreadHolder = new QThread(); @@ -112,28 +120,28 @@ int main(int argc, char *argv[]) //testDG.SetupMsgPipelines(); //testDG.StartWorkers(); //testDG.StartGrab(); - + // //QThread* m_pqTimerThreadHolder = new QThread(); //testS.moveToThread(m_pqTimerThreadHolder); //m_pqTimerThreadHolder->start(); //testS.SelfStart(); - + // //QString qstrTest = "This is a test message 2"; //qDebug() << qstrTest; //cout << "This is a test message"; - + // //test.LoadSettings_Test(); - + // //ZZ_DataGrabberThread m_test; //m_test.GrabOnce(); //QThread* m_pqDataGrabberThreadHolder; - - + // + // //m_pqDataGrabberThreadHolder->start(); //m_test.TestGrabOnce(); //m_test.StartGrabCall(); //QThread::msleep(5000); - + // //m_test.StopTestGrab(); // ZZ_ATPControl_Serial_Qt m_ctrlATP; // QByteArray qbTest; diff --git a/source/FS/DataFileProcessor.cpp b/source/FS/DataFileProcessor.cpp index a56b000..8ea81bd 100644 --- a/source/FS/DataFileProcessor.cpp +++ b/source/FS/DataFileProcessor.cpp @@ -5,7 +5,7 @@ DataFileProcessor::DataFileProcessor() #ifdef _DEBUG m_qstrFilePath = "E:/WorkSpace/TowerOptoSifAndSpectral/Data"; #else - m_qstrFilePath = "/ home / data / Data"; + m_qstrFilePath = "/home/data/Data"; #endif // DEBUG } @@ -84,6 +84,9 @@ bool DataFileProcessor::WriteEnvironmentInfo() qDebug() << m_qstrFullFileName; //EC qfData.write("EnvironmentalContext,"); + qfData.write("DEV_SN,"); + qfData.write(m_struEC.qstrDEV_SN.toLatin1()); + qfData.write(","); qfData.write("CaseHumidity,"); qfData.write(m_struEC.qstrCaseHumidity.toLatin1()); qfData.write(","); diff --git a/source/FS/ZZ_Types.h b/source/FS/ZZ_Types.h index f666bda..ff54590 100644 --- a/source/FS/ZZ_Types.h +++ b/source/FS/ZZ_Types.h @@ -13,7 +13,7 @@ namespace ZZ_MISCDEF typedef unsigned char ZZ_U8; typedef unsigned short int ZZ_U16; typedef unsigned long int ZZ_U32; - typedef long int ZZ_S32; + typedef long int ZZ_S32; namespace IRIS @@ -241,7 +241,7 @@ namespace ZZ_MISCDEF QString qstrGPS_North; QString qstrCaseTemperature; QString qstrCaseHumidity; - + QString qstrDEV_SN; }EContext; typedef struct tagManmadeEnviromentalContext diff --git a/source/LinearShutter/VSMD12XControl.cpp b/source/LinearShutter/VSMD12XControl.cpp index 2353cca..9b6f1ea 100644 --- a/source/LinearShutter/VSMD12XControl.cpp +++ b/source/LinearShutter/VSMD12XControl.cpp @@ -80,22 +80,65 @@ void CVSMD12XControl::ILMES_SetPosition(int *piPositionInPulse, size_t szSize) bool CVSMD12XControl::ILMES_MoveToPos(int iPositionIndex) { + bool bFlagFailed = true; bool bRes = false; - bRes = CVSMD12XControl::StartBackZero(); - if (!bRes) + int iCount = 0; + + for (int i=0;i<3;i++) + { + if (CVSMD12XControl::StartBackZero()) + { + bFlagFailed = false; + break; + } + while (!bRes) + { + iCount++; + bRes = StopBackZero(); + if (iCount>10) + { + qDebug() << "StopBackZero Err.Give up..."; + bRes = true; + } + } + } + if (bFlagFailed) { qDebug() << "StartBackZero Err"; return false; } - bRes = CVSMD12XControl::MoveTo(m_piPositionInPulses[iPositionIndex]); - if (!bRes) + bFlagFailed = true; + for (int i = 0; i < 3; i++) + { + if (MoveTo(m_piPositionInPulses[iPositionIndex])) + { + bFlagFailed = false; + break; + } + } + if (bFlagFailed) { qDebug() << "MoveTo Err"; return false; } - return bRes; + return true; + +// bool bRes = false; +// bRes = CVSMD12XControl::StartBackZero(); +// if (!bRes) +// { +// qDebug() << "StartBackZero Err"; +// return false; +// } +// bRes = CVSMD12XControl::MoveTo(m_piPositionInPulses[iPositionIndex]); +// if (!bRes) +// { +// qDebug() << "MoveTo Err"; +// return false; +// } +// return bRes; } void CVSMD12XControl::SetProtocolType(int iProtocolType /*= 0*/) @@ -306,20 +349,20 @@ bool CVSMD12XControl::MoveTo(int iAbsPulse) return false; } - bool bFlagIsStopped = false; - while (!bFlagIsStopped) - { - QThread::msleep(200); - //Delay_MSec(200); - GetStatus(m_stuMSInfo); - ZZ_U8 ucFlag = m_stuMSInfo.uiFlags & 0x000000FF; - ucFlag = ucFlag & 0x10; - if (ucFlag == 0x10 && m_stuMSInfo.fVelocity == 0) - { - bFlagIsStopped = true; - } - } - return true; +// bool bFlagIsStopped = false; +// while (!bFlagIsStopped) +// { +// QThread::msleep(200); +// //Delay_MSec(200); +// GetStatus(m_stuMSInfo); +// ZZ_U8 ucFlag = m_stuMSInfo.uiFlags & 0x000000FF; +// ucFlag = ucFlag & 0x10; +// if (ucFlag == 0x10 && m_stuMSInfo.fVelocity == 0) +// { +// bFlagIsStopped = true; +// } +// } + return IsMotionFinished(); } else { @@ -382,20 +425,21 @@ bool CVSMD12XControl::StartBackZero() return false; } - bool bFlagIsStopped = false; - while (!bFlagIsStopped) - { - QThread::msleep(200); - //Delay_MSec(200); - GetStatus(m_stuMSInfo); - ZZ_U8 ucFlag = m_stuMSInfo.uiFlags & 0x000000FF; - ucFlag = ucFlag & 0x10; - if (ucFlag == 0x10 && m_stuMSInfo.fVelocity == 0) - { - bFlagIsStopped = true; - } - } - return true; + return IsMotionFinished(); +// bool bFlagIsStopped = false; +// while (!bFlagIsStopped) +// { +// QThread::msleep(200); +// //Delay_MSec(200); +// GetStatus(m_stuMSInfo); +// ZZ_U8 ucFlag = m_stuMSInfo.uiFlags & 0x000000FF; +// ucFlag = ucFlag & 0x10; +// if (ucFlag == 0x10 && m_stuMSInfo.fVelocity == 0) +// { +// bFlagIsStopped = true; +// } +// } +// return true; // return ParseReturnedString(strRecv, -1); } @@ -1374,6 +1418,50 @@ char* CVSMD12XControl::VSMD_Split(char* cStr, char cSplit) return NULL; } +bool CVSMD12XControl::IsMotionFinished() +{ + //true means stopped + //false means unknown status + int iCountTotal = 0; + int iCountStopped = 0; + bool bFlagIsStopped = false; + + while (!bFlagIsStopped) + { + iCountTotal++; + QThread::msleep(200); + //Delay_MSec(200); + GetStatus(m_stuMSInfo); + ZZ_U8 ucFlag = m_stuMSInfo.uiFlags & 0x000000FF; + ucFlag = ucFlag & 0x10; + if (m_stuMSInfo.fVelocity == 0) + { + iCountStopped++; + } + if (ucFlag == 0x10 && m_stuMSInfo.fVelocity == 0) + { + bFlagIsStopped = true; + return true; + } + if (iCountStopped>=50) + { + qDebug() <<"Warning.Motion Err,should be stopped already.checking register and retry..."; + qDebug() <<"motion status:"<1000) + { + qDebug() << "Err.Motor Hardware Err,should be stopped already"; + qDebug() << "motion status:" << ucFlag << "all status:" << QString::number(m_stuMSInfo.uiFlags, 2); + bFlagIsStopped = true; + return false; + } + } + return false; + +} + void CVSMD12XControl::Delay_MSec(ZZ_U16 usMS) { QEventLoop qeLoop; diff --git a/source/LinearShutter/VSMD12XControl.h b/source/LinearShutter/VSMD12XControl.h index 28daf56..8605200 100644 --- a/source/LinearShutter/VSMD12XControl.h +++ b/source/LinearShutter/VSMD12XControl.h @@ -139,7 +139,8 @@ private: bool ParseReturnedParam(std::string &strRecv); void VSMD_BitShift(ZZ_U8* src, unValue* dst); char* VSMD_Split(char* cStr, char cSplit); - + //////////////////////////////////////////////////////////////////////////sync + bool IsMotionFinished(); //////////////////////////////////////////////////////////////////////////qt void Delay_MSec(ZZ_U16 usMS); }; diff --git a/source/Settings/SystemConfigger.cpp b/source/Settings/SystemConfigger.cpp index 8549c5f..5dbae6f 100644 --- a/source/Settings/SystemConfigger.cpp +++ b/source/Settings/SystemConfigger.cpp @@ -211,11 +211,12 @@ int ZZ_SysConfigger::LoadSettingsFromFile_MISC() { - m_struEC.qstrLocation = m_qjoJObj.value("Location").toString(); - m_struEC.qstrGPS_Altitude = m_qjoJObj.value("GPS_Altitude").toString(); - m_struEC.qstrGPS_Latitude = m_qjoJObj.value("GPS_Latitude").toString(); - m_struEC.qstrGPS_Longtitude = m_qjoJObj.value("GPS_Longtitude").toString(); - m_struEC.qstrGPS_North = m_qjoJObj.value("GPS_North").toString(); + m_struEC.qstrLocation = m_qjoJObj.value("Location").toString(); + m_struEC.qstrGPS_Altitude = m_qjoJObj.value("GPS_Altitude").toString(); + m_struEC.qstrGPS_Latitude = m_qjoJObj.value("GPS_Latitude").toString(); + m_struEC.qstrGPS_Longtitude = m_qjoJObj.value("GPS_Longtitude").toString(); + m_struEC.qstrGPS_North = m_qjoJObj.value("GPS_North").toString(); + m_struEC.qstrDEV_SN = m_qjoJObj.value("Dev_SN").toString(); m_struMEC.qstrInstallationTime = m_qjoJObj.value("InstallationTime").toString(); m_struMEC.qstrISIFCalibrationTime = m_qjoJObj.value("ISIFCalibrationTime").toString(); diff --git a/source/Thread/AbstractFSController.cpp b/source/Thread/AbstractFSController.cpp index 39f868e..0544837 100644 --- a/source/Thread/AbstractFSController.cpp +++ b/source/Thread/AbstractFSController.cpp @@ -107,6 +107,8 @@ int CAbstractFSController::PerformAutoExposure() float fPredictedExposureTime; int iDeviceDepth = (int)m_fsInfo.lDepth; + qDebug() << "MAX---Min" << m_fsInfo.fMaxFactor << "---" << m_fsInfo.fMinFactor; + bool bFlagIsOverTrying = false; bool bFlagIsLowerMinExposureTime = false; bool bFlagIsOverMaxExposureTime = false; @@ -163,6 +165,8 @@ int CAbstractFSController::PerformAutoExposure() } double dTemp = dSum / iCount; + qDebug() << "Avg " << dTemp; + if (dTemp >= iDeviceDepth * 0.99) { bIsValueOverflow = true; @@ -178,6 +182,7 @@ int CAbstractFSController::PerformAutoExposure() else if (iDeviceDepth * m_fsInfo.fMaxFactor >= dTemp && dTemp >= iDeviceDepth * m_fsInfo.fMinFactor) { + qDebug() << "trace bFlagIsAutoExposureOK =1" << iExposureTime; bFlagIsAutoExposureOK = 1; } else if (dTemp > iDeviceDepth * m_fsInfo.fMaxFactor) @@ -215,12 +220,12 @@ int CAbstractFSController::PerformAutoExposure() bIsLastValueOverflow = bIsValueOverflow; fLastExposureTime = fTempExposureTime; - if (iExposureTime > 30000) + if (iExposureTime > 120000) { bFlagIsAutoExposureOK = false; bFlagIsAutoExposureFailed = true; - float fPredictedExposureTime = 30000; - iRes = m_pFSCtrl->SetExposureTime(30000); + float fPredictedExposureTime = 120000; + iRes = m_pFSCtrl->SetExposureTime(120000); if (iRes != 0) { qDebug() << "Err:PerformAutoExposure Failed.Exit Code:3"; @@ -305,7 +310,7 @@ int CAbstractFSController::StartAcquisitionSignal() - //PerformAutoExposure(); + PerformAutoExposure(); TakeSignalFrame(); qDebug() << "Stop acq Signal" << " Thread ID:" << m_iThreadID; diff --git a/source/Thread/MainDataGrabber.cpp b/source/Thread/MainDataGrabber.cpp index 93c7ace..c0a5623 100644 --- a/source/Thread/MainDataGrabber.cpp +++ b/source/Thread/MainDataGrabber.cpp @@ -283,8 +283,6 @@ int CMainDataGrabber::GrabOnceFinished_Dark() int CMainDataGrabber::StartGrabTimer() { - - //////////////////////////////////////////////////////////////////////////start ////check start time // bool bStopWait = false; @@ -296,11 +294,9 @@ int CMainDataGrabber::StartGrabTimer() // bStopWait = true; // } // } - //start //int iIntervalInMS =m_struAcqTime.qtInterval.hour()*3600*1000+ m_struAcqTime.qtInterval.minute()*60*1000+ m_struAcqTime.qtInterval.second()*1000; //m_GrabTimer->start(3000); - //////////////////////////////////////////////////////////////////////////test // m_iFlagIsCapturing = true; // emit SignalStartGrabOnce(); @@ -317,8 +313,6 @@ int CMainDataGrabber::StartGrabTimer() // QThread::msleep(1000); // } // qDebug() << "Allgrab stopped" << " Thread ID:" <<2; - - ////final test code eat my ass // m_iFlagIsCapturing = 1; // @@ -381,7 +375,9 @@ int CMainDataGrabber::GrabOnceFinished() for (int i=0;i< m_struAcqPosSetting.iTotalPosition-1;i++) { ////move to - // m_ctrlLS.ILMES_MoveToPos(i+1); + qDebug()<<"Start ILMES_MoveToPos:"<