#include #include #include #include #include #include "modulecomm.h" #include "xmlparam.h" #include "ivlog.h" #include "ivfault.h" #include "ivversion.h" #include "ivbacktrace.h" iv::Ivlog * givlog; iv::Ivfault * givfault; #include "canmsg.pb.h" #include "canraw.pb.h" #include "decodechassis.h" void * gpa ; QTime gTime; namespace iv { enum VehicleTypeDef {GE3,VV7,MIDCAR,PROBLUE,MIDBUS,HAPO,UNKNOWN, YUHESEN,SHENLAN,SHENLAN_CANFD} gVehicleType; //车辆类型 } int gnRadarState = 0; /** * @brief Listencan0 * Listen CAN Message * @param strdata pointer to module communication buffer * @param nSize Message Size * @param index Message index * @param dt Share DateTime * @param strmemname Message Name of Share * @retval **/ void Listencan0(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname) { (void)index; (void)dt; (void)strmemname; if(nSize<1)return; iv::can::canmsg xmsg; if(false == xmsg.ParseFromArray(strdata,nSize)) { std::cout<<"esr Listencan0 fail."< -100)gnRadarState--; if(gnRadarState > 0) { givfault->SetFaultState(0,0,"OK"); } else { if(gnRadarState > -100) { givfault->SetFaultState(1,1,"无底盘数据"); } else { givfault->SetFaultState(1,2,"底盘无响应"); } } } } int main(int argc, char *argv[]) { RegisterIVBackTrace(); showversion("detection_chassis"); QCoreApplication a(argc, argv); gTime.start(); QString strpath = QCoreApplication::applicationDirPath(); if(argc < 2) strpath = strpath + "/detection_chassis.xml"; else strpath = argv[1]; std::cout<SetFaultState(1,1,"初始化"); givlog->info("Initialized"); gpa = iv::modulecomm::RegisterSend(strchassismsgname.data(),1000,1); void * pa = iv::modulecomm::RegisterRecv(strmemcan.data(),Listencan0); std::thread threadfault(threadstate); return a.exec(); }