main.cpp 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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 "ThreadGuardian/ThreadGuardian.h"
  9. #include "ImageTest/ImageTest.h"
  10. #include <stdexcept>
  11. #include <iostream>
  12. #include <thread>
  13. #include <json.hpp>
  14. #define DEVICE_NUM 3
  15. int main(int argc, char **argv)
  16. {
  17. // set usbfs memory to 64MB
  18. std::system("echo 64 > /sys/module/usbcore/parameters/usbfs_memory_mb");
  19. std::system("rm ./TimeLog.txt");
  20. // use json to read config file
  21. nlohmann::json config;
  22. try
  23. {
  24. std::ifstream config_file("./configure/config.json");
  25. config_file >> config;
  26. config_file.close();
  27. }
  28. catch (std::exception &e)
  29. {
  30. std::cerr << "Error reading config file: " << e.what() << std::endl;
  31. return 1;
  32. }
  33. UsbTest::TimeRecorder::getInstance().init();
  34. UsbTest::GlobalResolutionTimer::getInstance().start();
  35. UsbTest::SimulateTrigger::getInstance().startTrigger();
  36. LogConfiguration LogConfig; // 日志结构体
  37. LogConfig.FromFile("./configure/log.json");
  38. LOG_INIT("UsbDevice", LogConfig);
  39. if (OmniLoger::CLoger::get_instance().log_sink != nullptr)
  40. {
  41. std::cout << "Log initialized successfully" << std::endl;
  42. // OmniLoger::CLoger::get_instance().log_sink->error("Error occurred during initialization");
  43. }
  44. // Initialize the UVC manager
  45. UVCManager::getInstance().init(int(config["usb_grab_waiting_time"]));
  46. ThreadGuardian::getInstance().startMonitoring();
  47. UVCManager::getInstance().setDeviceNumber(0, config["usb_device_number"][0]);
  48. UVCManager::getInstance().setDeviceNumber(1, config["usb_device_number"][1]);
  49. UVCManager::getInstance().setDeviceNumber(2, config["usb_device_number"][2]);
  50. MppManager::getInstance().addMppDecode();
  51. RKNNManager::getInstance().setGrpcServerAddress(config["grpc_server_address"]);
  52. RKNNManager::getInstance().addRknnTask(config["rknn_model_path"]);
  53. // Start all streaming
  54. UVCManager::getInstance().startAllStreaming();
  55. OmniLoger::CLoger::get_instance().log_sink->info("All streaming started successfully");
  56. // Wait for the user to press a key
  57. while (true)
  58. {
  59. std::this_thread::sleep_for(std::chrono::seconds(1));
  60. }
  61. // std::cin.get();
  62. std::cout << "Stopping all streaming..." << std::endl;
  63. RKNNManager::getInstance().StopProcessData();
  64. // Stop all streaming
  65. UVCManager::getInstance().stopAllStreaming();
  66. return 0;
  67. }