main.cpp 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. #include <QCoreApplication>
  2. #include <iostream>
  3. #include "cameraobjectarray.pb.h"
  4. #include "radarobjectarray.pb.h"
  5. #include "objectarray.pb.h"
  6. #include <QMutex>
  7. #include <memory>
  8. #include "modulecomm.h"
  9. #include "data_manager.h"
  10. static QMutex gMutex;
  11. typedef iv::radar::radarobjectarray RadarDataType;
  12. typedef iv::lidar::objectarray LidarDataType;
  13. typedef iv::vision::cameraobjectarray CameraDataType;
  14. typedef std::chrono::system_clock::time_point TimeType;
  15. typedef std::function<void(RadarDataType&, LidarDataType&,CameraDataType&)> DataCallback;
  16. void data_callback(RadarDataType& radarobjv , LidarDataType& lidarobjv,CameraDataType& cameraobjv);
  17. using namespace std;
  18. //iv::vision::cameraobjectarray* cameraobjvec = new iv::vision::cameraobjectarray();
  19. //iv::radar::radarobjectarray* radarobjvec = new iv::radar::radarobjectarray();
  20. //iv::lidar::objectarray* lidarobjvec = new iv::lidar::objectarray();
  21. iv::DataManager data_manager;
  22. void Listenesrfront(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname)
  23. {
  24. iv::radar::radarobjectarray radarobj;
  25. if(nSize<1)return;
  26. if(false == radarobj.ParseFromArray(strdata,nSize))
  27. {
  28. std::cout<<"PecerptionShow Listenesrfront fail."<<std::endl;
  29. return;
  30. }
  31. else{
  32. //std::cout<<"srfront byte size: "<<radarobjvec.ByteSize()<<std::endl;
  33. }
  34. gMutex.lock();
  35. data_manager.SetRadar(radarobj);
  36. gMutex.unlock();
  37. }
  38. void Listencamera(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname)
  39. {
  40. if(nSize<1)return;
  41. iv::vision::cameraobjectarray cameraobj;
  42. if(false == cameraobj.ParseFromArray(strdata, nSize))
  43. {
  44. // std::cout<<"ccccccccccc Listencamera fail."<<std::endl;
  45. return;
  46. }
  47. else{
  48. //std::cout<<"camera byte size: "<<cameraobjvec.ByteSize()<<std::endl;
  49. }
  50. gMutex.lock();
  51. data_manager.SetCamera(cameraobj);
  52. std::cout<<"camera: "<<cameraobj.mstime()<<std::endl;
  53. gMutex.unlock();
  54. }
  55. void Listenlidarcnndetect(const char * strdata,const unsigned int nSize,const unsigned int index,const QDateTime * dt,const char * strmemname)
  56. {
  57. std::cout<<"111111111111"<<std::endl;
  58. iv::lidar::objectarray lidarobj;
  59. if(nSize<1)return;
  60. if(false == lidarobj.ParseFromArray(strdata,nSize))
  61. {
  62. std::cout<<"PecerptionShow Listenesrfront fail."<<std::endl;
  63. return;
  64. }
  65. gMutex.lock();
  66. data_manager.SetLidar(lidarobj);
  67. std::cout<<"lidar :"<<lidarobj.timestamp()<<std::endl; gMutex.unlock();
  68. }
  69. void data_callback(RadarDataType& radarobjv , LidarDataType& lidarobjv,CameraDataType& cameraobjv)
  70. {
  71. if((radarobjv.ByteSize() == 0) || (cameraobjv.ByteSize() ==0) || (lidarobjv.ByteSize() ==0)) return;
  72. std::cout<<"radar time: "<<radarobjv.mstime()<<std::endl;
  73. std::cout<<"lidar time: "<<lidarobjv.timestamp()<<std::endl;
  74. std::cout<<"camera time: "<<cameraobjv.mstime()<<std::endl;
  75. }
  76. int main(int argc, char *argv[])
  77. {
  78. QCoreApplication a(argc, argv);
  79. data_manager;
  80. data_manager.init();
  81. data_manager.SetDataCallback(data_callback);
  82. data_manager.Ready();
  83. void *gpa;
  84. gpa = iv::modulecomm::RegisterRecv("radar0",Listenesrfront);
  85. gpa = iv::modulecomm::RegisterRecv("camera_output",Listencamera);
  86. gpa = iv::modulecomm::RegisterRecv("lidar_track",Listenlidarcnndetect);
  87. return a.exec();
  88. }