260 lines
7.2 KiB
C++
260 lines
7.2 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(&dManager,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 byteArray)
|
|
{
|
|
emit Logic_writeData(key, cameraName, snInfo, byteArray);
|
|
}
|
|
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);
|
|
} |