1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- #include "UVCGrabber/UVCDeviceManager.h"
- // #include "RTSPGrabber/InfraredManager.hpp"
- #include "MppDecoder/MppManager.h"
- #include "AIManager/RKNNManager.h"
- #include "LogRecorder/LogOutput.h"
- #include "DataManager/DataManager.h"
- #include "DataManager/DataPackage.h"
- #include "ImageTest/ImageTest.h"
- #include <stdexcept>
- #include <iostream>
- #include <thread>
- #include <json.hpp>
- #define DEVICE_NUM 3
- int main(int argc, char **argv)
- {
- // set usbfs memory to 64MB
- std::system("echo 64 > /sys/module/usbcore/parameters/usbfs_memory_mb");
- std::system("rm ./TimeLog.txt");
- // use json to read config file
- nlohmann::json config;
- try
- {
- std::ifstream config_file("./configure/config.json");
- config_file >> config;
- config_file.close();
- }
- catch (std::exception &e)
- {
- std::cerr << "Error reading config file: " << e.what() << std::endl;
- return 1;
- }
- UsbTest::TimeRecorder::getInstance().init();
- UsbTest::GlobalResolutionTimer::getInstance().start();
- UsbTest::SimulateTrigger::getInstance().startTrigger();
- LogConfiguration LogConfig; // 日志结构体
- LogConfig.FromFile("./configure/log.json");
- LOG_INIT("UsbDevice", LogConfig);
- if (OmniLoger::CLoger::get_instance().log_sink != nullptr)
- {
- std::cout << "Log initialized successfully" << std::endl;
- //OmniLoger::CLoger::get_instance().log_sink->error("Error occurred during initialization");
- }
- // Initialize the UVC manager
- UVCManager::getInstance().init(int(config["usb_grab_waiting_time"]));
- UVCManager::getInstance().setDeviceNumber(0, config["usb_device_number"][0]);
- UVCManager::getInstance().setDeviceNumber(1, config["usb_device_number"][1]);
- UVCManager::getInstance().setDeviceNumber(2, config["usb_device_number"][2]);
- MppManager::getInstance().addMppDecode();
- RKNNManager::getInstance().setGrpcServerAddress(config["grpc_server_address"]);
- RKNNManager::getInstance().addRknnTask(config["rknn_model_path"]);
- // Start all streaming
- UVCManager::getInstance().startAllStreaming();
- OmniLoger::CLoger::get_instance().log_sink->info("All streaming started successfully");
- // Wait for the user to press a key
- while(true){
- std::this_thread::sleep_for(std::chrono::seconds(1));
- }
- // std::cin.get();
- std::cout << "Stopping all streaming..." << std::endl;
- RKNNManager::getInstance().StopProcessData();
- // Stop all streaming
- UVCManager::getInstance().stopAllStreaming();
- return 0;
- }
|