#include #include #include "QTextCodec" #include "SensorMannager.h" #include"SensorOptoSky.h" #include"SensorQExPRO.h" #include #include #include #include QTextStream cout1(stdout, QIODevice::WriteOnly); void logout(QString str){ cout1<"< FindFeng(vector point1ist, vector valuelist); vector DengJianJu(int position, int distanc, int times = 10); vector PingHua(vector value, int step = 2); int main(int argc, char* argv[]) { if (argc!=3) { logout("Some Thing error Please check the input
The Correct Should Be application sensor numberofposition"); logout("Senor: OSIFAlpha QEPRO"); logout("Senor: OSIFBeta QE65"); logout("Senor: ISIF ATP6500"); logout("Senor: IS1 ATP1010"); logout("Senor: IS2 ATP5020"); return 0; } int bandsnumber=1024; QString SensorTypestr(argv[1]); QString PositionNumberstr(argv[2]); int PositionNumber=PositionNumberstr.toInt(); QCoreApplication aaaaa(argc, argv); QString m_qstrDeviceConfigFilePath; #ifdef WIN32 m_qstrDeviceConfigFilePath = ("D:\\03MyGit\\linux\\movingliner\\DeviceSettings.ini"); #else m_qstrDeviceConfigFilePath = ("/home/data/Setting/DeviceSettings.ini"); #endif QSettings *m_qsDeviceConfig; m_qsDeviceConfig = new QSettings(m_qstrDeviceConfigFilePath, QSettings::IniFormat); 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"); SensorBase* aa= nullptr; if (SensorTypestr=="OSIFAlpha") { aa = new SensorQExPRO(QE65PRO_QE); } else if (SensorTypestr=="OSIFBeta") { aa = new SensorQExPRO(QE65PRO_QE); } if(aa== nullptr) { QString portname=""; for (int i = 0; i < numberofsensor; ++i) { QString key="FS"+QString::number(i+1)+"/Model"; if (m_qsDeviceConfig->value(key).toString()==SensorTypestr) { QString portstr=m_qsDeviceConfig->value("FS"+QString::number(i+1)+"/Port").toString(); QStringList strlist=portstr.split('/'); portname=strlist.at(strlist.length()-1); } } if (portname=="") { logout("Can not find the sensor"+SensorTypestr); return 1; } aa=new SensorOptoSky(ATP6500,portname); } //SensorBase* aa = new SensorOptoSky(ATP6500,"ttyUSB0"); aa->initSensor(); cout1<<"Get Tempratrue:"<GettingTempratrue()<<"
"<Settingshuttertime(20); aa->GetOnePlot(oneplot); cout1<<"Position"<< oneplot.Plot[1000]; CVSMD12XControl Motercontrol; Motercontrol.ILMES_InitializeComm("COM16"); //Motercontrol.ILMES_InitializeComm("/dev/ttyUSB1"); ControllerParams cpTest; bool res = Motercontrol.ILMES_InitializeParams(cpTest); Motercontrol.StartBackZero(); Motercontrol.SetRunSpeed(10000); Motercontrol.MoveTo_NoSyn(550000); aa->GetOnePlot(oneplot); MSInfo temp; Motercontrol.GetStatus(temp); vector point1ist; vector valuelist; int i = 0; Motercontrol.GetStatus(temp); //outfile <GetOnePlot(oneplot); //qDebug() << oneplot.BandNum; //std::cout << temp.iPosition << std::endl; Motercontrol.GetStatus(temp); i++; //outfile << i << "," << oneplot.Plot[1024] << "," << temp.iPosition << std::endl; point1ist.push_back(temp.iPosition); valuelist.push_back(oneplot.Plot[1024]); } Motercontrol.StartBackZero(); vector valuepinghua1 = PingHua(valuelist, 3); vectorloction1=FindFeng(point1ist, valuepinghua1); int lenth = loction1.size(); for (size_t i = 0; i < lenth; i++) { vector location1point = DengJianJu(loction1[i], 5000, 25); vector valuepoint; int lennow = location1point.size(); for (size_t ii = 0; ii < lennow; ii++) { Motercontrol.MoveTo(location1point[ii]); aa->GetOnePlot(oneplot); valuepoint.push_back(oneplot.Plot[1024]); //outfile << ii << "," << oneplot.Plot[1024] << "," << location1point[ii] << std::endl; } vector valuepinghua = PingHua(valuepoint,3); vectorloction2 = FindFeng(location1point, valuepinghua); if (loction2.size() == 1) { outfile < FindFeng(vector point1ist, vector valuelist) { vector ret; int lenth = point1ist.size(); if (lenth<10) { ret.push_back(0); return ret; } for (size_t i = 5; i < lenth-5; i++) { if (valuelist[i] > 5000&&valuelist[i]>valuelist[i-1]&& valuelist[i] > valuelist[i - 4]&& valuelist[i] >valuelist[i + 1]&& valuelist[i] > valuelist[i + 4] && valuelist[i-1] > 5000 && valuelist[i-4]&& valuelist[i +1] > 5000 && valuelist[i + 4]) { if (ret.size()!=0) { if (point1ist[i]-ret[ret.size()-1]<5000) { continue; } } ret.push_back(point1ist[i]); } } return ret; } vector DengJianJu(int position, int distanc, int times ) { int begin = position - distanc; vector ret; int eachstep = distanc / times; for (size_t i = 0; i < 2*times; i++) { ret.push_back(begin + i * eachstep); } return ret; } vector PingHua(vector value,int step) { vector ret; if (value.size()<2*step) { return value; } int len = value.size(); for (size_t i = 0; i < step; i++) { ret.push_back(value[i]); } for (size_t i = step; i