init files

This commit is contained in:
rci
2024-09-27 14:31:22 +08:00
parent d04db633b4
commit a2ce7826dc
407 changed files with 123645 additions and 93 deletions
@@ -0,0 +1,70 @@
# 获取获取当前目录名
get_filename_component(CURRENT_FOLDER ${CMAKE_CURRENT_SOURCE_DIR} NAME)
string(TIMESTAMP RUN_TIME)
message( " model start : " ${CURRENT_FOLDER}:${RUN_TIME})
set(DLL_NAMES "mvs" "opencv" "qt5")
foreach(child ${DLL_NAMES})
LIST(APPEND ENV_INCLUDE ${${child}_include})
LIST(APPEND ENV_LIB ${${child}_lib})
LIST(APPEND ENV_TARGET ${${child}_target_link})
endforeach()
message(" ENV_INCLUDE : " ${ENV_INCLUDE} )
message(" ENV_LIB : " ${ENV_LIB} )
message(" ENV_TARGET : " ${ENV_TARGET} )
include_directories(
${ENV_INCLUDE}
)
link_directories (
${ENV_LIB}
)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
SET(CMAKE_CXX_STANDARD 11)
SET(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_AUTOMOC ON)
SET(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)
FILE(GLOB HEAD_FILES "./*.h" )
FILE(GLOB SRC_FILES "./*.cpp")
FILE(GLOB UI_FILES "./*.ui")
#find_package(Qt5 COMPONENTS Core REQUIRED)
find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED)
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core REQUIRED)
add_library(${CURRENT_FOLDER} SHARED
${HEAD_FILES}
${SRC_FILES}
${UI_FILES}
)
set_target_properties(${CURRENT_FOLDER} PROPERTIES LINKER_LANGUAGE C
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}
)
target_link_libraries(${CURRENT_FOLDER} PRIVATE
${ENV_TARGET}
Qt${QT_VERSION_MAJOR}::Core
)
# target_compile_definitions(${CURRENT_FOLDER} PRIVATE HD_AIDEMO_MODULE_LIBRARY)
string(TIMESTAMP RUN_TIME)
message( " model end : " ${CURRENT_FOLDER}:${RUN_TIME})
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,165 @@
#ifndef Hd_CameraModule_HIK3_H
#define Hd_CameraModule_HIK3_H
#include <QtCore/qglobal.h>
#include<opencv2/opencv.hpp>
#include <MvCameraControl.h>
#include <opencv.hpp>
#include <QByteArray>
#include <QDebug>
#include<iostream>
#include <Windows.h>
#include <time.h>
#include <QThread>
#include <QtConcurrent/qtconcurrent>
#include <qfuture.h>
#include "qobject.h"
#include "qjsonobject.h"
#include "qjsonarray.h"
#include "qjsondocument.h"
#include "QLibrary.h"
#include "QMetaType.h"
#include "QDateTime.h"
#include "QThread.h"
#include "QMutex.h"
#include "QDebug.h"
#include "QQueue.h"
#include "QMap.h"
#include "QDir.h"
#include <QJsonParseError>
#include "pbglobalobject.h"
//#include "base.h"
using namespace cv;
#pragma execution_character_set("utf-8")
struct myPBGLOBAL_callBack
{
void (*callBackFun)(QObject*, const std::vector<cv::Mat>&);
QObject* m_QObject;
QString cameraIndex;
};
class MyThread;
class MyData;
class Hd_CameraModule_HIK3 :public PbGlobalObject
{
Q_OBJECT
public:
//1、创建:赋值给famliy
explicit Hd_CameraModule_HIK3(int settype = -1, QObject* parent = nullptr);//对应哪个品牌相机(触发方式)/通信
~Hd_CameraModule_HIK3();
//#######################通用函数#######################
//初始化参数;通信/相机的初始化参数
bool setParameter(const QMap<QString, QString>&);
//setParameter之后再调用,返回当前参数
//相机:获取默认参数;
//通信:获取初始化示例参数
QMap<QString, QString> parameters();
//初始化(加载模块到内存)
bool init();
//设置数据
//相机:第一张图的参数,QStringList:00 曝光值 增益值;
//相机:第N张图的参数,QStringList:非00 曝光值 增益值;
//完成后发送信号trigged(bool);
bool setData(const std::vector<cv::Mat>&, const QStringList&);
//获取数据
bool data(std::vector<cv::Mat>&, QStringList&);
//注册回调 string对应自身的参数协议 (自定义)
void registerCallBackFun(PBGLOBAL_CALLBACK_FUN, QObject*, const QString&);
//注销回调 string对应自身的参数协议 (自定义)--->注销后还得取消连接状态
void cancelCallBackFun(PBGLOBAL_CALLBACK_FUN, QObject*, const QString&);
//Hd_CameraModule_HIK3();
//virtual ~Hd_CameraModule_HIK3();
//从类中读数据到实例对象
bool readData(std::vector<cv::Mat>& mat, QByteArray& data);
//实例对象把数据写入到类
bool writeData(std::vector<cv::Mat>& mat, QByteArray& data);
bool initParas(QByteArray&);
bool run();
bool checkStatus();
void threadCheckCallBack(int code);
int SearchDevice();
bool connctDevice();
QJsonObject load_camera_Example();
QString getmoduleName();
MyData* m_MyData;
};
class MyThread : public QObject
{
Q_OBJECT
public:
Hd_CameraModule_HIK3* camera = nullptr;
explicit MyThread(QObject *parent = nullptr) : QObject(parent){}
void runEmit(int code, MyData* m_MyData);
};
class MyData : public QObject
{
Q_OBJECT
public:
explicit MyData(QObject* parent = nullptr) : QObject(parent) {}
void run(int);
bool ifFirst = true;
//参数设置的数据
QMap<QString, QString> ParasValueMap;
QByteArray mv_Status = "connected";//0106 新增相机断联报警
//cv::Mat srcImage;
int index = -1; //相机序号
void* handle = NULL; //相机指针
std::string Username = "";
bool m_flag = false;
MV_CC_DEVICE_INFO_LIST m_stDevList;//相机设备
//cv::Mat srcImage;
QQueue<cv::Mat> QQueue_srcImage;
bool moduleStatus = true;
//data == "rest_newProductIn"时要结束run;机台报警,取图超时,复位后重新拍的情况。
bool ifBreak = false;
//ifRunning减少ifBreak的判断;"rest_newProductIn"时,Logic_camera_thread框架会结束未处理完的相相机取图
bool ifRunning = false;
bool ifChangeExpourseAndGain = true;
MV_CAM_TRIGGER_SOURCE initTriggerSource = MV_TRIGGER_SOURCE_SOFTWARE;
MV_CAM_TRIGGER_SOURCE currentTriggerSource = MV_TRIGGER_SOURCE_SOFTWARE;
QMutex* n_mutex;// = new QMutex();
//是否为标准通信流程:
//标准通信流程,run函数设置曝光/增益;非标准通信流程(简单通信流程),回调函数设置曝光/增益
bool ifStandard = false;
//相机取图超时时间
int getImageTimeOut = 1000;
//总取图数
int imgIndex = 0;
//曝光值列表
QQueue<float> expourseTimeList;
//增益列表
QQueue<float> gainList;
//模块名称
QString moduleName="";
QQueue< myPBGLOBAL_callBack> QQueue_myPBGLOBAL_callBack;
int callBackNum = 0;
int triggedNum = 0;
bool ifThemoduleStatus = true;
cv::Mat srcImage;
};
extern "C"
{
Q_DECL_EXPORT Hd_CameraModule_HIK3* create(int type = -1);
Q_DECL_EXPORT void destory(Hd_CameraModule_HIK3* ptr);
}
#endif // Hd_CameraModule_HIK3_H
@@ -0,0 +1,78 @@
#ifndef PBGLOBALOBJECT_H
#define PBGLOBALOBJECT_H
#include <QObject>
#include<opencv2/opencv.hpp>
#include <opencv.hpp>
//type对应的相机、触发方式
#define HIK_Hard 0 //海康
#define HIK_Soft 1
#define Basler_Hard 2
#define Basler_Soft 3
#define DaHua_Hard 4
#define DaHua_Soft 5
#define DaHeng_Hard 6
#define DaHeng_Soft 7
#define Dalsa 8
#define DalsaDAQ_Hard 9
#define DalsaDAQ_Soft 10
#define ITEK_Hard 11
#define ITEK_Soft 12
#define OPT_Hard 13
#define OPT_Soft 14
#define Keyence_25D 15
#define Keyence_3D 16
#define LMI_3D 17
#define Sszn_3D 18
#define ReadImage 1000
typedef void (*PBGLOBAL_CALLBACK_FUN)(QObject*, const std::vector<cv::Mat>&);
class PbGlobalObject : public QObject
{
Q_OBJECT
public:
explicit PbGlobalObject(int type, QObject* parent = nullptr) : QObject(parent), type1(type) { } //对应哪个品牌相机(触发方式)/通信
virtual ~PbGlobalObject() { }
//#######################通用函数#######################
//初始化参数;通信/相机的初始化参数
virtual bool setParameter(const QMap<QString, QString>&) = 0;
//setParameter之后再调用,返回当前参数
//相机:获取默认参数;
//通信:获取初始化示例参数
virtual QMap<QString, QString> parameters() = 0;
//初始化(加载模块待内存)
virtual bool init() = 0;
//设置数据
//相机:第一张图的参数,QStringList:00 曝光值 增益值;
//相机:第N张图的参数,QStringList:非00 曝光值 增益值;
//完成后发送信号trigged(bool);
virtual bool setData(const std::vector<cv::Mat>&, const QStringList&) = 0;
//获取数据
virtual bool data(std::vector<cv::Mat>&, QStringList&) = 0;
//注册回调 string对应自身的参数协议 (自定义)
virtual void registerCallBackFun(PBGLOBAL_CALLBACK_FUN, QObject*, const QString&) {}
//注销回调 string对应自身的参数协议 (自定义)--->注销后还得取消连接状态
virtual void cancelCallBackFun(PBGLOBAL_CALLBACK_FUN, QObject*, const QString&) {}
//#######################通用函数######################
public:
//大类
enum PGOFAMLIY { GLOBALVARIABLE = 0, CAMERA2D, CAMERA2_5D, CAMERA3D, PLC, COM }famliy;
//小类
int type1 = -1; //对应哪个品牌相机(触发方式)/通信
int type2 = -1;
int type3 = -1;
//名称
QString name = "";
int id;
signals:
void trigged(int); //切换连接状态也需要发送trgged信号 //0,相机重连成功;1,相机掉线;2:软触发; 3:硬触发; 1000,重置计数
};
#endif // PBGLOBALOBJECT_H