main.cpp 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #include "UVCGrabber/UVCDeviceManager.h"
  2. // #include "RTSPGrabber/InfraredManager.hpp"
  3. #include "MppDecoder/MppManager.h"
  4. #include "AIManager/RKNNManager.h"
  5. #include "LogRecorder/LogOutput.h"
  6. #include "DataManager/DataManager.h"
  7. #include "DataManager/DataPackage.h"
  8. #include "ImageTest/ImageTest.h"
  9. #include <stdexcept>
  10. #include <iostream>
  11. #include <json.hpp>
  12. #define DEVICE_NUM 3
  13. int main(int argc, char **argv)
  14. {
  15. // set usbfs memory to 64MB
  16. std::system("echo 64 > /sys/module/usbcore/parameters/usbfs_memory_mb");
  17. std::system("rm ./TimeLog.txt");
  18. // use json to read config file
  19. nlohmann::json config;
  20. try
  21. {
  22. std::ifstream config_file("./configure/config.json");
  23. config_file >> config;
  24. config_file.close();
  25. }
  26. catch (std::exception &e)
  27. {
  28. std::cerr << "Error reading config file: " << e.what() << std::endl;
  29. return 1;
  30. }
  31. UsbTest::TimeRecorder::getInstance().init();
  32. UsbTest::GlobalResolutionTimer::getInstance().start();
  33. UsbTest::SimulateTrigger::getInstance().startTrigger();
  34. LogConfiguration LogConfig; // 日志结构体
  35. LogConfig.FromFile("./configure/log.json");
  36. LOG_INIT("UsbDevice", LogConfig);
  37. if (OmniLoger::CLoger::get_instance().log_sink != nullptr)
  38. {
  39. std::cout << "Log initialized successfully" << std::endl;
  40. OmniLoger::CLoger::get_instance().log_sink->error("Error occurred during initialization");
  41. }
  42. // Initialize the UVC manager
  43. UVCManager::getInstance().init();
  44. MppManager::getInstance().addMppDecode();
  45. RKNNManager::getInstance().setGrpcServerAddress(config["grpc_server_address"]);
  46. RKNNManager::getInstance().addRknnTask(config["rknn_model_path"]);
  47. // Start all streaming
  48. UVCManager::getInstance().startAllStreaming();
  49. // Wait for the user to press a key
  50. std::cin.get();
  51. RKNNManager::getInstance().StopProcessData();
  52. // Stop all streaming
  53. UVCManager::getInstance().stopAllStreaming();
  54. return 0;
  55. }