Files
eUi/src/Core/detProcess.hpp
T

132 lines
4.7 KiB
C++
Raw Normal View History

#include <qthread.h>
#include <detData.h>
2025-03-28 18:33:43 +08:00
#include <imgSaveThreadManager.h>
//#include <appCore.hpp>
//#include <appConfig.h>
//#include <lightSource.hpp>
//#include <cameraManager.h>
//#include <manualDetThread.h>
//#include <triggerManager.h>
//#include <simpleSiemensTcp.hpp>
//#include <summaryData.hpp>
//#include <pluginManager.h>
//#include <sql/qSqlBase.hpp>
//#include <mission/952-11.hpp>
//#include <mission/952-15-H.h>
class detProcess : public QThread
{
public:
2025-03-28 18:33:43 +08:00
detDataManager _detDataManager;//检测中的数据 不需要初始化
imgSaveThreadManager _imgSaveThreadManager;//存图线程 不需要初始化
triggerManager _triggerManager;//触发器
handleAiModelManager _handleAiModelManager;//模型
detProcess()
{
//_threadManager.initialization(this);
//_manualDetThread.initialization(this);
//_cameraManager.initialization();
//_triggerManager.initialization(this);
}
2025-03-28 18:33:43 +08:00
bool waitrForInitResult(serviceModule* ptr)
{
int overTimeMs = 300000;
int timecnt = 0;
while (timecnt <= overTimeMs)
{
if (ptr->status != NotInit)
break;
QThread::msleep(100);
timecnt+=100;
}
if (timecnt > overTimeMs)
return false;
2025-06-01 16:36:42 +08:00
2025-03-28 18:33:43 +08:00
if (ptr->status == InitFailure)
return false;
return true;
}
//cameraManager _cameraManager;//相机
////lightSourceManager _lightSourceManager;//光源
// summaryData* _summaryData;// 汇总数据
// autoDelete* autoDeleteThread;
// SQLiteDB* dataBase;
// //hardwareMonitor _hardwareMonitor;//硬件监控 CPU 内存
// //相机
// camera* _2dCamera = nullptr, *_3dCamera = nullptr;
// M952_15_H currentMission;
//初始化
void run()
{
#if 0
dataBase;// = new SQLiteDB("generalDatabase");
_cameraManager.start();
_handleAiModelManager.start();
//_lightSourceManager.start();
_triggerManager.start();
QThread::msleep(1000);
// _heartbeatThread = new heartbeatThread(&_triggerManager, _core._appConfig._triggerStruct.heartCmd);
autoDeleteThread =
new autoDelete({ _core._appConfig.oriImgSavePath,_core._appConfig .resImgSavePath},
autoDelete::sizeOverOrDayBefore, 3600);
_summaryData = new summaryData(&_triggerManager);
bool res1 = waitrForInitResult(&_cameraManager);
bool res2 = waitrForInitResult(&_handleAiModelManager);
bool res3 = waitrForInitResult(&_triggerManager);
std::cout << "_cameraManager-initReuslt-->" << std::to_string(res1) << "\n"
<< "_handleAiModelManager-initReuslt-->" << std::to_string(res2) << "\n"
<< "_triggerManager-initReuslt-->" << std::to_string(res3) << "\n" << std::endl;
if (res1 == true && res2 == true && res3 == true)
{
currentMission.init(&_cameraManager,
&_triggerManager,
&_detDataManager,
&_threadManager,
_summaryData,
dataBase);
_threadManager.registerResultHandleCallback([this](std::shared_ptr<detData>data) {detectionResultHandle(data); });
_threadManager.registerProcessAlgoCallback
([this](std::shared_ptr<detData>data, handleAiModelManager* _handleAiModelManager) {return currentMission.processAlgo(data, _handleAiModelManager);});
emit _core._qtFunc.sendInitFinished(InitOK);
}
else
emit _core._qtFunc.sendInitFinished(InitFailure);
#endif
}
//通用的结果处理
void detectionResultHandle(std::shared_ptr<detData>data)
{
#if 0
//ct计算以及发送到界面
auto totalCt = std::chrono::duration_cast<std::chrono::milliseconds>(data->algoEndTime - data->algoStartTime);
qDebug() << QString::fromStdString(data->cameraKeyName) << "CT<<<" << totalCt.count() << "MS";
data->sqlVec.push_back({ "SN",data->SNcode });
data->sqlVec.push_back({ "totalCt",std::to_string(totalCt.count())+"ms"});
emit _core._qtFunc.addCtData(data->algoThreadIndex, totalCt.count());
//SQL
//std::vector<sqlData> sqlDatas;
//for (auto sqlData : data->sqlVec)
// sqlDatas.push_back({ sqlData.first, sqlData.second });
// _core._appConfig._sqlManager.addData(data->SNcode, sqlDatas);
//写入plc
for (auto writeBackStr : data->writeBackData)
_triggerManager.sendFinsMsg(writeBackStr);
//储存结果图
std::async(std::launch::async, &imgSaveThreadManager::saveRes, &_imgSaveThreadManager, data);
//删除 不再持有
detDataManager* dManager = data->dManager;
data->dManager->deleteDetData(data->timeCode);
#endif
}
2025-03-28 18:33:43 +08:00
private:
public slots:
};
#pragma once