#include "WorkThread.h" #include "datavar.h" #include "base64.h" #include "client.h" #include #include "container/threadsafequeue.h" GrabThread::GrabThread() { //qRegisterMetaType(" HalconCpp::HObject&"); m_stopFlag = false; } GrabThread::~GrabThread() { if ( isRunning()) { m_stopFlag = true; while (isRunning()) QThread::usleep(5); } } void GrabThread::run() { //用于保存图片到队列 cv::Mat src; cv::Mat t; while (!m_stopFlag) { if (DataVar::g_camOrFileMode == 0 && DataVar::g_camTriggerMode != 1) //执行条件:相机模式 及 非软触发模式 { long nRet = DataVar::g_camera->getOneImage(src); if (nRet == 0) { DataVar::g_imgsQueue.push(src); } else { QThread::msleep(5); } } } } WorkThread::WorkThread() { m_stopFlag = false; m_stateReady = true; } WorkThread::~WorkThread() { if (isRunning()) { m_stopFlag = true; while (isRunning()) QThread::usleep(5); } } void WorkThread::run() { while (!m_stopFlag) { //执行条件:相机模式 及 外触发模式 if (m_stateReady && DataVar::g_camOrFileMode == 0 && DataVar::g_camTriggerMode > 1 && !DataVar::instance()->getPicRef()->isNull()) { emit sig_runAlg(); //运行算法 m_stateReady = false; } else { QThread::msleep(5); } } } void WorkThread::changeAlgState(bool r) { m_stateReady = r; }