Files
ds-628/BaseModules/Hd_LogicDll_module/Hd_LogicDll_module.cpp
T
2024-09-27 14:31:22 +08:00

260 lines
7.1 KiB
C++

#include "Hd_LogicDll_module.h"
Hd_LogicDll_module* create()
{
qDebug() << __FUNCTION__ << " line:" << __LINE__ << "Hd_CameraModule_readImage create success!";
return new Hd_LogicDll_module;
}
void destory(Hd_LogicDll_module* ptr)
{
if (ptr)
{
delete ptr;
ptr = nullptr;
}
qDebug() << __FUNCTION__ << " line:" << __LINE__ << "Hd_CameraModule_readImage destory success!";
}
bool ifRunLogicDll = false;
//类创建
Hd_LogicDll_module::Hd_LogicDll_module()
{
my_task = new Logic_processtask(this);
sendImgStructMutex = new QMutex;
ifRunLogicDll = true;
Sleep(10);
//无法用信号槽传递图像!!
//connect(my_task, SIGNAL(LsendImage(QString, cv::Mat)), this, SLOT(processtask_sendImage(QString, cv::Mat))); // 传递图片
connect(my_task, SIGNAL(LwriteData(QString, QString, QString, QByteArray)), this, SLOT(processtask_writeData(QString, QString, QString, QByteArray)));// 传递数据
connect(my_task, SIGNAL(sendTcpStatus(bool)), this, SLOT(processtask_sendTcpStatus(bool)));
connect(my_task, SIGNAL(cameraDisconnect(QString, bool)), this, SLOT(processtask_cameraDisconnect(QString, bool)));
QFuture<void>muf = QtConcurrent::run(this, &Hd_LogicDll_module::check_LsendImgStruct);
}
void Hd_LogicDll_module::check_LsendImgStruct()
{
while (ifRunLogicDll)
{
QQueue< LsendImgStruct> myL;
//if (my_task->Lqueue_sendImgStruct.size() > 0)
while (my_task->getImageData(myL))
{
QMutexLocker locker(sendImgStructMutex); // 加锁
/*sendImgStruct mS;
mS.send_Mat = myL.send_Mat;
mS.cameraKey_index = myL.cameraKey_index;*/
////堆积了,只显示最新的
//for (int i = 0; i < queue_sendImgStruct.size(); i++)
// if (myL.cameraKey_index == queue_sendImgStruct[i].cameraKey_index)
// {
// queue_sendImgStruct.removeAt(i);
// break;
// }
for (int i = 0; i < myL.size(); i++)
{
sendImgStruct mS;
mS.send_Mat = myL[i].send_Mat;
mS.cameraKey_index = myL[i].cameraKey_index;
queue_sendImgStruct.enqueue(mS);
}
myL.clear();
}
Sleep(10);
}
}
bool Hd_LogicDll_module::get_sendImgStruct(QQueue< sendImgStruct>& my_sendImgStruct)
{
QMutexLocker locker(sendImgStructMutex);
if (queue_sendImgStruct.size() > 0)
{
my_sendImgStruct.append(queue_sendImgStruct);// .dequeue();
queue_sendImgStruct.clear();
return true;
}
return false;
}
Hd_LogicDll_module::~Hd_LogicDll_module()
{
ifRunLogicDll = false;
Sleep(100);
if (my_task) {
delete my_task;
my_task = nullptr;
}
qDebug() << __FUNCTION__ << "line:" << __LINE__ << " delete success!";
}
QString currPath;
QString json_cfg_file_path;
QJsonObject m_jsonObj;
//封装为dll,里面读写文件无法实现
//QJsonObject Hd_LogicDll_module::loadJsonCfg(QString)
//{
// QJsonObject json_object;
// try
// {
// QJsonParseError jsonError;
// if (json_cfg_file_path.isEmpty())
// {
// qCritical() << __FUNCTION__ << " line:" << __LINE__ << " JsonPath is null!";
// return json_object;
// }
//
// QFile JsonFile;
// JsonFile.setFileName(json_cfg_file_path);
// if (!JsonFile.isReadable())
// {
// qCritical() << __FUNCTION__ << " line:" << __LINE__ << " camera_cfg.json not isReadable!";
// return json_object;
// }
// JsonFile.open(QIODevice::ReadOnly);
//
// QByteArray m_Byte = JsonFile.readAll();
// if (m_Byte.isEmpty())
// {
// qDebug() << __FUNCTION__ << " line:" << __LINE__ << json_cfg_file_path + " Content is empty";
// JsonFile.close();
// return json_object;
// }
//
// QJsonDocument jsonDocument(QJsonDocument::fromJson(m_Byte, &jsonError));
//
// if (!jsonDocument.isNull() && jsonError.error == QJsonParseError::NoError)
// {
// if (jsonDocument.isObject())
// {
// json_object = jsonDocument.object();
// JsonFile.close();
// return json_object;
// }
// }
// else
// {
// qCritical() << __FUNCTION__ << " line:" << __LINE__ << json_cfg_file_path + " is error!";
// }
// JsonFile.close();
//
// }
// catch (QString ev)
// {
// qCritical() << __FUNCTION__ << " line:" << __LINE__ << " ev:" << ev;
// }
// return json_object;
//}
bool Hd_LogicDll_module::setJsonObject(QJsonObject m_jsonObj)
{
qDebug() << __FUNCTION__ << " line: " << __LINE__ << " start! ";
QDir dir = QApplication::applicationDirPath();
currPath = dir.path();
json_cfg_file_path = currPath + "/config/camera_cfg.json";
/*m_jsonObj = loadJsonCfg(json_cfg_file_path);
if (m_jsonObj.isEmpty())
{
qCritical() << __FUNCTION__ << " line:" << __LINE__ << " m_jsonObj is null";
return false;
}*/
my_task->setJsonPath(currPath);
if (my_task)
my_task->setJsonObject(m_jsonObj);
else
return false;
return true;
}
bool Hd_LogicDll_module::checkJsonObject(QJsonObject m_jsonObj, QString &errMessage)
{
return my_task->check_cmeraCfg(m_jsonObj, errMessage);
}
bool Hd_LogicDll_module::stopTask()
{
if (my_task)
return my_task->stopTask();
else
return false;
return true;
}
bool Hd_LogicDll_module::initTask()
{
if (my_task)
return my_task->initTask();
else
return false;
return true;
}
bool Hd_LogicDll_module::startTask()
{
if (my_task)
return my_task->startTask();
else
return false;
return true;
}
bool Hd_LogicDll_module::exitTask()
{
QMutexLocker locker(sendImgStructMutex);
queue_sendImgStruct.clear();
if (my_task)
{
my_task->disconnect();
return my_task->exitTask();
}
else
return false;
return true;
}
bool Hd_LogicDll_module::restartTask()
{
if (my_task)
return my_task->restartTask();
else
return false;
return true;
}
bool Hd_LogicDll_module::sendPLC(QString cmd)
{
if (my_task)
return my_task->sendPLC(cmd);
else
return false;
return true;
}
bool Hd_LogicDll_module::reLoadJsonSetParameter(QStringList moduleKeyList)
{
if (my_task)
return my_task->reLoadJsonSetParameter(moduleKeyList);
else
return false;
return true;
}
void Hd_LogicDll_module::processtask_sendTcpStatus(bool flag)
{
emit Logic_sendTcpStatus(flag);
}
void Hd_LogicDll_module::processtask_writeData(QString key, QString cameraName, QString snInfo, QByteArray byte)
{
emit Logic_writeData(key, cameraName, snInfo, byte);
}
void Hd_LogicDll_module::processtask_cameraDisconnect(QString msg, bool status)
{
emit Logic_cameraDisconnect(msg, status);
}
void Hd_LogicDll_module::processtask_CommunicationDisconnect(QString msg, bool status)
{
emit Logic_CommunicationDisconnect(msg, status);
}