Merge remote-tracking branch 'origin/TC' into renlixin

This commit is contained in:
2022-01-19 15:08:15 +08:00
5 changed files with 274 additions and 94 deletions

View File

@ -1,67 +1,70 @@
//////////////////////////////////////////////////////////////////////////
//ATP?<EFBFBD><EFBFBD>?<EFBFBD><EFBFBD><EFBFBD><EFBFBD>??????<3F><>???<EFBFBD><EFBFBD>
//ATP<54><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//////////////////////////////////////////////////////////////////////////
#pragma once
//#include "pch.h"
#include "ZZ_Types.h"
#include "ZZ_Math.h"
#include <QSerialPort>
#include <QtEndian>
#include "IrisFiberSpectrometerBase.h"
using namespace ZZ_MISCDEF;
using namespace ZZ_MISCDEF::ATP;
using namespace ZZ_MISCDEF::IRIS::FS;
class ZZ_ATPControl_Serial_Qt:public CIrisFSBase
class ZZ_ATPControl_Serial_Qt :public CIrisFSBase
{
//Q_OBJECT
Q_OBJECT
public:
ZZ_ATPControl_Serial_Qt();
ZZ_ATPControl_Serial_Qt(QObject* parent = nullptr);
virtual ~ZZ_ATPControl_Serial_Qt();
public:
//?<3F><>???<3F><>????
//do not call
//int ReInit();
//<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD>
//int SetBaudRate(int iBaud);
//???????<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
//<2F><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD>
int Initialize(bool bIsUSBMode, std::string ucPortNumber, std::string strDeviceName);
int Initialize(bool bIsUSBMode,ZZ_U8 ucPortNumber,std::string strDeviceName);
//??<3F><>??<3F><><EFBFBD><EFBFBD>?
//<EFBFBD>ر<EFBFBD><EFBFBD>
void Close();
//???????????? ?????<3F><>???<3F><><EFBFBD><EFBFBD>???????
int SingleShot(int &iPixels);
//<EFBFBD><EFBFBD><EFBFBD>β<EFBFBD><EFBFBD>Բɼ<EFBFBD> <20><><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int SingleShot(int& iPixels);
//????????????
int SingleShot(DataFrame &dfData);
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲɼ<EFBFBD>
int SingleShot(DataFrame& dfData);
//????<EFBFBD><EFBFBD>?<EFBFBD><EFBFBD>??<3F><>????
//<EFBFBD><EFBFBD><EFBFBD>ΰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD>
//int SingleShotDark(ATPDataFrame &dfData);
//int SingleShotDeducted(ATPDataFrame &dfData);
//?<EFBFBD><EFBFBD>???????<3F><>??
//<2F><><EFBFBD><EFBFBD><EFBFBD>ع<EFBFBD>ʱ<EFBFBD><EFBFBD>
int SetExposureTime(int iExposureTimeInMS);
//?????????<3F><>???<3F><>??
int GetExposureTime(int &iExposureTimeInMS);
//<EFBFBD><EFBFBD>ȡ<EFBFBD>ع<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int GetExposureTime(int& iExposureTimeInMS);
//int GetWaveLength(float *pfWaveLength);
//?????<3F><><EFBFBD><EFBFBD>?????
int GetDeviceInfo(DeviceInfo &Info);
//<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>Ϣ
int GetDeviceInfo(DeviceInfo& Info);
//?????<3F><><EFBFBD><EFBFBD>????<3F><>????
int GetDeviceAttribute(DeviceAttribute &Attr);
//<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int GetDeviceAttribute(DeviceAttribute& Attr);
//int GetDeviceListInfo(); //use type name to enum
//?<EFBFBD><EFBFBD>??????
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int SetDeviceTemperature(float fTemperature);
//????????
int GetDeviceTemperature(float &fTemperature);
//<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>
int GetDeviceTemperature(float& fTemperature);
//<2F><>???????
int PerformAutoExposure(float fMinScaleFactor, float fMaxScaleFactor, float &fPredictedExposureTime);
//<2F>Զ<EFBFBD><EFBFBD>ع<EFBFBD>
int PerformAutoExposure(float fMinScaleFactor, float fMaxScaleFactor, float& fPredictedExposureTime);
#ifdef _DEBUG
public:
@ -70,18 +73,25 @@ private:
#endif
//port
int m_iBaudRate;
QSerialPort *m_pSerialPort;
QSerialPort* m_pSerialPort;
//ATP
DeviceInfo m_diDeviceInfo;
DeviceAttribute m_daDeviceAttr;
//Attr
int m_iExposureTime;
//////////////////////////////////////////////////////////////////////////shutter control stub code s
//int SetExtShutter(int iShutterUP0, int iShutterDOWN1,int iShutterDOWN2,int iShutterDOWN3); //0:close 1:open
//////////////////////////////////////////////////////////////////////////shutter control stub code e
int GetExposureTime_Init();
int SendCommand(QByteArray qbCommand);
int RecvData(QByteArray &qbData);
int ParseData(QByteArray &qbData);
//private slots :
int RecvData(QByteArray& qbData);
int ParseData(QByteArray& qbData);
public slots:
int Init_Self();
signals:
void SignalInit_Self();
//private slots :
//void ReadMessage();
};

View File

@ -1,10 +1,11 @@
#include "QObject"
#include <string>
#include "ZZ_Types.h"
#pragma once
using namespace ZZ_MISCDEF;
using namespace ZZ_MISCDEF::IRIS::FS;
class CIrisFSBase
class CIrisFSBase:public QObject
{
public:
//CIrisFSBase();

View File

@ -3,12 +3,11 @@
//#include "ZZ_Math_HDRONLY.h"
#include <QDebug>
ZZ_ATPControl_Serial_Qt::ZZ_ATPControl_Serial_Qt()
ZZ_ATPControl_Serial_Qt::ZZ_ATPControl_Serial_Qt(QObject* parent /*= nullptr*/)
{
m_pSerialPort = new QSerialPort;
//connect(m_pSerialPort, &QSerialPort::readyRead, this, &ZZ_ATPControl_Serial_Qt::ReadMessage);
m_iBaudRate = 115200;
//emit SignalInit_Self();
}
ZZ_ATPControl_Serial_Qt::~ZZ_ATPControl_Serial_Qt()
@ -20,6 +19,19 @@ ZZ_ATPControl_Serial_Qt::~ZZ_ATPControl_Serial_Qt()
}
// int ZZ_ATPControl_Serial_Qt::ReInit()
// {
// m_pSerialPort->close();
// delete m_pSerialPort;
//
// m_pSerialPort = new QSerialPort;
//
// m_pSerialPort->setPortName("COM7");
// m_pSerialPort->setReadBufferSize(512);
// bool bRes = m_pSerialPort->setBaudRate(m_iBaudRate);
// bRes = m_pSerialPort->open(QIODevice::ReadWrite);
// }
// int ZZ_ATPControl_Serial_Qt::SetBaudRate(int iBaud)
// {
// m_iBaudRate = iBaud;
@ -29,6 +41,9 @@ ZZ_ATPControl_Serial_Qt::~ZZ_ATPControl_Serial_Qt()
int ZZ_ATPControl_Serial_Qt::Initialize(bool bIsUSBMode, std::string ucPortNumber, std::string strDeviceName)
{
//connect(this, &ZZ_ATPControl_Serial_Qt::SignalInit_Self, this, &ZZ_ATPControl_Serial_Qt::Init_Self);
//emit SignalInit_Self();
QString qstrPortName = QString::fromStdString(ucPortNumber);
m_pSerialPort->setPortName(qstrPortName);
@ -49,6 +64,26 @@ int ZZ_ATPControl_Serial_Qt::Initialize(bool bIsUSBMode, std::string ucPortNumbe
return 2;
}
// int testi;
// GetDeviceAttribute(m_daDeviceAttr);
// GetExposureTime(testi);
// SetExposureTime(10000);
// DataFrame test;
// SingleShot(test);
GetDeviceInfo(m_diDeviceInfo);
GetExposureTime_Init();
std::string::size_type szPostion = m_diDeviceInfo.strSN.find(strDeviceName);
if (szPostion == std::string::npos)
{
qDebug() << "Err:FS serial number not match.Exit Code:3";
return 3;
}
else
{
return 0;
}
return 0;
}
@ -56,8 +91,7 @@ void ZZ_ATPControl_Serial_Qt::Close()
{
m_pSerialPort->close();
}
int ZZ_ATPControl_Serial_Qt::GetDeviceInfo(DeviceInfo &Info)
int ZZ_ATPControl_Serial_Qt::GetDeviceInfo(DeviceInfo& Info)
{
QByteArray qbSend, qbRecv;
@ -112,7 +146,7 @@ int ZZ_ATPControl_Serial_Qt::GetDeviceInfo(DeviceInfo &Info)
return 0;
}
int ZZ_ATPControl_Serial_Qt::GetDeviceAttribute(DeviceAttribute &Attr)
int ZZ_ATPControl_Serial_Qt::GetDeviceAttribute(DeviceAttribute& Attr)
{
QByteArray qbSend, qbRecv;
@ -202,10 +236,10 @@ int ZZ_ATPControl_Serial_Qt::GetDeviceAttribute(DeviceAttribute &Attr)
return 1;
}
float fWaveLengthCoef[4];
memcpy(fWaveLengthCoef, qbRecv.data()+16, 4 * sizeof(float));
for (int i=0;i< m_daDeviceAttr.iPixels;i++)
memcpy(fWaveLengthCoef, qbRecv.data() + 16, 4 * sizeof(float));
for (int i = 0; i < m_daDeviceAttr.iPixels; i++)
{
m_daDeviceAttr.fWaveLengthInNM[i] = fWaveLengthCoef[0] * i*i*i + fWaveLengthCoef[1] * i*i + fWaveLengthCoef[2] * i + fWaveLengthCoef[3];
m_daDeviceAttr.fWaveLengthInNM[i] = fWaveLengthCoef[0] * i * i * i + fWaveLengthCoef[1] * i * i + fWaveLengthCoef[2] * i + fWaveLengthCoef[3];
}
Attr = m_daDeviceAttr;
@ -218,6 +252,38 @@ int ZZ_ATPControl_Serial_Qt::SetDeviceTemperature(float fTemperature)
return 0;
}
int ZZ_ATPControl_Serial_Qt::GetExposureTime_Init()
{
QByteArray qbSend, qbRecv;
qbSend.clear();
qbRecv.clear();
qbSend.append(GET_INTEGRATION_TIME);
qbSend.resize(3);
qbSend[1] = 0x00;
qbSend[2] = 0x01;
int iRes = SendCommand(qbSend);
if (iRes != 0)
{
qDebug() << "Err:GetExposureTime Failed.Exit Code:1";
return 1;
}
iRes = RecvData(qbRecv);
if (iRes != 0)
{
qDebug() << "Err:GetExposureTime Failed.Exit Code:2";
return 2;
}
iRes = ParseData(qbRecv);
if (iRes != 0)
{
qDebug() << "Err:GetExposureTime Failed.Exit Code:3";
return 3;
}
m_iExposureTime = (ZZ_U8)qbRecv[1] + (ZZ_U8)qbRecv[0] * 256;
return 0;
}
int ZZ_ATPControl_Serial_Qt::SendCommand(QByteArray qbCommand)
{
int iSize = qbCommand.size() + 3;
@ -237,17 +303,17 @@ int ZZ_ATPControl_Serial_Qt::SendCommand(QByteArray qbCommand)
qbSend.append(iSum % 256);
qint64 qi64Write= m_pSerialPort->write(qbSend);
qint64 qi64Write = m_pSerialPort->write(qbSend);
if (qi64Write != qbSend.size())
{
qDebug() << "Err:write Failed.Exit Code:1"<< qi64Write;
qDebug() << "Err:write Failed.Exit Code:1" << qi64Write;
return 1;
}
return 0;
}
int ZZ_ATPControl_Serial_Qt::RecvData(QByteArray &qbData)
int ZZ_ATPControl_Serial_Qt::RecvData(QByteArray& qbData)
{
qbData.clear();
qbData = m_pSerialPort->readAll();
@ -255,22 +321,21 @@ int ZZ_ATPControl_Serial_Qt::RecvData(QByteArray &qbData)
int iCounter = 0;
while (qbData.size() < 4)
{
m_pSerialPort->waitForReadyRead(5000);
m_pSerialPort->waitForReadyRead(1000);
QByteArray qbTemp = m_pSerialPort->readAll();
qbData.append(qbTemp);
if (iCounter > 20)
if (iCounter > 150)
{
qDebug() << "Err:RecvData Failed,Not Enough Data.Exit Code:1"<< qbData.size();
qDebug() << "Err:RecvData Failed,Not Enough Data.Exit Code:1" << qbData.size();
return 1;
}
iCounter++;
}
#include <QObject>
if ((ZZ_U8)qbData[0] != (ZZ_U8)0xaa || (ZZ_U8)qbData[1] != (ZZ_U8)0x55)
{
qDebug() << "Err:RecvData Failed,Wrong Header.Exit Code:2" << qbData.size();
qDebug() << "Err:RecvData Failed,Wrong Header.Exit Code:2" << qbData.size();
return 2;
}
@ -278,12 +343,12 @@ int ZZ_ATPControl_Serial_Qt::RecvData(QByteArray &qbData)
int iLength = qbData[2] * 256 + qbData[3] + 2;
while (qbData.size() < iLength)
{
m_pSerialPort->waitForReadyRead(50);
m_pSerialPort->waitForReadyRead(5000);
qbData.append(m_pSerialPort->readAll());
if (iCounter > 100)
if (iCounter > 200)
{
qDebug() << "Err:RecvData Failed,Incomplete Data.Exit Code:3" << qbData.size();
qDebug() << "Err:RecvData Failed,Incomplete Data.Exit Code:3" << qbData.size();
return 3;
}
iCounter++;
@ -297,25 +362,26 @@ int ZZ_ATPControl_Serial_Qt::RecvData(QByteArray &qbData)
ZZ_U16 usCheckSum = 0;
for (int i = 0; i < iCheckSumLength; i++)
{
usCheckSum += qbData[i+2];
usCheckSum += qbData[i + 2];
}
usCheckSum = usCheckSum % 256;
ZZ_U8 ucTemp = qbData[qbData.size() - 1];
if ((ZZ_U8)usCheckSum != ucTemp)
{
qDebug() << "Err:RecvData Failed,Incorrect Check Sum.Exit Code:4" << qbData.size();
qbData.clear();
return 4;
qDebug() << "Err:RecvData Failed,Incorrect Check Sum.Exit Code:4" << "Total Recv:" << qbData.size() << "Check Sum:" << usCheckSum << "Not Equal To" << ucTemp;
//qbData.clear();
//return 4;
return 0;
}
return 0;
}
int ZZ_ATPControl_Serial_Qt::ParseData(QByteArray &qbData)
int ZZ_ATPControl_Serial_Qt::ParseData(QByteArray& qbData)
{
if (qbData.size() < 6)
{
qDebug() << "Err:ParseData Failed,Not Enough Data.Exit Code:1" << qbData.size();
qDebug() << "Err:ParseData Failed,Not Enough Data.Exit Code:1" << qbData.size();
return 1;
}
qbData.remove(0, 5);
@ -323,7 +389,13 @@ int ZZ_ATPControl_Serial_Qt::ParseData(QByteArray &qbData)
return 0;
}
int ZZ_ATPControl_Serial_Qt::PerformAutoExposure(float fMinScaleFactor, float fMaxScaleFactor, float &fPredictedExposureTime)
int ZZ_ATPControl_Serial_Qt::Init_Self()
{
m_pSerialPort = new QSerialPort;
return 0;
}
int ZZ_ATPControl_Serial_Qt::PerformAutoExposure(float fMinScaleFactor, float fMaxScaleFactor, float& fPredictedExposureTime)
{
using namespace ZZ_MATH;
int iDeviceDepth = 65535;
@ -468,41 +540,77 @@ int ZZ_ATPControl_Serial_Qt::PerformAutoExposure(float fMinScaleFactor, float fM
int ZZ_ATPControl_Serial_Qt::SetExposureTime(int iExposureTimeInMS)
{
QByteArray qbExposureTime,qbRecv;
qbExposureTime.append(SET_INTEGRATION_TIME);
m_iExposureTime = iExposureTimeInMS;
QByteArray qbExposureTime, qbRecv;
//qbExposureTime.append(SET_INTEGRATION_TIME);
qbExposureTime.resize(3);
qbExposureTime[0] = SET_INTEGRATION_TIME;
qbExposureTime[1] = iExposureTimeInMS >> 8;
qbExposureTime[2] = iExposureTimeInMS & 0xFF;
SendCommand(qbExposureTime);
RecvData(qbRecv);
ParseData(qbRecv);
int iRes = SendCommand(qbExposureTime);
if (iRes != 0)
{
qDebug() << "Err:SetExposureTime Failed.Exit Code:2";
return 2;
}
iRes = RecvData(qbRecv);
if (iRes != 0)
{
qDebug() << "Err:SetExposureTime Failed.Exit Code:3";
return 3;
}
iRes = ParseData(qbRecv);
if (iRes != 0)
{
qDebug() << "Err:SetExposureTime Failed.Exit Code:4";
return 4;
}
if ((ZZ_U8)qbRecv[0] != 0)
{
qDebug() << "Err:SetExposureTime Failed.Exit Code:1" ;
qDebug() << "Err:SetExposureTime Failed.Exit Code:1";
return 1;
}
return 0;
}
int ZZ_ATPControl_Serial_Qt::GetExposureTime(int &iExposureTimeInMS)
int ZZ_ATPControl_Serial_Qt::GetExposureTime(int& iExposureTimeInMS)
{
QByteArray qbSend, qbRecv;
qbSend.clear();
qbRecv.clear();
qbSend.append(GET_INTEGRATION_TIME);
qbSend.resize(3);
qbSend[1] = 0x00;
qbSend[2] = 0x01;
SendCommand(qbSend);
RecvData(qbRecv);
ParseData(qbRecv);
// QByteArray qbSend, qbRecv;
// qbSend.clear();
// qbRecv.clear();
// qbSend.append(GET_INTEGRATION_TIME);
// qbSend.resize(3);
// qbSend[1] = 0x00;
// qbSend[2] = 0x01;
// int iRes = SendCommand(qbSend);
// if (iRes != 0)
// {
// qDebug() << "Err:GetExposureTime Failed.Exit Code:1";
// return 1;
// }
// iRes = RecvData(qbRecv);
// if (iRes != 0)
// {
// qDebug() << "Err:GetExposureTime Failed.Exit Code:2";
// return 2;
// }
// iRes = ParseData(qbRecv);
// if (iRes != 0)
// {
// qDebug() << "Err:GetExposureTime Failed.Exit Code:3";
// return 3;
// }
//
// iExposureTimeInMS = (ZZ_U8)qbRecv[1] + (ZZ_U8)qbRecv[0] * 256;
iExposureTimeInMS = m_iExposureTime;
return 0;
}
int ZZ_ATPControl_Serial_Qt::SingleShot(DataFrame &dfData)
int ZZ_ATPControl_Serial_Qt::SingleShot(DataFrame& dfData)
{
QByteArray qbSend, qbRecv;
@ -510,13 +618,30 @@ int ZZ_ATPControl_Serial_Qt::SingleShot(DataFrame &dfData)
qbRecv.clear();
qbSend.append(SYNC_GET_DATA);
qbSend.resize(3);
qbSend[1] = 0x00;
qbSend[2] = 0x01;
SendCommand(qbSend);
RecvData(qbRecv);
ParseData(qbRecv);
// qbSend[1] = 0x00;
// qbSend[2] = 0x01;
qbSend[1] = m_iExposureTime >> 8;;
qbSend[2] = m_iExposureTime & 0xFF;
int iRes = SendCommand(qbSend);
if (iRes != 0)
{
qDebug() << "Err:SingleShot Failed.Exit Code:1";
return 1;
}
iRes = RecvData(qbRecv);
if (iRes != 0)
{
qDebug() << "Err:SingleShot Failed.Exit Code:2";
return 2;
}
iRes = ParseData(qbRecv);
if (iRes != 0)
{
qDebug() << "Err:SingleShot Failed.Exit Code:3";
return 3;
}
ZZ_U16 usData[4096] = {0};
ZZ_U16 usData[4096] = { 0 };
if ((ZZ_U8)qbRecv[0] != 0)
{
@ -528,16 +653,22 @@ int ZZ_ATPControl_Serial_Qt::SingleShot(DataFrame &dfData)
//int aaa = qbRecv.size();
int iDataSizeInPixel = (qbRecv.size() - 1) / 2;
memcpy(usData, qbRecv.data() + 1, iDataSizeInPixel * 2);
for (int i=0;i< iDataSizeInPixel;i++)
for (size_t i = 0; i < iDataSizeInPixel; i++)
{
dfData.lData[i] = usData[i];
dfData.lData[i] = qToBigEndian(usData[i]);
}
// for (int i = 0; i < iDataSizeInPixel; i++)
// {
// dfData.lData[i] = usData[i];
// }
}
return 0;
}
int ZZ_ATPControl_Serial_Qt::SingleShot(int &iPixels)
int ZZ_ATPControl_Serial_Qt::SingleShot(int& iPixels)
{
QByteArray qbSend, qbRecv;
qbSend.clear();
@ -546,14 +677,29 @@ int ZZ_ATPControl_Serial_Qt::SingleShot(int &iPixels)
qbSend.resize(3);
qbSend[1] = 0x00;
qbSend[2] = 0x01;
SendCommand(qbSend);
RecvData(qbRecv);
ParseData(qbRecv);
int iRes = SendCommand(qbSend);
if (iRes != 0)
{
qDebug() << "Err:SingleShotP Failed.Exit Code:1";
return 1;
}
iRes = RecvData(qbRecv);
if (iRes != 0)
{
qDebug() << "Err:SingleShotP Failed.Exit Code:2";
return 2;
}
iRes = ParseData(qbRecv);
if (iRes != 0)
{
qDebug() << "Err:SingleShot Failed.Exit Code:3";
return 3;
}
if ((ZZ_U8)qbRecv[0] != 0)
{
qDebug() << "Err:SingleShot Failed.Exit Code:1";
return 1;
qDebug() << "Err:SingleShotP Failed.Exit Code:4";
return 4;
}
else
{
@ -570,8 +716,10 @@ int ZZ_ATPControl_Serial_Qt::SingleShot(int &iPixels)
// return 0;
// }
int ZZ_ATPControl_Serial_Qt::GetDeviceTemperature(float &fTemperature)
int ZZ_ATPControl_Serial_Qt::GetDeviceTemperature(float& fTemperature)
{
fTemperature = 0;
QByteArray qbSend, qbRecv;
qbSend.clear();
qbRecv.clear();
@ -579,9 +727,28 @@ int ZZ_ATPControl_Serial_Qt::GetDeviceTemperature(float &fTemperature)
qbSend.resize(3);
qbSend[1] = 0x00;
qbSend[2] = 0x01;
SendCommand(qbSend);
RecvData(qbRecv);
ParseData(qbRecv);
int iRes = SendCommand(qbSend);
if (iRes != 0)
{
qDebug() << "Err:GetDeviceTemperature Failed.Exit Code:1";
return 1;
}
iRes = RecvData(qbRecv);
if (iRes != 0)
{
qDebug() << "Err:GetDeviceTemperature Failed.Exit Code:2";
return 2;
}
iRes = ParseData(qbRecv);
if (iRes != 0)
{
qDebug() << "Err:GetDeviceTemperature Failed.Exit Code:3";
return 3;
}
QString qstrTemp = qbRecv.data();
fTemperature = qstrTemp.toFloat();
return 0;
}

View File

@ -101,7 +101,7 @@ int main(int argc, char *argv[])
//<2F>Զ<EFBFBD><D4B6>ع<EFBFBD>
logout("<br><b style=\"color:red\">AutoExpose!</b>");
// m_FiberSpectrometer->autoExpose();
m_FiberSpectrometer->autoExpose();
//<2F><><EFBFBD><EFBFBD>sleep<65><70><EFBFBD>ȴ<EFBFBD><C8B4>رտ<D8B1><D5BF><EFBFBD>

View File

@ -29,3 +29,5 @@ cd ../
cd ../../
cp -r ./html/* /var/www/html
chmod +x /var/www/html/php/*.sh
#tc