Files
handleaiuinew/HanddleAI/HandleAiUi-new/back/backEndManager.cpp
T
2024-06-04 00:34:41 +08:00

89 lines
2.5 KiB
C++

#include <backEndManager.h>
#include <triggerManager.h>
#include <cameraManager.h>
#include <jsonParsing.h>
#include <handleAi/handleAiModel.h>
#include <future>
#include <backEndManager.h>
#include <back/imgSaveThreadManager.h>
backEndManager::backEndManager()
{
_jsonConfiguration = new jsonConfiguration();
_detDataManager = new detDataManager();
_handleAiModelManager = new handleAiModelManager();
_imgSaveThreadManager = new imgSaveThreadManager(this);
_triggerManager = new triggerManager();
_cameraManager = new cameraManager();
_threadManager = new threadManager();
}
void backEndManager::run()
{
if(isInit == ReInit)
{
if (_cameraManager != nullptr)
delete _cameraManager;
if (_triggerManager != nullptr)
delete _triggerManager;
_triggerManager = new triggerManager();
_cameraManager = new cameraManager();
isInit = NotInit;
}
if(isInit == NotInit)
{
//µÈ´ý³õʼ»¯
std::vector<std::future<void>> futures;//Òì²½³õʼ»¯
futures.push_back(std::async(std::launch::async, &threadManager::initialization, _threadManager, this));
futures.push_back(std::async(std::launch::async, &triggerManager::initialization, _triggerManager, this));
futures.push_back(std::async(std::launch::async, &cameraManager::initialization, _cameraManager, this));
futures.push_back(std::async(std::launch::async, &sqlManager::initialization, &_sqlManager, sqlDefaultDatabasePath,true));
futures.push_back(std::async(std::launch::async, &handleAiModelManager::initialization, _handleAiModelManager,this));
for (auto& future : futures) {
future.wait();
}
_imgSaveThreadManager->start();
_triggerManager->start();
if (_threadManager->initFlag == true)
{
_threadManager->start();
}
if (_triggerManager->initFlag == true && _cameraManager->initFlag == true)
{
isInit = InitOK;
_triggerManager->start();
_cameraManager->start();
}
else
{
isInit = InitFailure;
}
sendInitFinished(isInit);
}
}
backEndManager::~backEndManager()
{
_triggerManager->stop();
_cameraManager->stop();
_threadManager->stop();
delete _cameraManager;
delete _threadManager;
delete _triggerManager;
delete _jsonConfiguration;
delete _detDataManager;
}
void backEndManager::startManualDetSlot(cv::Mat* mats, int algoIndex)
{
std::shared_ptr <detData> data = _detDataManager->insertDetData("Manual", "Manual", 0, 1);
data->oriImgMutex.lock();
data->oriImgs.push_back(mats->clone());
data->oriImgMutex.unlock();
delete mats;
_threadManager->addTask(data);//Ìí¼ÓÈÎÎñ
}