From 5e421006e01d0ac1d6b0deacb5f86646d80f7639 Mon Sep 17 00:00:00 2001 From: zhangzhuo Date: Wed, 3 Nov 2021 17:45:16 +0800 Subject: [PATCH] 12345 --- main.cpp | 4 +- source/ATP/ATPControl_Serial_QT.cpp | 141 ++++++++++++++++++++++++++-- source/ATP/ATPControl_Serial_QT.h | 4 + source/ATP/ZZ_Types.h | 2 +- source/pch.h | 1 + 5 files changed, 141 insertions(+), 11 deletions(-) diff --git a/main.cpp b/main.cpp index dc67308..e643763 100644 --- a/main.cpp +++ b/main.cpp @@ -9,7 +9,7 @@ int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); //////////////////////////////////////////////////////////////////////////logger - QT_LOG::ZZ_InitLogger(QCoreApplication::applicationDirPath() + "/Log/"); + //QT_LOG::ZZ_InitLogger(QCoreApplication::applicationDirPath() + "/Log/"); QString qstrTest="This is a test message 2"; qDebug() << qstrTest; //////////////////////////////////////////////////////////////////////////test @@ -17,6 +17,8 @@ int main(int argc, char *argv[]) QByteArray qbTest; m_ctrlATP.ATPInitialize(7); m_ctrlATP.GetDeviceAttribute(); + m_ctrlATP.SetExposureTime(m_ctrlATP.m_adaDeviceAttr.iMinIntegrationTime); + m_ctrlATP.RecvData(qbTest); ////////////////////////////////////////////////////////////////////////// return a.exec(); diff --git a/source/ATP/ATPControl_Serial_QT.cpp b/source/ATP/ATPControl_Serial_QT.cpp index fe86fb5..23682a0 100644 --- a/source/ATP/ATPControl_Serial_QT.cpp +++ b/source/ATP/ATPControl_Serial_QT.cpp @@ -57,12 +57,23 @@ int ZZ_ATPControl_Serial_Qt::ATPClose() } int ZZ_ATPControl_Serial_Qt::GetDeviceInfo() { - QByteArray qbSend, qbRecv; + + qbSend.clear(); + qbRecv.clear(); qbSend.append(GET_PN_NUMBER); SendCommand(qbSend); RecvData(qbRecv); ParseData(qbRecv); + m_adiDeviceInfo.strPN = qbRecv.data(); + + qbSend.clear(); + qbRecv.clear(); + qbSend.append(GET_SN_NUMBER); + SendCommand(qbSend); + RecvData(qbRecv); + ParseData(qbRecv); + m_adiDeviceInfo.strSN = qbRecv.data(); return 0; @@ -70,18 +81,44 @@ int ZZ_ATPControl_Serial_Qt::GetDeviceInfo() int ZZ_ATPControl_Serial_Qt::GetDeviceAttribute() { - QByteArray qbSend,qbRecv; - qbSend.append(GET_WAVELENGTH_CALIBRATION_COEF); - qbSend.resize(2); - qbSend[0] = 0x00; - qbSend[1] = 0x01; + QByteArray qbSend, qbRecv; + + qbSend.clear(); + qbRecv.clear(); + qbSend.append(GET_MIN_INTEGRATION_TIME); SendCommand(qbSend); RecvData(qbRecv); - //ParseData(qbRecv); + ParseData(qbRecv); + m_adaDeviceAttr.iMinIntegrationTime = (ZZ_U8)qbRecv[1] + (ZZ_U8)qbRecv[0] * 256; - float a[4]; - memcpy(a, (ZZ_U8*)(qbRecv[5]+16), 4 * 4); + qbSend.clear(); + qbRecv.clear(); + qbSend.append(GET_MAX_INTEGRATION_TIME); + SendCommand(qbSend); + RecvData(qbRecv); + ParseData(qbRecv); + m_adaDeviceAttr.iMaxIntegrationTime = (ZZ_U8)qbRecv[1] + (ZZ_U8)qbRecv[0] * 256; + + SetExposureTime(m_adaDeviceAttr.iMinIntegrationTime); + SingleShot(m_adaDeviceAttr.iPixels); + + + qbSend.clear(); + qbRecv.clear(); + qbSend.append(GET_WAVELENGTH_CALIBRATION_COEF); + qbSend.resize(3); + qbSend[1] = 0x00; + qbSend[2] = 0x01; + SendCommand(qbSend); + RecvData(qbRecv); + ParseData(qbRecv); + + float fWaveLengthCoef[4]; + memcpy(fWaveLengthCoef, qbRecv.data()+16, 4 * sizeof(float)); +// for () +// { +// } return 0; } @@ -189,7 +226,93 @@ int ZZ_ATPControl_Serial_Qt::ParseData(QByteArray &qbData) return 0; } +int ZZ_ATPControl_Serial_Qt::PerformAutoExposure(float fMinScaleFactor, float fMaxScaleFactor, float &fPredictedExposureTime) +{ + return 0; +} +int ZZ_ATPControl_Serial_Qt::SetExtShutter(int iShutterA, int iShutterB) +{ + return 0; +} + +int ZZ_ATPControl_Serial_Qt::SetExposureTime(int iExposureTimeInMS) +{ + QByteArray qbExposureTime,qbRecv; + qbExposureTime.append(SET_INTEGRATION_TIME); + qbExposureTime.resize(3); + qbExposureTime[1] = iExposureTimeInMS >> 8; + qbExposureTime[2] = iExposureTimeInMS & 0xFF; + + SendCommand(qbExposureTime); + RecvData(qbRecv); + ParseData(qbRecv); + + if ((ZZ_U8)qbRecv[0] != 0) + { + qDebug() << "Err:SetExposureTime Failed.Exit Code:1" ; + return 1; + } + + return 0; +} + +int ZZ_ATPControl_Serial_Qt::SingleShot(ATPDataFrame &dfData) +{ + QByteArray qbSend, qbRecv; + qbSend.clear(); + qbRecv.clear(); + qbSend.append(SYNC_GET_DATA); + qbSend.resize(3); + qbSend[1] = 0x00; + qbSend[2] = 0x01; + SendCommand(qbSend); + RecvData(qbRecv); + ParseData(qbRecv); + + if ((ZZ_U8)qbRecv[0] != 0) + { + qDebug() << "Err:SingleShot Failed.Exit Code:1"; + return 1; + } + else + { + int iDataSizeInPixel = (qbRecv.size() - 1) / 2; + memcpy(dfData.usData, qbRecv.data() + 1, iDataSizeInPixel * 2); + + } + + //int isize = qbRecv.size(); + //m_adaDeviceAttr.iPixels = isize / 2; + + return 0; +} + +int ZZ_ATPControl_Serial_Qt::SingleShot(int &iPixels) +{ + QByteArray qbSend, qbRecv; + qbSend.clear(); + qbRecv.clear(); + qbSend.append(SYNC_GET_DATA); + qbSend.resize(3); + qbSend[1] = 0x00; + qbSend[2] = 0x01; + SendCommand(qbSend); + RecvData(qbRecv); + ParseData(qbRecv); + + if ((ZZ_U8)qbRecv[0] != 0) + { + qDebug() << "Err:SingleShot Failed.Exit Code:1"; + return 1; + } + else + { + iPixels = (qbRecv.size() - 1) / 2; + + } + return 0; +} //void ZZ_ATPControl_Serial_Qt::ReadMessage() //{ diff --git a/source/ATP/ATPControl_Serial_QT.h b/source/ATP/ATPControl_Serial_QT.h index 9a648c1..a0b07c9 100644 --- a/source/ATP/ATPControl_Serial_QT.h +++ b/source/ATP/ATPControl_Serial_QT.h @@ -13,12 +13,16 @@ public: ZZ_ATPControl_Serial_Qt(); virtual ~ZZ_ATPControl_Serial_Qt(); + //////////////////////////////////////////////////////////////////////////shutter control stub code s + int SetExtShutter(int iShutterA,int iShutterB); //0:close 1:open + //////////////////////////////////////////////////////////////////////////shutter control stub code e public: int SetBaudRate(int iBaud); int ATPInitialize( ZZ_U8 ucPortNumber); int ATPClose(); + int SingleShot(int &iPixels); int SingleShot(ATPDataFrame &dfData); int SingleShotDark(ATPDataFrame &dfData); int SingleShotDeducted(ATPDataFrame &dfData); diff --git a/source/ATP/ZZ_Types.h b/source/ATP/ZZ_Types.h index 1d50280..1b22f9f 100644 --- a/source/ATP/ZZ_Types.h +++ b/source/ATP/ZZ_Types.h @@ -48,7 +48,7 @@ namespace ZZ_MISCDEF typedef struct tagATPDataFrame { unsigned short usExposureTime; - int iData[4096]; + ZZ_U16 usData[4096]; float fTemperature; double dTimes = 0; }ATPDataFrame; diff --git a/source/pch.h b/source/pch.h index dac58d0..dce1b38 100644 --- a/source/pch.h +++ b/source/pch.h @@ -1,6 +1,7 @@ #pragma once #include #include +#include #include #include #include