#include #include #include #include #include #include #include "modulecomm.h" #include "xmlparam.h" #include "ivlog.h" #include "ivfault.h" iv::Ivlog * givlog; iv::Ivfault * givfault; #include "ultrasonic.pb.h" #include "ultraarea.pb.h" iv::ultrasonic::ultrasonic gobj; void * gpa , * gpb; QElapsedTimer gTime; int min(int ids[],int len) { int i = 1; int* p = &ids[0]; for(; i < len; i++) { if (*p>ids[i]){ p = &ids[i]; } } return *p; } void ProcessData(iv::ultrasonic::ultrasonic xmsg) { std::cout<CopyFrom(area); }else{ int tmp[2]; tmp[0] = xmsg.sigobjdist_flmiddle(); tmp[1] = xmsg.sigobjdist_frmiddle(); int min_dist = min(tmp,2); iv::ultrasonic::Area area; area.set_id(1); area.set_dist(min_dist*1.e-3); iv::ultrasonic::Area * p = areas.add_area(); p->CopyFrom(area); } if(xmsg.sigsensor_front_rc()==0 && xmsg.sigsensor_front_rs()==0 && xmsg.sigsensor_rear_rs()==0 && xmsg.sigsensor_rear_rc()==0){ iv::ultrasonic::Area area; area.set_id(2); area.set_valid(false); iv::ultrasonic::Area * p = areas.add_area(); p->CopyFrom(area); }else{ int tmp[4]; tmp[0] = xmsg.sigobjdist_frcorner(); tmp[1] = xmsg.sigobjdist_frside(); tmp[2] = xmsg.sigobjdist_rrside(); tmp[3] = xmsg.sigobjdist_rrcorner(); int min_dist = min(tmp,4); iv::ultrasonic::Area area; area.set_id(2); area.set_dist(min_dist*1.e-3); iv::ultrasonic::Area * p = areas.add_area(); p->CopyFrom(area); } if(xmsg.sigsensor_rear_rm()==0 && xmsg.sigsensor_rear_lm()==0){ iv::ultrasonic::Area area; area.set_id(3); area.set_valid(false); iv::ultrasonic::Area * p = areas.add_area(); p->CopyFrom(area); }else{ int tmp[2]; tmp[0] = xmsg.sigobjdist_rrmiddle(); tmp[1] = xmsg.sigobjdist_rlmiddle(); int min_dist = min(tmp,2); iv::ultrasonic::Area area; area.set_id(3); area.set_dist(min_dist*1.e-3); iv::ultrasonic::Area * p = areas.add_area(); p->CopyFrom(area); } if(xmsg.sigsensor_rear_lc()==0 && xmsg.sigsensor_rear_ls()==0 && xmsg.sigsensor_front_ls()==0 && xmsg.sigsensor_front_lc()==0){ iv::ultrasonic::Area area; area.set_id(4); area.set_valid(false); iv::ultrasonic::Area * p = areas.add_area(); p->CopyFrom(area); }else{ int tmp[4]; tmp[0] = xmsg.sigobjdist_rlcorner(); tmp[1] = xmsg.sigobjdist_rlside(); tmp[2] = xmsg.sigobjdist_flside(); tmp[3] = xmsg.sigobjdist_flcorner(); int min_dist = min(tmp,4); iv::ultrasonic::Area area; area.set_id(4); area.set_dist(min_dist*1.e-3); iv::ultrasonic::Area * p = areas.add_area(); p->CopyFrom(area); } std::cout<<"---------- "<verbose("vbox","rec rsu data"); if(false == xmsg.ParseFromArray(strdata,nSize)) { std::cout<<"Listenultra fail."< -100)gnRadarState--; // if(gnRadarState > 0) // { // givfault->SetFaultState(0,0,"OK"); // } // else // { // if(gnRadarState > -100) // { // givfault->SetFaultState(1,1,"无CAN数据"); // } // else // { // givfault->SetFaultState(2,2,"无CAN数据"); // } // } } } int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); std::string strmemultra = "sonar"; std::string strmemsend = "ultra_area"; givlog = new iv::Ivlog(strmemultra.data()); givfault = new iv::Ivfault(strmemultra.data()); givfault->SetFaultState(1,1,"初始化"); givlog->info("ultra","Initialized"); gpb = iv::modulecomm::RegisterSend(strmemsend.data(),100000,1); iv::modulecomm::RegisterRecv(strmemultra.data(), ListenUltra); std::thread threadfault(threadstate); return a.exec(); }