From de3316c2488ab8aa09d01512895bd44fec5e18d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=BB=E7=AB=8B=E6=96=B0?= Date: Mon, 17 Jan 2022 09:30:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9shuttercali=E7=9A=84=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=E5=92=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shuttercali/project/LocationCali/main.cpp | 101 ++++++++++++------ .../source_rlx/sensor/OptoSkyType.cpp | 8 +- .../source_rlx/sensor/SensorOptoSky.cpp | 1 + 3 files changed, 76 insertions(+), 34 deletions(-) diff --git a/othersoft/shuttercali/project/LocationCali/main.cpp b/othersoft/shuttercali/project/LocationCali/main.cpp index 12260cd..295916d 100644 --- a/othersoft/shuttercali/project/LocationCali/main.cpp +++ b/othersoft/shuttercali/project/LocationCali/main.cpp @@ -11,8 +11,8 @@ QTextStream cout1(stdout, QIODevice::WriteOnly); void logout(QString str){ - cout1<"<"< FindFeng(vector point1ist, vector valuelist); @@ -21,9 +21,11 @@ vector PingHua(vector value, int step = 2); int main(int argc, char* argv[]) { - if (argc!=3) + if (argc!=4) { - logout("Some Thing error Please check the input
The Correct Should Be application sensor numberofposition"); + logout("Some Thing error Please check the input"); + logout( "The Correct Should Be application sensor numberofposition"); + logout( "apllication Sensor positionneed shutter_time"); logout("Senor: OSIFAlpha QEPRO"); logout("Senor: OSIFBeta QE65"); logout("Senor: ISIF ATP6500"); @@ -36,6 +38,7 @@ int main(int argc, char* argv[]) int bandsnumber=1024; QString SensorTypestr(argv[1]); QString PositionNumberstr(argv[2]); + int shuttertime=QString(argv[3]).toInt(); int PositionNumber=PositionNumberstr.toInt(); QCoreApplication aaaaa(argc, argv); @@ -48,17 +51,21 @@ int main(int argc, char* argv[]) #endif QSettings *m_qsDeviceConfig; m_qsDeviceConfig = new QSettings(m_qstrDeviceConfigFilePath, QSettings::IniFormat); - int numberofsensor=m_qsDeviceConfig->value("[DEVICE INFO]/TotalSpectrometer").toInt(); + int numberofsensor=m_qsDeviceConfig->value("DEVICE INFO/TotalSpectrometer").toInt(); logout("Welcom to use the Auto Locate Application"); string hdrPath = "/home/data/test.csv"; std::ofstream outfile(hdrPath.c_str()); - logout("Init Senser :QE"); + string hdrPath1 = "/home/data/result.csv"; + std::ofstream outfile1(hdrPath1.c_str()); + + logout("Sensor is "+SensorTypestr); SensorBase* aa= nullptr; if (SensorTypestr=="OSIFAlpha") { aa = new SensorQExPRO(QE65PRO_QE); + } else if (SensorTypestr=="OSIFBeta") { aa = new SensorQExPRO(QE65PRO_QE); @@ -69,6 +76,7 @@ int main(int argc, char* argv[]) QString portname=""; for (int i = 0; i < numberofsensor; ++i) { QString key="FS"+QString::number(i+1)+"/Model"; + qDebug()<value(key).toString()==SensorTypestr) { QString portstr=m_qsDeviceConfig->value("FS"+QString::number(i+1)+"/Port").toString(); @@ -76,11 +84,14 @@ int main(int argc, char* argv[]) portname=strlist.at(strlist.length()-1); } } + // qDebug()<Can not find the sensor"+SensorTypestr+"<\/b>"); return 1; } + logout("Sensor Port is "+portname); aa=new SensorOptoSky(ATP6500,portname); } @@ -89,25 +100,43 @@ int main(int argc, char* argv[]) //SensorBase* aa = new SensorOptoSky(ATP6500,"ttyUSB0"); aa->initSensor(); - - cout1<<"Get Tempratrue:"<GettingTempratrue()<<"
"<SensorInfo; + int bandsshow=info.BandNum/2; + logout("Sensor Bands to Show is "+QString::number(bandsshow)); STROnePlot oneplot; - aa->Settingshuttertime(20); - aa->GetOnePlot(oneplot); - cout1<<"Position"<< oneplot.Plot[1000]; + + + CVSMD12XControl Motercontrol; + //Motercontrol.ILMES_InitializeComm("COM16"); + if ( m_qsDeviceConfig->value("LINEAR SHUTTER/Port").toString()!="") + { + logout("Find the motor port:"+m_qsDeviceConfig->value("LINEAR SHUTTER/Port").toString()); + Motercontrol.ILMES_InitializeComm( m_qsDeviceConfig->value("LINEAR SHUTTER/Port").toString()); + } else + { + return 0; + } + + logout("The max Postion is "+QString::number(550000/4*PositionNumber)); + ControllerParams cpTest; + bool res = Motercontrol.ILMES_InitializeParams(cpTest); - CVSMD12XControl Motercontrol; - Motercontrol.ILMES_InitializeComm("COM16"); - //Motercontrol.ILMES_InitializeComm("/dev/ttyUSB1"); - ControllerParams cpTest; - bool res = Motercontrol.ILMES_InitializeParams(cpTest); + aa->Settingshuttertime(shuttertime); + aa->GetOnePlot(oneplot); + + + + + logout("GO TO ZERO"); Motercontrol.StartBackZero(); Motercontrol.SetRunSpeed(10000); - Motercontrol.MoveTo_NoSyn(550000); + logout("GO TO ZERO OK"); + logout("Start Moving to "+QString::number(550000/4*PositionNumber)); + Motercontrol.MoveTo_NoSyn(550000/4*PositionNumber); aa->GetOnePlot(oneplot); MSInfo temp; Motercontrol.GetStatus(temp); @@ -118,7 +147,7 @@ int main(int argc, char* argv[]) //outfile <GetOnePlot(oneplot); @@ -127,38 +156,54 @@ int main(int argc, char* argv[]) Motercontrol.GetStatus(temp); i++; - //outfile << i << "," << oneplot.Plot[1024] << "," << temp.iPosition << std::endl; + outfile << i << "," << oneplot.Plot[bandsshow] << "," << temp.iPosition << std::endl; point1ist.push_back(temp.iPosition); - valuelist.push_back(oneplot.Plot[1024]); + valuelist.push_back(oneplot.Plot[bandsshow]); } - Motercontrol.StartBackZero(); + logout("FINISH Moving"); vector valuepinghua1 = PingHua(valuelist, 3); vectorloction1=FindFeng(point1ist, valuepinghua1); + int lenth = loction1.size(); + if (lenth!=PositionNumber) + { + logout("can not find all position please change the shutter time and try agin<\/b>"); + } + cout1<<"First find "<"< location1point = DengJianJu(loction1[i], 5000, 25); vector valuepoint; int lennow = location1point.size(); + cout1<<"Detail find "<"<GetOnePlot(oneplot); - valuepoint.push_back(oneplot.Plot[1024]); + valuepoint.push_back(oneplot.Plot[bandsshow]); //outfile << ii << "," << oneplot.Plot[1024] << "," << location1point[ii] << std::endl; + } vector valuepinghua = PingHua(valuepoint,3); vectorloction2 = FindFeng(location1point, valuepinghua); + if (loction2.size() == 1) - { - outfile <"<readAll(); data.append(tempbuf); - if (time.elapsed() > 50000) + if (time.elapsed() > 10000) { logout::out("long time no data retrun "); return false; @@ -140,8 +140,8 @@ lable1: if (checknum != (unsigned char)data[data.size() - 1]) { logout::out("checkerro " ); - data.clear(); - return false; + //data.clear(); + //return false; } return true; @@ -157,7 +157,7 @@ bool OptoSky::GetReturn(QByteArray id, QByteArray &data) if (data[4]!=id[0]) { logout::out("retrun is not correct with ComId:" + QString::number(id[0], 16)); - return false;//Èç¹û·µ»Ø²»ÊÇÐèÒªµÄÔò·µ»Ø´íÎó + return false;//������ز�����Ҫ���ò·µ»Ø´ï¿½ï¿½ï¿½ } RemoveHeaderandEnd(data); diff --git a/othersoft/shuttercali/source_rlx/sensor/SensorOptoSky.cpp b/othersoft/shuttercali/source_rlx/sensor/SensorOptoSky.cpp index 0258871..e4246b4 100644 --- a/othersoft/shuttercali/source_rlx/sensor/SensorOptoSky.cpp +++ b/othersoft/shuttercali/source_rlx/sensor/SensorOptoSky.cpp @@ -79,6 +79,7 @@ void SensorOptoSky::SettingTemprature(float temp) float SensorOptoSky::GettingTempratrue() { + return 0.0; if (!OptoSky::isSensorInit()) { return 0;