Files
2024-02-27 14:55:36 +08:00

113 lines
3.1 KiB
C++

#ifndef M_THREAD_H
#define M_THREAD_H
#include <QObject>
#include <QApplication>
#include <QJsonObject>
#include <QJsonArray>
#include <qjsonarray.h>
#include <QJsonDocument>
#include <QJsonParseError>
#include <QLibrary>
#include <QMetaType>
#include <QDateTime>
#include <QThread>
#include <QMutex>
#include <QDebug>
#include <QImage>
#include <QQueue>
#include <QMap>
#include <QDir>
#include <Windows.h>
#include <qmutex.h>
#include "struct.h"
#include <qserialport.h>
#include <threadPoolController.h>
#include"qmutex.h"
#pragma execution_character_set("utf-8")
// 模块线程
class MyThread : public QThread
{
Q_OBJECT
public:
explicit MyThread(QObject* parent = nullptr) :m_obj(parent) {}
enum filmMode
{
normal,
_2dSpecialP,
_2dSpecialN,
hardware_trigger
};
~MyThread();
int targetCnt;
QMutex mutex;
std::string SN;
int showIndex = -1;
QObject* m_obj;
std::vector<cv::Mat> getImage(int amount = 1);
filmMode globalMode;
std::vector<cv::Mat>* gloabalMats;
QMutex* globalMutex;
detData* globalDetData;
void run();
void setStopRun() { m_stoprun = false; }
void setMutex(QMutex* mutex);
void setSaveImage(QString save) { m_saveImage = save; }
bool sendDataCommond(QString m_type, cv::Mat mat, QByteArray byte);
bool runCameraModule();
bool setModule(QString station_name, QString name, QString type, MyModule module);
int getImageAmount() {
return detImgVec.size();
}
cameraImages* cameraImgsPtr;
/// <summary>
/// 相机软触发
/// </summary>
bool cameraTrigger();
/// <summary>
/// 从相机模块取图
/// </summary>
/// <param name="mats">输出图片,累加</param>
/// <param name="byte"></param>
void getImageFromCamera(std::vector<cv::Mat>& mats);
/// <summary>
/// 相机拍摄
/// </summary>
void takeImg(unsigned long long hash, filmMode, QString name, detData * datas,QString finsAfter="",int targetCntInput=0);
QString getName() { return m_name; }
QString getType() { return m_type; }
QString getTriggerModel() { return m_triggermodel; }
std::vector<cv::Mat> cameraModule(filmMode);
void setExposureTime(float);
void setUserSet(int);
void setLightSourceValue(int aLine, int bLine, int cLine, int dLine,QString name);
private:
QString finsAfter;
std::vector<cv::Mat>detImgVec;
bool offLineMode = false;
bool m_stoprun = true;
//QObject* m_obj;
QMutex* m_mutex;
QString m_name;
QString m_type;
QJsonArray trigger_condition;
QString m_saveImage = nullptr;
QString m_stationName = nullptr;
QString m_staticName = nullptr;
QString m_summaryflag = nullptr; // 结果汇总标志,默认不汇总
MyModule m_Module;
QJsonObject m_moduleobj; // 模块的object
QString m_triggermodel = nullptr; // 设置相机触发模式
unsigned long long currentHash = 0;
int picIndex = 0;
int picNum = 0;
int picFlag = 0;
int SendImgIndex = 0;
signals:
void mvDisconnect();
};
#endif // M_THREAD_H