int main() { try { CBoardENoses eNoses; std::string firmVers; CObservationGasSensors obs; FILE *f_log = os::fopen(format("./log_%s.txt", fileNameStripInvalidChars(mrpt::system::dateTimeLocalToString(now())).c_str() ),"wt"); TTimeStamp timStart = mrpt::system::getCurrentTime(); std::map<int, std::vector<float> > Sensor_array; bool together = true; //True -> Shows all sensor on same window. False -> Each sensor has his own window /* // Load configuration: ASSERT_( mrpt::system::fileExists("_CONFIG_eNoses.ini") ); CConfigFile conf("_CONFIG_eNoses.ini"); eNoses.loadConfig( conf, "eNoses" ); if (!eNoses.queryFirmwareVersion( firmVers ) ) { printf("Error!!\n"); return -1; } else std::cout << "FIRMWARE VERSION: " << firmVers << std::endl; */ while ( !mrpt::system::os::kbhit() ) { if (! eNoses.getObservation( obs ) ) //NEW OBSERVATION { cout << "- Could not retrieve an observation from the eNoses..." << endl; } else { //Push_back timeStamp (seconds) Sensor_array[0x0000].push_back( mrpt::system::timeDifference(timStart,obs.timestamp) ); if (f_log) fprintf(f_log,"%f ", mrpt::system::timeDifference(timStart,obs.timestamp) ); for (size_t i=0;i<obs.m_readings.size();i++) { //Push_back Temperature Sensor_array[0xFFFF].push_back( obs.m_readings[i].temperature ); if (f_log) fprintf(f_log,"%f ", obs.m_readings[i].temperature ); //E-Nose Sensor's Data for (size_t j=0;j<obs.m_readings[i].sensorTypes.size();j++) { if ( j<(obs.m_readings[i].sensorTypes.size() -1) ){ //Not the las item if( obs.m_readings[i].sensorTypes[j]==obs.m_readings[i].sensorTypes[j+1] ){ Sensor_array[ obs.m_readings[i].sensorTypes[j] ].push_back(obs.m_readings[i].readingsVoltage[j+1]-obs.m_readings[i].readingsVoltage[j]); if (f_log) fprintf(f_log,"%f ",obs.m_readings[i].readingsVoltage[j+1]-obs.m_readings[i].readingsVoltage[j] ); j++; //skip the next sensor as it has been used already. }else{ Sensor_array[ obs.m_readings[i].sensorTypes[j] ].push_back( obs.m_readings[i].readingsVoltage[j] ); if (f_log) fprintf(f_log,"%f ",obs.m_readings[i].readingsVoltage[j]); //To file } }else{ Sensor_array[ obs.m_readings[i].sensorTypes[j] ].push_back( obs.m_readings[i].readingsVoltage[j] ); if (f_log) fprintf(f_log,"%f ",obs.m_readings[i].readingsVoltage[j]); //To file } } } if (f_log) fprintf(f_log,"\n"); //Plotting information plot_diff_windows(Sensor_array,together); //Generate the Baseline add_baseline(Sensor_array[0x0000]); } //end-if getObs mrpt::system::sleep(40); }//end-While clear_memory(); if (f_log) os::fclose(f_log); } catch(std::exception &e) { cerr << e.what() << endl; return -1; } return 0; }
int main() { try { CBoardENoses eNoses; std::string firmVers; CObservationGasSensors obs; FILE *f_log = os::fopen("./log.txt","wt"); TTimeStamp timStart = mrpt::system::getCurrentTime(); // Load configuration: if (mrpt::system::fileExists("./CONFIG_eNoses.ini")) { cout << "Using configuration from './CONFIG_eNoses.ini'" << endl; CConfigFile conf("./CONFIG_eNoses.ini"); eNoses.loadConfig( conf, "eNoses" ); } else { cout << "Configuration file (ini) cannot be found" << endl; return -1; } ASSERT_( mrpt::system::fileExists("CONFIG_eNoses.ini") ); CConfigFile conf("./CONFIG_eNoses.ini"); eNoses.loadConfig( conf, "eNoses" ); /*if (!eNoses.queryFirmwareVersion( firmVers ) ) { printf("Error!!\n"); return -1; } else std::cout << "FIRMWARE VERSION: " << firmVers << std::endl; */ while ( !mrpt::system::os::kbhit() ) { if (! eNoses.getObservation( obs ) ) { cout << "- Could not retrieve an observation from the eNoses..." << endl; mrpt::system::sleep(25); } else { cout << obs.m_readings.size() << " eNoses:" << endl; if (f_log) fprintf(f_log,"%f ", mrpt::system::timeDifference(timStart,obs.timestamp) ); for (size_t i=0;i<obs.m_readings.size();i++) { //E-Nose Pose printf("#%u (%.02f,%.02f,%.02f): ",(unsigned int)i,obs.m_readings[i].eNosePoseOnTheRobot.x,obs.m_readings[i].eNosePoseOnTheRobot.y,obs.m_readings[i].eNosePoseOnTheRobot.z); //E-Nose Sensor's Data for (size_t j=0;j<obs.m_readings[i].sensorTypes.size();j++) { //printf("%04X: %.03fV ", obs.m_readings[i].sensorTypes[j], obs.m_readings[i].readingsVoltage[j] ); if ( j<(obs.m_readings[i].sensorTypes.size()-1) ){ if( obs.m_readings[i].sensorTypes[j]==obs.m_readings[i].sensorTypes[j+1] ){ printf("\n%04X: %.03fV \n ", obs.m_readings[i].sensorTypes[j], obs.m_readings[i].readingsVoltage[j]-obs.m_readings[i].readingsVoltage[j+1] ); j++; //skip the next sensor as it has been used already. }else{ printf("\n%04X: %.03fV \n ", obs.m_readings[i].sensorTypes[j], obs.m_readings[i].readingsVoltage[j] ); } }else{ printf("\n%04X: %.03fV \n ", obs.m_readings[i].sensorTypes[j], obs.m_readings[i].readingsVoltage[j] ); } if (f_log) fprintf(f_log,"%f ",obs.m_readings[i].readingsVoltage[j]); } printf("\nTemp: "); if (obs.m_readings[i].hasTemperature) printf("%.04f C",obs.m_readings[i].temperature); else printf("NO"); printf("\n"); printf("-----------------------------------------\n"); } if (f_log) fprintf(f_log,"\n"); mrpt::system::sleep(5); } } if (f_log) os::fclose(f_log); } catch(std::exception &e) { cerr << e.what() << endl; return -1; } return 0; }