diff --git a/Cal/FS1_P1.dat b/Cal/FS1_P1.dat index 4a3c40a..caaf7bb 100644 Binary files a/Cal/FS1_P1.dat and b/Cal/FS1_P1.dat differ diff --git a/Cal/FS1_P2.dat b/Cal/FS1_P2.dat index 4a3c40a..caaf7bb 100644 Binary files a/Cal/FS1_P2.dat and b/Cal/FS1_P2.dat differ diff --git a/Cal/FS1_P3.dat b/Cal/FS1_P3.dat index 4a3c40a..caaf7bb 100644 Binary files a/Cal/FS1_P3.dat and b/Cal/FS1_P3.dat differ diff --git a/Cal/FS1_P4.dat b/Cal/FS1_P4.dat index 4a3c40a..caaf7bb 100644 Binary files a/Cal/FS1_P4.dat and b/Cal/FS1_P4.dat differ diff --git a/main.cpp b/main.cpp index fc85e31..5fd62a6 100644 --- a/main.cpp +++ b/main.cpp @@ -84,7 +84,7 @@ int main(int argc, char *argv[]) m_mdgGrabber.Init_Normal(); m_mduUploader.Initialize(); - m_mduUploader.Upload(); + //m_mduUploader.UploadInfo(); m_pqDataGrabberThreadHolder->start(); m_pqTimerThreadHolder->start(); diff --git a/source/FS/DataFileProcessor.cpp b/source/FS/DataFileProcessor.cpp index f2f178d..79865bb 100644 --- a/source/FS/DataFileProcessor.cpp +++ b/source/FS/DataFileProcessor.cpp @@ -37,10 +37,10 @@ void DataFileProcessor::SetData(std::vector> vecData) bool DataFileProcessor::WriteDataFile() { - GenerateFilePath(); - WriteEnvironmentInfo(); - WriteDeviceInfo(); - WriteData(); + //GenerateFilePath(); + //WriteEnvironmentInfo(); + //WriteDeviceInfo(); + //WriteData(); return 1; } diff --git a/source/FS/ZZ_Types.h b/source/FS/ZZ_Types.h index f9bf64a..757ca41 100644 --- a/source/FS/ZZ_Types.h +++ b/source/FS/ZZ_Types.h @@ -1,4 +1,4 @@ -////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////// //类型说明文件 ////////////////////////////////////////////////////////////////////////// #pragma once @@ -23,7 +23,7 @@ namespace ZZ_MISCDEF { typedef struct tagDataFrame { - ZZ_U16 usExposureTimeInMS; + ZZ_U32 usExposureTimeInMS; ZZ_S32 lData[4096]; float fTemperature = 0; double dTimes = 0; @@ -312,7 +312,7 @@ namespace ZZ_MISCDEF typedef struct tagCalibrationFrame { - int iExposureTimeInMS; + ZZ_U32 uiExposureTimeInMS; float fTemperature; int iPixels; float fWaveLength[4096] = { 0 }; @@ -322,10 +322,11 @@ namespace ZZ_MISCDEF typedef struct tagCalDataFrame { - ZZ_U16 usExposureTimeInMS; + ZZ_U32 usExposureTimeInMS; float fTemperature = 0; int iPixels; - double dData[4096]; + float fData[4096]; + QString qstrGrabDate; }CalDataFrame; } diff --git a/source/Uploader/DataFileTransfer.cpp b/source/Uploader/DataFileTransfer.cpp index 73d9865..83ef98d 100644 --- a/source/Uploader/DataFileTransfer.cpp +++ b/source/Uploader/DataFileTransfer.cpp @@ -1,20 +1,67 @@ #include "DataFileTransfer.h" ZZ_HttpTransfer::ZZ_HttpTransfer(QObject* parent /*= nullptr*/) { - m_pNetworkManager = new QNetworkAccessManager(); - connect(m_pNetworkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(SlotReplyFinished(QNetworkReply*))); + m_pNetworkManager = nullptr; } ZZ_HttpTransfer::~ZZ_HttpTransfer() { + if (m_pNetworkManager!= nullptr) + { + delete m_pNetworkManager; + } } int ZZ_HttpTransfer::SendData() { + if (m_pNetworkManager == nullptr) + { + m_pNetworkManager = new QNetworkAccessManager(); + connect(m_pNetworkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(SlotReplyFinished(QNetworkReply*))); + } + QNetworkRequest qnRequest; - qnRequest.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/json")); + qnRequest.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/json")); qnRequest.setUrl(QUrl("http://172.16.0.234/fileup/Data_uper.php")); + QByteArray qbSend; + QString qstrSend; + for (int i = 0; i < m_struGrabberRTParams.fscParams.ucDeviceNumber; i++) + { + for (int j = 0; j < m_struGrabberRTParams.apsParams.iTotalPosition - 1; j++) + { + + qstrSend.clear(); + qstrSend = m_vecCalcedData[i][j].qstrGrabDate + "##"; + qstrSend += /*"FS_SN:" +*/ QString::fromLocal8Bit(m_struGrabberRTParams.fscParams.strSN[i].c_str()) + "##"; + qstrSend += /*"Position:" +*/ QString("%1").arg(j + 1) + "##"; + qstrSend += /*"ExpTime:" +*/ QString("%1").arg(m_vecCalcedData[i][j].usExposureTimeInMS) + "##"; + qstrSend += /*"Bands:" +*/ QString("%1").arg(m_vecCalcedData[i][j].iPixels) + "##"; + qstrSend += /*"temp:" +*/ QString("%1").arg(m_vecCalcedData[i][j].fTemperature) + "##"; + + //send + qbSend.clear(); + qbSend.append(qstrSend.toLatin1()); + qbSend.append((char*)m_vecCalcedData[i][j].fData, sizeof(float)*m_vecCalcedData[i][j].iPixels); + + m_pNetworkManager->post(qnRequest, qbSend); + iFlagIsReplied = 0; + int iCount = 0; + while (!iFlagIsReplied) + { + iCount++; + Delay_MSec(500); + if (iCount > 20) + { + iFlagIsReplied = 1; + qDebug() << "Reply Timeout:Upload Data "; + } + } + } + + + } + return 0; @@ -22,24 +69,34 @@ int ZZ_HttpTransfer::SendData() int ZZ_HttpTransfer::SendInfo() { + if (m_pNetworkManager == nullptr) + { + m_pNetworkManager = new QNetworkAccessManager(); + connect(m_pNetworkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(SlotReplyFinished(QNetworkReply*))); + } + QNetworkRequest qnRequest; qnRequest.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/json")); qnRequest.setUrl(QUrl("http://172.16.0.234/fileup/Dev_info_uper.php")); + QByteArray qbSend; QString qstrSend; QString qstrWaveLength; + iFlagIsReplied = false; for (int i = 0; i < m_struGrabberRTParams.fscParams.ucDeviceNumber; i++) { - qstrSend = "Location:" + QString("%1").arg(m_struEC.qstrLocation) + "####"; - qstrSend += "DEV_SN:" + QString("%1").arg(m_struEC.qstrDEV_SN) + "####"; - qstrSend += "GPS_Longtitude:" + QString("%1").arg(m_struEC.qstrGPS_Longtitude) + "####"; - qstrSend += "GPS_Latitude:" + QString("%1").arg(m_struEC.qstrGPS_Latitude) + "####"; - qstrSend += "GPS_Altitude:" + QString("%1").arg(m_struEC.qstrGPS_Altitude) + "####"; - qstrSend += "GPS_North:" + QString("%1").arg(m_struEC.qstrGPS_North) + "####"; - qstrSend += "InstallationTime:" + QString("%1").arg(m_struMEC.qstrInstallationTime) + "####"; - qstrSend += "NameOfMaintenanceStaff:" + QString("%1").arg(m_struMEC.qstrNameOfMaintenanceStaff) + "####"; - qstrSend += "PhoneNumberOfMaintenanceStaff:" + QString("%1").arg(m_struMEC.qstrPhoneNumberOfMaintenanceStaff) + "####"; - qstrSend += "Bands:" + QString("%1").arg(m_struGrabberRTParams.fscParams.usPixels[i]) + "####"; + qstrSend = "Location:" + QString("%1").arg(m_struEC.qstrLocation) + "####"; + qstrSend += "DEV_SN:" + QString("%1").arg(m_struEC.qstrDEV_SN) + "####"; + qstrSend += "FS_SN:" + QString::fromLocal8Bit(m_struGrabberRTParams.fscParams.strSN[i].c_str()) + "####"; + qstrSend += "GPS_Longtitude:" + QString("%1").arg(m_struEC.qstrGPS_Longtitude) + "####"; + qstrSend += "GPS_Latitude:" + QString("%1").arg(m_struEC.qstrGPS_Latitude) + "####"; + qstrSend += "GPS_Altitude:" + QString("%1").arg(m_struEC.qstrGPS_Altitude) + "####"; + qstrSend += "GPS_North:" + QString("%1").arg(m_struEC.qstrGPS_North) + "####"; + qstrSend += "InstallationTime:" + QString("%1").arg(m_struMEC.qstrInstallationTime) + "####"; + qstrSend += "NameOfMaintenanceStaff:" + QString("%1").arg(m_struMEC.qstrNameOfMaintenanceStaff) + "####"; + qstrSend += "PhoneNumberOfMaintenanceStaff:" + QString("%1").arg(m_struMEC.qstrPhoneNumberOfMaintenanceStaff) + "####"; + qstrSend += "Bands:" + QString("%1").arg(m_struGrabberRTParams.fscParams.usPixels[i]) + "####"; + qstrSend += "Positions:" + QString("%1").arg(m_struGrabberRTParams.apsParams.iTotalPosition-1) + "####"; qstrSend += "WaveLength:"; for (int j=0;j< m_struGrabberRTParams.fscParams.usPixels[i];j++) { @@ -47,16 +104,32 @@ int ZZ_HttpTransfer::SendInfo() qstrSend += qstrWaveLength; if (j == m_struGrabberRTParams.fscParams.usPixels[i]-1) { - qstrSend += "####"; + //qstrSend += "####"; } else { qstrSend += ","; } } + + qbSend = qstrSend.toLatin1(); + m_pNetworkManager->post(qnRequest, qbSend); + iFlagIsReplied = 0; + int iCount = 0; + while (!iFlagIsReplied) + { + iCount++; + Delay_MSec(500); + if (iCount>20) + { + iFlagIsReplied = 1; + qDebug() << "Reply Timeout:Upload Info "; + } + } } - qDebug() << qstrSend; + //qDebug() << qstrSend; + return 0; } @@ -85,12 +158,30 @@ void ZZ_HttpTransfer::SetDeviceInfo(RunTimeGrabberParams struGrabberRTParams) void ZZ_HttpTransfer::SetCalData(vector> vecCalcedData) { + m_vecCalcedData.clear(); m_vecCalcedData = vecCalcedData; } +void ZZ_HttpTransfer::Delay_MSec(ZZ_U16 usMS) +{ + QEventLoop qeLoop; + QTimer::singleShot(usMS, &qeLoop, SLOT(quit())); + qeLoop.exec(); +} + int ZZ_HttpTransfer::SlotReplyFinished(QNetworkReply* qnReply) { - QString qstrURL = qnReply->url().toString(); - QByteArray qbData = qnReply->readAll(); + + //QString qstrURL = qnReply->url().toString(); + //QByteArray qbData = qnReply->readAll(); + if (qnReply->error()== QNetworkReply::NoError) + { + iFlagIsReplied = 1; + } + qnReply->abort(); + qnReply->close(); + qnReply->deleteLater(); + qnReply = NULL; + //delete qnReply; return 0; } diff --git a/source/Uploader/DataFileTransfer.h b/source/Uploader/DataFileTransfer.h index ce355c6..7b542a6 100644 --- a/source/Uploader/DataFileTransfer.h +++ b/source/Uploader/DataFileTransfer.h @@ -9,6 +9,7 @@ using namespace std; using namespace ZZ_MISCDEF::ZZ_DATAFILE; using namespace ZZ_MISCDEF::ZZ_RUNPARAMS; using namespace ZZ_MISCDEF::IRIS::FS; +using namespace ZZ_MISCDEF; class ZZ_HttpTransfer :public QObject { @@ -25,13 +26,17 @@ public: void SetContext(EContext struEC, MEContext struMEC); void SetDeviceInfo(RunTimeGrabberParams struGrabberRTParams); void SetCalData(vector> vecCalcedData); +private: + void Delay_MSec(ZZ_U16 usMS); + private: QNetworkAccessManager *m_pNetworkManager; EContext m_struEC; MEContext m_struMEC; RunTimeGrabberParams m_struGrabberRTParams; vector> m_vecCalcedData; -private: + + int iFlagIsReplied; public slots: int SlotReplyFinished(QNetworkReply* qnReply); }; \ No newline at end of file diff --git a/source/Uploader/MainDataUploader.cpp b/source/Uploader/MainDataUploader.cpp index 280a8fa..40b02f0 100644 --- a/source/Uploader/MainDataUploader.cpp +++ b/source/Uploader/MainDataUploader.cpp @@ -20,6 +20,13 @@ CMainDataUploader::~CMainDataUploader() void CMainDataUploader::SetData(vector> vecData) { + QDateTime qdtTime = QDateTime::currentDateTime(); + QString qstrAddYMD = qdtTime.toString("yyyy_MM_dd"); + QString qstrAddHMS = qdtTime.toString("_hh_mm_ss"); + + m_qstrGrabDate.clear(); + m_qstrGrabDate = qstrAddYMD + qstrAddHMS; + m_vecData = vecData; } @@ -38,29 +45,51 @@ void CMainDataUploader::Calibration() { int iScanPoints = m_struGrabberRTParams.apsParams.iTotalPosition - 1; int iDevices = m_struGrabberRTParams.fscParams.ucDeviceNumber; + + m_vecCalcedData.clear(); + m_vecCalcedData.resize(iDevices); + for (int i=0;i< iDevices;i++) + { + m_vecCalcedData[i].resize(iScanPoints); + } + for (int j = 0; j < iDevices; j++) { for (int i = 0; i < iScanPoints; i++) { + m_vecCalcedData[j][i].usExposureTimeInMS = m_vecData[j][i].usExposureTimeInMS; + m_vecCalcedData[j][i].iPixels = m_vecCalData[j][i].iPixels; + m_vecCalcedData[j][i].fTemperature = m_vecData[j][i].fTemperature; + m_vecCalcedData[j][i].qstrGrabDate = m_qstrGrabDate; for (int k=0;k< m_struGrabberRTParams.fscParams.usPixels[j];k++) { - m_vecCalcedData[j][i].dData[k] = m_vecData[j][i].lData[k]* m_vecCalData[j][i].dCal_Gain[k]; + m_vecCalcedData[j][i].fData[k] = (float)(m_vecData[j][i].lData[k]* m_vecCalData[j][i].dCal_Gain[k]); } - } } } -int CMainDataUploader::Upload() +int CMainDataUploader::UploadInfo() { m_pTransfer->SendInfo(); return 0; } +int CMainDataUploader::UploadErr() +{ + return 0; +} + +int CMainDataUploader::UploadData() +{ + m_pTransfer->SetCalData(m_vecCalcedData); + m_pTransfer->SendData(); + return 0; +} + int CMainDataUploader::Initialize() { m_pRadConverter->LoadCalibrationFrames(m_struGrabberRTParams,m_vecCalData); - m_pTransfer->SetContext(m_struEC, m_struMEC); m_pTransfer->SetDeviceInfo(m_struGrabberRTParams); return 0; @@ -73,6 +102,8 @@ int CMainDataUploader::Initialize() int CMainDataUploader::SlotPushOneDataFrame() { + Calibration(); + UploadData(); m_vecData.clear(); return 0; } diff --git a/source/Uploader/MainDataUploader.h b/source/Uploader/MainDataUploader.h index b0bc7c5..fffddef 100644 --- a/source/Uploader/MainDataUploader.h +++ b/source/Uploader/MainDataUploader.h @@ -29,7 +29,9 @@ public: void Calibration(); - int Upload(); + int UploadInfo(); + int UploadErr(); + int UploadData(); private: RadConverter *m_pRadConverter = NULL; @@ -41,6 +43,8 @@ private: vector> m_vecData; vector> m_vecCalData; vector> m_vecCalcedData; + + QString m_qstrGrabDate; public slots: //int SlotPushOneDataFrame(vector> vecData); int SlotPushOneDataFrame(); diff --git a/source/Uploader/RadianceConverter.cpp b/source/Uploader/RadianceConverter.cpp index 525482c..e66060c 100644 --- a/source/Uploader/RadianceConverter.cpp +++ b/source/Uploader/RadianceConverter.cpp @@ -48,7 +48,8 @@ int RadConverter::LoadCalibrationFrames(RunTimeGrabberParams struGrabberRTParams QFile qfCalFile(qstrFilePath); bool bRes = qfCalFile.open(QFile::ReadOnly); - qfCalFile.read((char *)&OneFile.iExposureTimeInMS,sizeof(int)); + using namespace ZZ_MISCDEF; + qfCalFile.read((char *)&OneFile.uiExposureTimeInMS,sizeof(ZZ_U32));//U32 qfCalFile.read((char*)&OneFile.fTemperature, sizeof(float)); qfCalFile.read((char*)&OneFile.iPixels,sizeof(int)); qfCalFile.read((char*)OneFile.fWaveLength, sizeof(float)*OneFile.iPixels);