111 lines
3.1 KiB
C++
111 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>
|
|
#pragma execution_character_set("utf-8")
|
|
// 模块线程
|
|
|
|
class MyThread : public QThread
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
explicit MyThread(QObject* parent = nullptr) :m_obj(parent) {}
|
|
enum filmMode
|
|
{
|
|
hardware_trigger,
|
|
normal,
|
|
_2dSpecialP,
|
|
_2dSpecialN
|
|
};
|
|
~MyThread();
|
|
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="");
|
|
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
|