新增回调函数、移除部分接口等

master
bobpan 6 years ago
parent a48d654f65
commit 0b135eb9c9

@ -1,13 +1,4 @@
/******************************************************************************
Copyright(C):2015~2018 hzleaper
FileName:baseStruct.h
Author:zhikun wu
Email:zk.wu@hzleaper.com
Tools:vs2010 pc on company
Created:2015/04/09
History:9:4:2015 10:33
*******************************************************************************/
#ifndef __BASE_STRUCT_H
#ifndef __BASE_STRUCT_H
#define __BASE_STRUCT_H
#include "baseDefine.h"
@ -29,7 +20,6 @@ typedef struct tagTP_GLOBAL_DATA{
char tgdUserPath[BASE_MAX_FILE_PATH];
char tgdDllPath[BASE_MAX_FILE_PATH];
char tgdFolderNames[TP_FOLDER_NAME_MAX_NUM][BASE_MAX_FOLDER_NAME_SIZE];
// char tgdFileNames[TP_FILE_NAME_MAX_NUM][BASE_MAX_FILE_NAME_SIZE];
void* tgdpDllPaths;//pointer to a stringlist
}TP_GLOBAL_DATA;
@ -39,11 +29,6 @@ inline ZStringA TPConfigFileWholePath(const TP_GLOBAL_DATA* pGlobal, const char*
return szFileName;
}
/////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////
enum emTpImageShowType {
TP_IMAGE_SHOW_NO = 0,
TP_IMAGE_SHOW_EVERY = 1,
@ -186,76 +171,6 @@ enum emTpCommType {
TP_COMM_TYPE_TCP_CLIENT_SESSION = 5, // 主机作为服务端,接受的客户端会话
};
static const QMap<emTpCommType, QString> gCommNamesMap = {
{ TP_COMM_TYPE_NO, "Unknown" },
{ TP_COMM_TYPE_SERIAL, "Serial Port" },
{ TP_COMM_TYPE_USB, "USB Port" },
{ TP_COMM_TYPE_TCP_CLIENT, "TCP Client" },
{ TP_COMM_TYPE_TCP_SERVER, "TCP Server" },
{ TP_COMM_TYPE_TCP_CLIENT_SESSION, "TCP Client Session" }
};
enum emTpCommStatus{
TP_COMM_STATUS_DISABLE = 0, // 禁用状态
TP_COMM_STATUS_OPENNING = 1, // 打开中或者连接建立中
TP_COMM_STATUS_CONNECTED = 2, // 已打开或者连接已建立
TP_COMM_STATUS_CLOSED = 3, // 已关闭
TP_COMM_STATUS_CLOSING = 4, // 正在关闭
};
typedef struct tagTP_COMM_SETTING_NODE {
tagTP_COMM_SETTING_NODE()
:type(TP_COMM_TYPE_NO), enable(0),
bound(115200), triggerInterval(0),
usb_pid(0), usb_vid(0), heartBeatInterval(5000),
strHostAddress("127.0.0.1"), hostPort(9040),
strListenIp("*"), listenPort(9040), nMaxClients(0),
nClientPort(0), status(TP_COMM_STATUS_DISABLE)
{}
emTpCommType type;
int enable;
QString strName;
//used for serial port
int bound;
int triggerInterval;
int meterDecodeInterval;
int usb_pid;
int usb_vid;
int heartBeatInterval;
// used for tcp client
QString strHostAddress;
int hostPort;
// used for tcp server
QString strListenIp;
int listenPort;
int nMaxClients;
// used for tcp server client session
int nClientPort;
// node status - used for app inside
emTpCommStatus status;
bool operator==(const tagTP_COMM_SETTING_NODE& rhs)
{
return (type == rhs.type) && (enable == rhs.enable) &&
(strName == rhs.strName) && (bound == rhs.bound) &&
(triggerInterval == rhs.triggerInterval) &&
(meterDecodeInterval == rhs.meterDecodeInterval) &&
(usb_pid == rhs.usb_pid) && (usb_vid == rhs.usb_vid) &&
(heartBeatInterval == rhs.heartBeatInterval) &&
(strHostAddress == rhs.strHostAddress) &&
(hostPort == rhs.hostPort) && (strListenIp == rhs.strListenIp) &&
(listenPort == rhs.listenPort) && (nMaxClients == rhs.nMaxClients) &&
(nClientPort == rhs.nClientPort);
}
}TP_COMM_SETTING_NODE;
enum emTpDeviceTriggerMode {
DEV_TRIGGER_MODE_STOP = 0,
DEV_TRIGGER_MODE_OUT = 1,
@ -278,52 +193,52 @@ typedef struct tagTP_CAMERAPOOL_OPTION {
int fixedFrames;
}TP_CAMERAPOOL_OPTION;
typedef struct tagTP_CAMERA_WIN {
tagTP_CAMERA_WIN()
:images(1), buffers(2),
bitsPerPixel(32), index(0),
bufferW(0), bufferH(0), mirror(0),
bCacheOriginImage(false), bNeedRgbSwapped(false)
{}
QString key;//widget name
QString device;//camera key
quint8 images;
quint8 buffers;
quint8 bitsPerPixel;
quint8 index;
int bufferW;
int bufferH;
int mirror;//0:no, 1:horizontal, 2:vertical, 3: both
bool bCacheOriginImage;
bool bNeedRgbSwapped;
bool operator==(const tagTP_CAMERA_WIN& rhs)
{
return (key == rhs.key) && (device == rhs.device) &&
(images == rhs.images) && (buffers == rhs.buffers) &&
(bitsPerPixel == rhs.bitsPerPixel) &&
(index == rhs.index) &&
(bufferW == rhs.bufferW) && (bufferH == rhs.bufferH) &&
(mirror == rhs.mirror) &&
(bCacheOriginImage == rhs.bCacheOriginImage) &&
(bNeedRgbSwapped == rhs.bNeedRgbSwapped);
}
}TP_CAMERA_WIN;
enum emTpUiDataType {
TP_UI_DATA_FROM_CORECTRL = 0,
TP_UI_DATA_FROM_ALGORITHM = 0x10000,
TP_UI_DATA_FROM_CAMERA = 0x20000,
TP_UI_DATA_FROM_COMMUNICATE = 0x30000,
};
Q_DECLARE_METATYPE(emTpUiDataType)
typedef struct tagTP_IO_OUT_CONTROL {
BYTE index;
BYTE state;//0 or 1
WORD mSecToSwitch;//0 for no Switch;
}TP_IO_OUT_CONTROL;
// typedef struct tagTP_CAMERA_WIN {
// tagTP_CAMERA_WIN()
// :images(1), buffers(2),
// bitsPerPixel(32), index(0),
// bufferW(0), bufferH(0), mirror(0),
// bCacheOriginImage(false), bNeedRgbSwapped(false)
// {}
// QString key;//widget name
// QString device;//camera key
// quint8 images;
// quint8 buffers;
// quint8 bitsPerPixel;
// quint8 index;
// int bufferW;
// int bufferH;
// int mirror;//0:no, 1:horizontal, 2:vertical, 3: both
// bool bCacheOriginImage;
// bool bNeedRgbSwapped;
//
// bool operator==(const tagTP_CAMERA_WIN& rhs)
// {
// return (key == rhs.key) && (device == rhs.device) &&
// (images == rhs.images) && (buffers == rhs.buffers) &&
// (bitsPerPixel == rhs.bitsPerPixel) &&
// (index == rhs.index) &&
// (bufferW == rhs.bufferW) && (bufferH == rhs.bufferH) &&
// (mirror == rhs.mirror) &&
// (bCacheOriginImage == rhs.bCacheOriginImage) &&
// (bNeedRgbSwapped == rhs.bNeedRgbSwapped);
// }
// }TP_CAMERA_WIN;
// enum emTpUiDataType {
// TP_UI_DATA_FROM_CORECTRL = 0,
// TP_UI_DATA_FROM_ALGORITHM = 0x10000,
// TP_UI_DATA_FROM_CAMERA = 0x20000,
// TP_UI_DATA_FROM_COMMUNICATE = 0x30000,
// };
//Q_DECLARE_METATYPE(emTpUiDataType)
// typedef struct tagTP_IO_OUT_CONTROL {
// BYTE index;
// BYTE state;//0 or 1
// WORD mSecToSwitch;//0 for no Switch;
// }TP_IO_OUT_CONTROL;
static const QMap<emTpColorFormat, QString> gColorNameMap = {
{ TP_COLOR_NONE, "None" },

@ -1,18 +1,10 @@
/******************************************************************************
Copyright(C):2015~2018 hzleaper
FileName:iCoreCtrl.h
Author:zhikun wu
Email:zk.wu@hzleaper.com
Tools:vs2010 pc on company
Created:2015/03/23
History:23:3:2015 15:35
*******************************************************************************/
#ifndef __I_CORE_CTRL_H
#ifndef __I_CORE_CTRL_H
#define __I_CORE_CTRL_H
#include "baseStruct.h"
#include <QtCore/QString>
#include <QtGui/QImage>
//the parameter for the CoreCtrl module
typedef struct tagCORE_CTRL_IN_PARAM
{
@ -30,7 +22,10 @@ public:
virtual QVariantMap ToVariantMap() = 0;
};
typedef std::function<QVariant(int)> Cablack_GetVariantById;
typedef std::function<QVariant(int)> FuncCallBack_VarInt;
typedef std::function<void(const QVariantMap&)> FuncCallBack_VarMap;
typedef std::function<void(const QString&, const QVariantMap&)> FuncCallBack_StrMap;
//interface for gui
class ICoreCtrl
{
@ -51,7 +46,6 @@ public:
virtual bool ISetCameraOption(const QString& strSerial, const TP_CAMERA_OPTION& camOpt) = 0;
virtual bool IReopenCameraes() = 0;
virtual void ISetCameraProperty(const QString& camera, TP_CAMERA_PROPERTY& property) = 0;
//operate camera
@ -65,11 +59,13 @@ public:
//更新json配置文件
virtual bool updateCamJson(const QString& sJsonPath) = 0;
virtual bool ICamsStartPush() = 0;
virtual bool ICamsPausePush() = 0;
virtual bool ISetCalBack_GetVariantById(Cablack_GetVariantById func) = 0;
virtual bool IRegisterGetVariant(FuncCallBack_VarInt callback) = 0; //向算法传递检测参数回调接口
virtual bool IRegisterImageCallBack(FuncCallBack_VarMap callback) = 0; //获取相机图像回调接口
virtual bool IRegisterResultCallBack(FuncCallBack_StrMap callback) = 0; //获取算法结果回调接口
public://private: //use private when the old main is discarded;
virtual int IInitCore(class IDetectorEngine* pDE = NULL) = 0;
virtual void IFreeCore() = 0;
@ -84,131 +80,9 @@ public:
IGuiCallback() {}
virtual ~IGuiCallback() {}
virtual void INewCameraImage(const QVariantMap& vMap) = 0;
virtual void IVariantMapToUI(emTpUiDataType dataType, const QString& camKey, const QVariantMap& vMap) = 0;
virtual void IVariantMapToUI(const QString& camKey, const QVariantMap& vMap) = 0;
virtual QVariant IGetVariantById(int id) = 0;
};
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#define TP_SIGNALS \
Q_SIGNALS:\
void sgAddWindows(const QString sWinName, const QString sShowId); \
void sgUpdateShow(const QString skey); \
void sgNewCameraImage(const QVariantMap& vMap); \
void sgSendDataToUI(emTpUiDataType dataType, const QString camKey, void* pData); \
void sgCameraTrigger(bool bStartOrStop); \
void sgDrawDefectToScene(const QString szWinName, IImageObject::emTpDefectType defectType, QByteArray data); \
void sgSafeDataToUI(emTpUiDataType dataType, const QString camKey, const QByteArray data); \
void sgWarning(int nWarningCode, const QByteArray data); \
void sgCommIntervale(const QString szCom, int nCmd, const QByteArray data); \
void sgAlgorithmResult(const QVariantMap varMap); \
void sgVariantMapToUI(emTpUiDataType dataType, const QString camKey, const QVariantMap vMap); \
void sgIoStatesChanged(int nOldState, int nNewState); \
void sgCommAchieved(const QString szCom, int nCmd, const QByteArray data);\
#define TP_SLOTS \
public Q_SLOTS: \
virtual void UpdateShow(const QString skey); \
virtual void NewCameraImage(const QVariantMap& vMap); \
virtual void AddWindows(const QString sWinName, const QString sShowId); \
virtual void SendDataToUI(emTpUiDataType dataType, const QString camKey, void* pData); \
virtual void CameraTrigger(bool bStartOrStop); \
virtual void DrawDefectToScene(const QString szWinName, IImageObject::emTpDefectType defectType, QByteArray data); \
virtual void SafeDataToUI(emTpUiDataType dataType, const QString camKey, const QByteArray data); \
virtual void Warning(int nWarningCode, const QByteArray data); \
virtual void CommIntervale(const QString szCom, int nCmd, const QByteArray data); \
virtual void AlgorithmResult(const QVariantMap varMap); \
virtual void VariantMapToUI(emTpUiDataType dataType, const QString camKey, const QVariantMap vMap); \
virtual void IoStatesChanged(int nOldState, int nNewState); \
virtual void CommAchieved(const QString szCom, int nCmd, const QByteArray data);\
#define TP_CONSTRUCTOR \
connectSignals();
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#define TP_CALLBACKS_H \
virtual void IAddWindows(const QString& sWinName, const QString& sShowId); \
virtual void IUpdateShow(const QString& skey); \
virtual void INewCameraImage(const QVariantMap& vMap); \
virtual void ISendDataToUI(emTpUiDataType dataType, const QString& camKey, void* pData); \
virtual void ICameraTrigger(bool bStartOrStop); \
virtual void IDrawDefectToScene(const QString& szWinName, IImageObject::emTpDefectType defectType, QByteArray& data); \
virtual void ISafeDataToUI(emTpUiDataType dataType, const QString& camKey, const QByteArray& data); \
virtual void IWarning(int nWarningCode, void* data, int nDataLen); \
virtual void ICommInterval(const char* szCom, int nCmd, BYTE* pData, int nDataLen); \
virtual void IAlgorithmResult(const QVariantMap& varMap); \
virtual void IVariantMapToUI(emTpUiDataType dataType, const QString& camKey, const QVariantMap& vMap); \
virtual QVariant IGetVariantById(int id); \
virtual void IIoStatesChanged(int nOldState, int nNewState); \
virtual void ICommAchieved(const char* szCom, int nCmd, BYTE* pData, int nDataLen); \
virtual WORD IGetWorkState(); \
void connectSignals();
///
#define TP_CALLBACKS_CPP(cName) \
void cName##::IUpdateShow(const QString& skey) { \
emit sgUpdateShow(skey); \
} \
void cName##::INewCameraImage(const QVariantMap& vMap) { \
emit sgNewCameraImage(vMap); \
} \
void cName##::IAddWindows(const QString& sWinName, const QString& sShowId) { \
emit sgAddWindows(sWinName, sShowId); \
} \
void cName##::ISendDataToUI(emTpUiDataType dataType, const QString& camKey, void* pData) { \
emit sgSendDataToUI(dataType, camKey, pData); \
} \
void cName##::ICameraTrigger(bool bStartOrStop) { \
emit sgCameraTrigger(bStartOrStop); \
} \
void cName##::IDrawDefectToScene(const QString& szWinName, IImageObject::emTpDefectType defectType, QByteArray& data) { \
emit sgDrawDefectToScene(szWinName, defectType, data); \
} \
void cName##::ISafeDataToUI(emTpUiDataType dataType, const QString& camKey, const QByteArray& data) { \
emit sgSafeDataToUI(dataType, camKey, data); \
} \
void cName##::IWarning(int nWarningCode, void* data, int nDataLen) { \
emit sgWarning(nWarningCode, QByteArray((char*)data, nDataLen)); \
}\
void cName##::ICommInterval(const char* szCom, int nCmd, BYTE* pData, int nDataLen) { \
emit sgCommIntervale(QString(szCom), nCmd, QByteArray((char*)pData, nDataLen)); \
} \
void cName##::IAlgorithmResult(const QVariantMap& varMap) { \
emit sgAlgorithmResult(varMap); \
} \
void cName##::IVariantMapToUI(emTpUiDataType dataType, const QString& camKey, const QVariantMap& vMap) { \
emit sgVariantMapToUI(dataType, camKey, vMap); \
} \
void cName##::IIoStatesChanged(int nOldState, int nNewState) { \
emit sgIoStatesChanged(nOldState, nNewState); \
} \
void cName##::ICommAchieved(const char* szCom, int nCmd, BYTE* pData, int nDataLen) { \
emit sgCommAchieved(QString(szCom), nCmd, QByteArray((char*)pData, nDataLen)); \
} \
QVariant cName##::IGetVariantById(int id) { return QVariant(); } \
WORD cName##::IGetWorkState() { return 0; } \
void cName##::connectSignals() { \
QMetaObject::Connection error = connect(this, SIGNAL(sgAddWindows(const QString, const QString)) \
, this, SLOT(AddWindows(const QString, const QString))); \
error = connect(this, SIGNAL(sgUpdateShow(const QString)), this, SLOT(UpdateShow(const QString))); \
error = connect(this, SIGNAL(sgNewCameraImage(const QVariantMap)), this, SLOT(NewCameraImage(const QVariantMap))); \
qRegisterMetaType<emTpUiDataType>("emTpUiDataType"); \
error = connect(this, SIGNAL(sgSendDataToUI(emTpUiDataType, const QString, void*)) \
, this, SLOT(SendDataToUI(emTpUiDataType, const QString, void*))); \
error = connect(this, SIGNAL(sgCameraTrigger(bool)), this, SLOT(CameraTrigger(bool))); \
qRegisterMetaType<IImageObject::emTpDefectType>("IImageObject::emTpDefectType"); \
error = connect(this, SIGNAL(sgDrawDefectToScene(const QString, IImageObject::emTpDefectType, QByteArray)) \
, this, SLOT(DrawDefectToScene(const QString, IImageObject::emTpDefectType, QByteArray))); \
error = connect(this, SIGNAL(sgSafeDataToUI(emTpUiDataType, const QString, const QByteArray)) \
, this, SLOT(SafeDataToUI(emTpUiDataType, const QString, const QByteArray))); \
error = connect(this, SIGNAL(sgWarning(int, const QByteArray)), this, SLOT(Warning(int, const QByteArray))); \
error = connect(this, SIGNAL(sgCommIntervale(const QString, int, const QByteArray)) \
, this, SLOT(CommIntervale(const QString, int, const QByteArray))); \
error = connect(this, SIGNAL(sgAlgorithmResult(const QVariantMap)),this, SLOT(AlgorithmResult(const QVariantMap))); \
error = connect(this, SIGNAL(sgVariantMapToUI(emTpUiDataType, const QString, const QVariantMap)) \
, this, SLOT(VariantMapToUI(emTpUiDataType, const QString, const QVariantMap)));\
error = connect(this, SIGNAL(sgIoStatesChanged(int, int)), this, SLOT(IoStatesChanged(int, int))); \
error = connect(this, SIGNAL(sgCommAchieved(const QString, int, const QByteArray)) \
, this, SLOT(CommAchieved(const QString, int, const QByteArray))); \
} \
#endif

@ -1,63 +0,0 @@
/******************************************************************************
Copyright(C):2015~2018 hzleaper
FileName:$FILE_BASE$.$FILE_EXT$
Author:zhikun wu
Email:zk.wu@hzleaper.com
Tools:vs2010 pc on company
Created:$DATE$
History:$DAY$:$MONTH$:$YEAR$ $HOUR$:$MINUTE$
*******************************************************************************/
#include "zdefines.h"
#include <QtCore\qlibrary.h>
enum tpemIoType {
TP_IO_ADLINK = 1,
};
class IIoInterface
{
public:
IIoInterface() {}
virtual ~IIoInterface() {}
virtual int IIint() = 0;
virtual int IFree() = 0;
virtual int IReadI(qint32& state) = 0;
virtual int IReadO(qint32& state) = 0;
virtual int IWriteO(qint32& state) = 0;
};
#define TP_IOCTRL_DLL "tpIoCtrl"
class QLoadIoCtrl : public QLibrary
{
public:
typedef IIoInterface*(*func_io_create)(int);
typedef void(*func_io_delete)(IIoInterface*);
QLoadIoCtrl(const QString& path)
#ifdef _DEBUG
: QLibrary(path + TP_IOCTRL_DLL + "d")
#else
: QLibrary(path + TP_IOCTRL_DLL)
#endif
{
_ioCreate = (func_io_create)resolve("tp_io_create");
_ioDelete = (func_io_delete)resolve("tp_io_delete");
}
~QLoadIoCtrl(){}
IIoInterface* Create(int type) {
if (NULL == _ioCreate) {
return NULL;
}
return _ioCreate(type);
}
void Delete(IIoInterface* pio) {
if (NULL != _ioDelete) {
_ioDelete(pio);
}
}
private:
func_io_create _ioCreate;
func_io_delete _ioDelete;
};

@ -1,13 +1,4 @@
/******************************************************************************
Copyright(C):2015~2018 hzleaper
FileName:TpICamera.h
Author:zhikun wu
Email:zk.wu@hzleaper.com
Tools:vs2010 pc on company
Created:2015/03/20
History:20:3:2015 17:12
*******************************************************************************/
#ifndef __TP_I_CAMERA_H
#ifndef __TP_I_CAMERA_H
#define __TP_I_CAMERA_H
#include "baseInclude.h"
@ -61,16 +52,16 @@ public:
//@camera: NULL means setting every camera
virtual void ISetCameraProperty(const QString& camera, emTpCameraProperty property, long nValue) = 0;
virtual void ISetCameraProperty(const QString& camera, TP_CAMERA_PROPERTY& property) = 0;
virtual QList<TP_CAMERA_WIN*> ICameraWins() = 0;
// virtual QList<TP_CAMERA_WIN*> ICameraWins() = 0;
virtual QMap<QString, QString> IGetCamShowNames() = 0;
virtual void ISetCameraEncode(INT64 code, INT64 rate) = 0;
virtual void ISetVirtualImages(const QString& camera, const QStringList& szImages) = 0;
//operate camera window
virtual QList<QString> ICamWinKeys() = 0;
virtual bool ICamWinOptionByKey(const QString& strKey, TP_CAMERA_WIN& camwinOpt) = 0;
virtual bool IAddCamWin(const QString& strKey, const TP_CAMERA_WIN& camwinOpt, bool bNew) = 0;
virtual bool IDelCamWin(const QString& strKey) = 0;
// virtual QList<QString> ICamWinKeys() = 0;
// virtual bool ICamWinOptionByKey(const QString& strKey, TP_CAMERA_WIN& camwinOpt) = 0;
// virtual bool IAddCamWin(const QString& strKey, const TP_CAMERA_WIN& camwinOpt, bool bNew) = 0;
// virtual bool IDelCamWin(const QString& strKey) = 0;
virtual bool ICamsStartPush() = 0;
virtual bool ICamsPausePush() = 0;

@ -1,35 +1,76 @@
/******************************************************************************
Copyright(C):2015~2018 hzleaper
FileName:CoreCtrl.cpp
Author:zhikun wu
Email:zk.wu@hzleaper.com
Tools:vs2010 pc on company
Created:2015/03/24
History:24:3:2015 17:22
*******************************************************************************/
#include "CoreCtrl.h"
#include "CoreCtrl.h"
#include "globalCoreCtrl.h"
#include "baseFunction.h"
#include "QZkJsonParser.h"
#include <QDebug>
#include <QThreadPool>
#include "callbackFunc.h"
#include "CameraPool.h"
#include "globalCamera.h"
CCoreCtrl::CCoreCtrl(void)
{
}
CCoreCtrl::CCoreCtrl(void* inParam)
{
CORE_CTRL_IN_PARAM* pCciParam = (CORE_CTRL_IN_PARAM*)inParam;
m_gpData = new CGlobalCoreCtrl(pCciParam);
{
CAMERA_IN_PARAM camInParam;
camInParam.pCallback = m_gpData;
camInParam.pGlobalData = nullptr;
m_gpGlobalCameraZZZ = new CGlobalCamera(&camInParam);
m_gpCameraPool = new CCameraPool();
((CCameraPool*)m_gpCameraPool)->InitPool();
IMGPROC_IN_PARAM imgprocInParam;
imgprocInParam.pGlobalData = m_gpGlobalCameraZZZ->m_pGlobalData;
m_gpImgProc = new CImgProc(&imgprocInParam);
((CImgProc*)m_gpImgProc)->InitProc();
}
}
CCoreCtrl::~CCoreCtrl(void)
{
if (m_gpImgProc)
{
((CImgProc*)m_gpImgProc)->FreeProc();
delete m_gpImgProc;
m_gpImgProc = nullptr;
}
if (m_gpCameraPool)
{
((CCameraPool*)m_gpCameraPool)->FreePool();
delete m_gpCameraPool;
m_gpCameraPool = nullptr;
}
if (m_gpData)
{
delete m_gpData;
m_gpData = nullptr;
}
if (m_gpGlobalCameraZZZ)
{
delete m_gpGlobalCameraZZZ;
m_gpGlobalCameraZZZ = nullptr;
}
IFreeCore();
}
int CCoreCtrl::IInitCore(class IDetectorEngine* pDE /*= NULL*/)
{
int nRet = 0;
//nRet = createShowWindows();//根据camera.json中的"windows"创建显示窗口内存,
//create threads
int nCount = gCoreSetting.threadsCount;
int nCount = 4;// gCoreSetting.threadsCount;
if (nCount <= 0)
{
nCount = SYS_F::GetCpus();//获取系统cpu线程数量
@ -42,9 +83,6 @@ int CCoreCtrl::IInitCore(class IDetectorEngine* pDE /*= NULL*/)
{
break;
}
// pThd->StartThread();
// pThd->setPriority(QThread::TimeCriticalPriority);
m_imgThdPool.append(pThd);
++nRet;
}
@ -52,18 +90,18 @@ int CCoreCtrl::IInitCore(class IDetectorEngine* pDE /*= NULL*/)
//
IStartImageProcess();
//create cameraes...
glpCameralPool->ICreateCameraes();//更加camera.json 创建相机对象
glpCameralPool->IOpenDevicesEx();//打开相机
glpCameralPool->ISetTriggerMode(DEV_TRIGGER_MODE_OUT);//设置默认的触发模式
glpCameralPool->IStartDevices();//设置相机开始工作
m_gpCameraPool->ICreateCameraes();//更加camera.json 创建相机对象
m_gpCameraPool->IOpenDevicesEx();//打开相机
m_gpCameraPool->ISetTriggerMode(DEV_TRIGGER_MODE_OUT);//设置默认的触发模式
m_gpCameraPool->IStartDevices();//设置相机开始工作
return nRet;
}
void CCoreCtrl::IFreeCore()
{
glpCameralPool->IStopDevices();//设置相机停止工作
glpCameralPool->ICloseDevices();//关闭相机
glpCameralPool->IDeleteDameraes();//删除相机
m_gpCameraPool->IStopDevices();//设置相机停止工作
m_gpCameraPool->ICloseDevices();//关闭相机
m_gpCameraPool->IDeleteDameraes();//删除相机
//删除图片处理线程
while( !m_imgThdPool.isEmpty() )
{
@ -71,13 +109,10 @@ void CCoreCtrl::IFreeCore()
pThd->EndThread();
delete pThd;
}
//m_showImages.clear(releaseShowImage);
// m_showWindows.clear(releaseShowWindow);//删除用用图像显示窗口内存
// 这里等待所有线程完成工作虽然用clear也可以
// 但是程序在退出的时候会跳出来错误。不够友好
QThreadPool::globalInstance()->waitForDone();
//QThreadPool::globalInstance()->clear();
}
void CCoreCtrl::IStartImageProcess()
@ -97,58 +132,6 @@ void CCoreCtrl::IEndImageProcess()
}
}
//void CCoreCtrl::releaseShowImage(const QString& k, QZkShowImage*& v, void* pData)
//{
// delete v;
//}
// bool CCoreCtrl::ShowCameraImage(const ZStringA& serial, UINT nFrameNum, QImage& image, INT64 nStamp, int nIndex/* = 0*/, const QString& szExtend /*= NULL*/)
// {
// QVariantMap map;
// map.clear();
// map.insert("camera", serial);
// map.insert("frame", nFrameNum);
// QVariant vimg;
// vimg.setValue(image);
// map.insert("image", vimg);
// glpGuiCallback->INewCameraImage(map);
//
// QString sWinId = serial + "_" + QString::number(nIndex);
// CShowWindow* pWin = m_showWindows.value(sWinId, NULL);
// if (NULL != pWin && pWin->AddCameraImage(image, nFrameNum, nStamp, szExtend)/*pWin->SetCameraImage(pCamImage)*/)
// {
// glpGuiCallback->IUpdateShow(pWin->CameraWin().key);
// return true;
// }
// else
// {
// return false;
// }
// }
// void CCoreCtrl::DrawDefectOrg(IImageObject::emTpDefectType defectType, BYTE* pData, int nDataLen, CZkCameraImage* pCamImage)
// {
// QString sWinId = QString::fromUtf8(pCamImage->Serial()) + "_" + QString::number(0);
// CShowWindow* pWin = m_showWindows.value(sWinId, NULL);
// if (NULL != pWin && pWin->DrawDefect(defectType, pData, nDataLen, pCamImage))
// {
// glpGuiCallback->IUpdateShow(pWin->CameraWin().key);
// }
// }
// void CCoreCtrl::DrawImageOrg(QImage& srcImg, CZkCameraImage* pCamImage)
// {
// if (!ShowCameraImage(pCamImage->Serial(), pCamImage->FrameNumber(), srcImg, pCamImage->Stamp(), 1, QString::fromUtf8(pCamImage->FileName())))
// {
// QString sWinId = QString::fromUtf8(pCamImage->Serial()) + "_" + QString::number(0);
// CShowWindow* pWin = m_showWindows.value(sWinId, NULL);
// if (NULL != pWin && pWin->DrawImage(srcImg, pCamImage->FrameNumber(), QString::fromUtf8(pCamImage->FileName())))
// {
// glpGuiCallback->IUpdateShow(pWin->CameraWin().key);
// }
// }
// }
void CCoreCtrl::ISetResult(const QString& key, QVariant& val)
{
m_algResult.SetResult(key, val);
@ -164,228 +147,71 @@ void CCoreCtrl::AccumulateResult(const QString& key, QVariant& val)
}
}
/*
void CCoreCtrl::setShowWindow(CShowWindow*& pWin, void* pData)
{
;
}
*/
//void CCoreCtrl::setShowImage(const QString& k, QZkShowImage*& v, void* pData)
//{
// v->SetShowImage((CZkCameraImage*)pData);
//}
QList<QString> CCoreCtrl::ICameraKeys()
{
return glpCameralPool->ICameraKeys();
return m_gpCameraPool->ICameraKeys();
}
QList<QString> CCoreCtrl::ICameraKeysOrderByIds()
{
return glpCameralPool->ICameraKeysOrderByIds();
return m_gpCameraPool->ICameraKeysOrderByIds();
}
bool CCoreCtrl::ICameraOption(const QString& strSerial, TP_CAMERA_OPTION& camOpt)
{
return glpCameralPool->ICameraOption(strSerial, camOpt);
return m_gpCameraPool->ICameraOption(strSerial, camOpt);
}
bool CCoreCtrl::ICameraOptionByKey(const QString& strSerial, TP_CAMERA_OPTION& camOpt)
{
return glpCameralPool->ICameraOptionByKey(strSerial, camOpt);
return m_gpCameraPool->ICameraOptionByKey(strSerial, camOpt);
}
QList<QString> CCoreCtrl::IEnumAvailableCameras(emTpDeviceType camType)
{
return glpCameralPool->IEnumAvailableCameras(camType);
return m_gpCameraPool->IEnumAvailableCameras(camType);
}
void CCoreCtrl::ISetTriggerMode(emTpDeviceTriggerMode triggerMode, long nFrameRate)
{
glpCameralPool->ISetTriggerMode(triggerMode, TRIGGER_DIRECT_FOREWARD, nFrameRate);
m_gpCameraPool->ISetTriggerMode(triggerMode, TRIGGER_DIRECT_FOREWARD, nFrameRate);
}
void CCoreCtrl::IManualTrigger(emTpTriggerDirection direct)
{
glpCameralPool->IManualTrigger(direct);
m_gpCameraPool->IManualTrigger(direct);
}
void CCoreCtrl::ISnapImage(const QStringList& camKeys)
{
glpCameralPool->ISnapImage(camKeys);
m_gpCameraPool->ISnapImage(camKeys);
}
void CCoreCtrl::ISendSoftTrigger(const QStringList& camKeys)
{
glpCameralPool->ISendSoftTrigger(camKeys);
m_gpCameraPool->ISendSoftTrigger(camKeys);
}
// void CCoreCtrl::IDrawImage(const QString& sKey, QPainter& painter, QRect& rt)
// {
// /*
// tagDrawShowImageParam param;
// param.painter = &painter;
// param.rt = &rt;
// m_showImages.valueCall(sKey, drawShowImage, &param);*/
// }
//void CCoreCtrl::drawShowImage(const QString& key, QZkShowImage*& v, void* pData)
//{
// tagDrawShowImageParam* param = (tagDrawShowImageParam*)pData;
// v->DrawToPainter(param->painter, param->rt);
//// param->painter->drawPixmap()
//}
// int CCoreCtrl::createShowWindows()
// {
// int nCount = 0;
// // QList<TP_CAMERA_WIN*> camWins = glpCameralPool->ICameraWins();
// // for (int i = 0; i < camWins.size(); ++i)
// // {
// // CShowWindow* pShow = new CShowWindow(camWins[i]);
// // if (NULL == pShow)
// // {
// // continue;
// // }
// // if (m_showWindows.contains(pShow->WindowId()))
// // {
// // delete pShow;
// // continue;
// // }
// // m_showWindows.insert(pShow->WindowId(), pShow);
// // gGuiCallback_FuncCall(IAddWindows, camWins[i]->key, pShow->WindowId());
// // ++nCount;
// // }
// return nCount;
// }
// void CCoreCtrl::releaseShowWindow(CShowWindow*& pWin, void* pData)
// {
// delete pWin;
// pWin = NULL;
// }
// bool CCoreCtrl::IAddCamWin(const QString& strKey, const TP_CAMERA_WIN& camwinOpt, bool bNew)
// {
// if (glpCameralPool->IAddCamWin(strKey, camwinOpt, bNew))
// {
// if (bNew){
// QList<TP_CAMERA_WIN*> camWins = glpCameralPool->ICameraWins();
// for (int i = 0; i < camWins.size(); ++i)
// {
// if (camWins[i]->key.compare(strKey, Qt::CaseInsensitive) == 0){
// CShowWindow* pShow = new CShowWindow(camWins[i]);
// if (!pShow) return false;
//
// // if (m_showWindows.contains(pShow->WindowId()))
// // {
// // delete pShow;
// // return false;
// // }
// // m_showWindows.insert(pShow->WindowId(), pShow);
// gGuiCallback_FuncCall(IAddWindows, camWins[i]->key, pShow->WindowId());
// return true;
// }
// }
// }
// return true;
// }
//
// return false;
// }
// bool CCoreCtrl::IDelCamWin(const QString& strKey)
// {
// TP_CAMERA_WIN optCamWin;
// if (ICamWinOptionByKey(strKey, optCamWin)){
// QString strWinId = QString(optCamWin.device) + "_" + QString::number(optCamWin.index);
// CShowWindow* pShow = m_showWindows.value(strWinId);
// if (pShow){
// m_showWindows.remove(strWinId);
// delete pShow;
// pShow = NULL;
// }
// }
//
// return glpCameralPool->IDelCamWin(strKey);
// }
// QImage CCoreCtrl::IShowImage(const QString& sShowId, int& nFrameNum, QString& szExShow)
// {
// CShowWindow* pWin = m_showWindows.value(sShowId, NULL);
// if (NULL == pWin)
// {
// nFrameNum = -1;
// return QImage();
// }
// else
// {
// nFrameNum = pWin->FrameNum();
// szExShow = pWin->ExtendString();
// return pWin->ShowImage();
// }
// }
QMap<QString, QString> CCoreCtrl::IGetCamShowNames()
{
return glpCameralPool->IGetCamShowNames();
return m_gpCameraPool->IGetCamShowNames();
}
// IAlgorithmOption* CCoreCtrl::IGetAlgorithmOption(int nAlgorithm)
// {
// return glpImgProc->IGetAlgorithmOption(nAlgorithm);
// }
bool CCoreCtrl::ISetCameraOption(const QString& strSerial, const TP_CAMERA_OPTION& camOpt)
{
return glpCameralPool->ISetCameraOption(strSerial, camOpt);
return m_gpCameraPool->ISetCameraOption(strSerial, camOpt);
}
bool CCoreCtrl::IReopenCameraes()
{
return glpCameralPool->IOpenDevices();
return m_gpCameraPool->IOpenDevices();
}
// void CCoreCtrl::ISetVirtualImages(const QString& camera, const QStringList& szImages)
// {
// glpCameralPool->ISetVirtualImages(camera, szImages);
// }
// QImage CCoreCtrl::IOriginImage(const QString& sShowId)
// {
// CShowWindow* pWin = m_showWindows.value(sShowId, NULL);
// if (NULL == pWin)
// {
// return QImage();
// }
// else
// {
// return pWin->OriginImage();
// }
// }
void CCoreCtrl::ISetCameraProperty(const QString& camera, TP_CAMERA_PROPERTY& property)
{
return glpCameralPool->ISetCameraProperty(camera, property);
return m_gpCameraPool->ISetCameraProperty(camera, property);
}
// void CCoreCtrl::ISetAlgorithmShared(const QString& key, const QVariant& value)
// {
// // m_algShared.SetValue(key, value);
// }
// void CCoreCtrl::IWriteIo(const TP_IO_OUT_CONTROL& state)
// {
//
// }
// bool CCoreCtrl::updateCommJson(const QString& sJsonPath)
// {
// return false;
//
// }
bool CCoreCtrl::updateCamJson(const QString& sJsonPath)
{
int nError;
@ -435,32 +261,6 @@ bool CCoreCtrl::updateCamJson(const QString& sJsonPath)
cameraRoot["devices"] = cameraDevs;
cameraRoot["pool"] = originObjJson["pool"].toObject();
QJsonObject cameraWins;
QList<QString> camwinlist = ICamWinKeys();
foreach(const QString& strCamWinName, camwinlist)
{
TP_CAMERA_WIN camwinOpt;
if (ICamWinOptionByKey(strCamWinName, camwinOpt))
{
QJsonObject camwinObj;
camwinObj["bitsperpixel"] = camwinOpt.bitsPerPixel;
camwinObj["buffer_h"] = camwinOpt.bufferH;
camwinObj["buffer_w"] = camwinOpt.bufferW;
camwinObj["buffers"] = camwinOpt.buffers;
camwinObj["cache_origin"] = camwinOpt.bCacheOriginImage;
camwinObj["device"] = camwinOpt.device;
camwinObj["images"] = camwinOpt.images;
camwinObj["index"] = camwinOpt.index;
camwinObj["mirror"] = camwinOpt.mirror;
camwinObj["rgb_swapped"] = camwinOpt.bNeedRgbSwapped;
cameraWins[camwinOpt.key] = camwinObj;
}
}
cameraRoot["windows"] = cameraWins;
return saveJsonToFile(cameraRoot, sJsonPath);
}
@ -477,4 +277,37 @@ bool CCoreCtrl::saveJsonToFile(const QJsonObject& json, const QString& fileFullN
saveFile.write(saveDoc.toJson());
return true;
}
}
bool CCoreCtrl::IRegisterGetVariant(FuncCallBack_VarInt func)
{
if (func)
{
lpCallBackFunc::instance()->m_GetVariantCallBackFunc = func;
return true;
}
else
return false;
}
bool CCoreCtrl::IRegisterImageCallBack(FuncCallBack_VarMap callback)
{
if (callback)
{
lpCallBackFunc::instance()->m_ImageCallBackFunc = callback;
return true;
}
else
return false;
}
bool CCoreCtrl::IRegisterResultCallBack(FuncCallBack_StrMap callback)
{
if (callback)
{
lpCallBackFunc::instance()->m_ResultCallBackFunc = callback;
return true;
}
else
return false;
}

@ -1,101 +1,75 @@
/******************************************************************************
Copyright(C):2015~2018 hzleaper
FileName:CoreCtrl.h
Author:zhikun wu
Email:zk.wu@hzleaper.com
Tools:vs2010 pc on company
Created:2015/03/24
History:24:3:2015 17:21
*******************************************************************************/
#ifndef __CORE_CTRL_H
#ifndef __CORE_CTRL_H
#define __CORE_CTRL_H
#include "iCoreCtrl.h"
#include "qtpthreadimage.h"
#include "QZkMutexMap.h"
#include "AlgorithmResult.h"
#include "ImgProc.h"
#include "globalCamera.h"
#include "CameraPool.h"
class CCoreCtrl : public ICoreCtrl
{
public:
CCoreCtrl(void);
virtual ~CCoreCtrl(void);
//初始化CoreCtrl
virtual int IInitCore(class IDetectorEngine* pDE = NULL);
//释放CoreCtrl
virtual void IFreeCore();
//开始执行算法处理
virtual void IStartImageProcess();
virtual void IEndImageProcess();
// bool ShowCameraImage(const ZStringA& serial, UINT nFrameNum, QImage& image, INT64 nStamp, int nIndex = 0, const QString& szExtend = NULL);
// void DrawDefectOrg(IImageObject::emTpDefectType defectType, BYTE* pData, int nDataLen, CZkCameraImage* pCamImage);
// void DrawImageOrg(QImage& srcImg, CZkCameraImage* pCamImage);
void AccumulateResult(const QString& key, QVariant& val);
virtual void ISetResult(const QString& key, QVariant& val);
CCoreCtrl(void);
CCoreCtrl(void* inParam);
virtual ~CCoreCtrl(void);
//初始化CoreCtrl
virtual int IInitCore(class IDetectorEngine* pDE = NULL);
//释放CoreCtrl
virtual void IFreeCore();
//开始执行算法处理
virtual void IStartImageProcess();
virtual void IEndImageProcess();
void AccumulateResult(const QString& key, QVariant& val);
virtual void ISetResult(const QString& key, QVariant& val);
private:
virtual QList<QString> ICameraKeys();
virtual QList<QString> ICameraKeysOrderByIds();
virtual bool ICameraOption(const QString& strSerial, TP_CAMERA_OPTION& camOpt);
virtual bool ICameraOptionByKey(const QString& strSerial, TP_CAMERA_OPTION& camOpt);
virtual QList<QString> IEnumAvailableCameras(emTpDeviceType camType); // try to get available (connected to the computer) by camera type(manufacturer)
virtual void ISetTriggerMode(emTpDeviceTriggerMode triggerMode, long nFrameRate);
virtual emTpDeviceTriggerMode IGetTriggerMode() { return glpCameralPool->IGetTriggerMode(); }
virtual void IManualTrigger(emTpTriggerDirection direct);
virtual void ISnapImage(const QStringList& camKeys);
virtual void ISendSoftTrigger(const QStringList& camKeys);
//virtual void IDrawImage(const QString& sKey, QPainter& painter, QRect& rt);
//virtual QImage IShowImage(const QString& sShowId, int& nFrameNum, QString& szExShow);
virtual QMap<QString, QString> IGetCamShowNames();
//virtual IAlgorithmOption* IGetAlgorithmOption(int nAlgorithm);
virtual bool ISetCameraOption(const QString& strSerial, const TP_CAMERA_OPTION& camOpt);
virtual bool IReopenCameraes();
//virtual void ISetVirtualImages(const QString& camera, const QStringList& szImages);
//virtual QImage IOriginImage(const QString& sShowId);
virtual void ISetCameraProperty(const QString& camera, TP_CAMERA_PROPERTY& property);
//virtual void ISetAlgorithmShared(const QString& key, const QVariant& value);
//virtual void IWriteIo(const TP_IO_OUT_CONTROL& state);
virtual QList<QString> ICameraKeys();
virtual QList<QString> ICameraKeysOrderByIds();
virtual bool ICameraOption(const QString& strSerial, TP_CAMERA_OPTION& camOpt);
virtual bool ICameraOptionByKey(const QString& strSerial, TP_CAMERA_OPTION& camOpt);
virtual QList<QString> IEnumAvailableCameras(emTpDeviceType camType); // try to get available (connected to the computer) by camera type(manufacturer)
virtual void ISetTriggerMode(emTpDeviceTriggerMode triggerMode, long nFrameRate);
virtual emTpDeviceTriggerMode IGetTriggerMode() { return m_gpCameraPool->IGetTriggerMode(); }
virtual void IManualTrigger(emTpTriggerDirection direct);
virtual void ISnapImage(const QStringList& camKeys);
virtual void ISendSoftTrigger(const QStringList& camKeys);
virtual QMap<QString, QString> IGetCamShowNames();
virtual bool ISetCameraOption(const QString& strSerial, const TP_CAMERA_OPTION& camOpt);
virtual bool IReopenCameraes();
virtual void ISetCameraProperty(const QString& camera, TP_CAMERA_PROPERTY& property);
//camera operate
virtual bool ICreateCamera(const QString& strSerial, int nType) { return glpCameralPool->ICreateCamera(strSerial, nType); }
virtual bool IOpenCamera(const QString& strSerial) { return glpCameralPool->IOpenCamera(strSerial); }
virtual bool ICloseCamera(const QString& strSerial) { return glpCameralPool->ICloseCamera(strSerial); }
virtual bool IStartCamera(const QString& strSerial) { return glpCameralPool->IStartCamera(strSerial); }
virtual bool IStopCamera(const QString& strSerial) { return glpCameralPool->IStopCamera(strSerial); }
virtual bool IDeleteCamera(const QString& strSerial) { return glpCameralPool->IDeleteCamera(strSerial); }
virtual bool IAddCamera(const QString& strName, const TP_CAMERA_OPTION& camOpt, bool bNew, bool bAutoRun = false) { return glpCameralPool->IAddCamera(strName, camOpt, bNew, bAutoRun); }
//operate camera window
virtual QList<QString> ICamWinKeys() { return glpCameralPool->ICamWinKeys(); }
virtual bool ICamWinOptionByKey(const QString& strKey, TP_CAMERA_WIN& camwinOpt) { return glpCameralPool->ICamWinOptionByKey(strKey, camwinOpt); }
// virtual bool IAddCamWin(const QString& strKey, const TP_CAMERA_WIN& camwinOpt, bool bNew);
// virtual bool IDelCamWin(const QString& strKey);
//camera operate
virtual bool ICreateCamera(const QString& strSerial, int nType) { return m_gpCameraPool->ICreateCamera(strSerial, nType); }
virtual bool IOpenCamera(const QString& strSerial) { return m_gpCameraPool->IOpenCamera(strSerial); }
virtual bool ICloseCamera(const QString& strSerial) { return m_gpCameraPool->ICloseCamera(strSerial); }
virtual bool IStartCamera(const QString& strSerial) { return m_gpCameraPool->IStartCamera(strSerial); }
virtual bool IStopCamera(const QString& strSerial) { return m_gpCameraPool->IStopCamera(strSerial); }
virtual bool IDeleteCamera(const QString& strSerial) { return m_gpCameraPool->IDeleteCamera(strSerial); }
virtual bool IAddCamera(const QString& strName, const TP_CAMERA_OPTION& camOpt, bool bNew, bool bAutoRun = false) { return m_gpCameraPool->IAddCamera(strName, camOpt, bNew, bAutoRun); }
//更新json配置文件
// virtual bool updateCommJson(const QString& sJsonPath);
virtual bool updateCamJson(const QString& sJsonPath);
bool saveJsonToFile(const QJsonObject& json, const QString& fileFullName);
virtual bool ICamsStartPush() { return glpCameralPool->ICamsStartPush(); }
virtual bool ICamsPausePush() { return glpCameralPool->ICamsPausePush(); }
virtual bool ICamsStartPush() { return m_gpCameraPool->ICamsStartPush(); }
virtual bool ICamsPausePush() { return m_gpCameraPool->ICamsPausePush(); }
virtual bool ISetCalBack_GetVariantById(Cablack_GetVariantById func) { m_GetVariantFunc = func; return true; }
// private:
// int createShowWindows();
// static void releaseShowWindow(CShowWindow*& pWin, void* pData);
virtual bool IRegisterGetVariant(FuncCallBack_VarInt func);
virtual bool IRegisterImageCallBack(FuncCallBack_VarMap callback); //获取相机图像回调接口
virtual bool IRegisterResultCallBack(FuncCallBack_StrMap callback); //获取算法结果回调接口
private:
QList<QTpThreadImage*> m_imgThdPool;
//QZkMutexMap<QString, CShowWindow*> m_showWindows;
CAlgorithmResult m_algResult;
// CAlgorithmShared m_algShared;
int m_nCoreCount;
friend class CImageObject;
QList<QTpThreadImage*> m_imgThdPool;
CAlgorithmResult m_algResult;
int m_nCoreCount;
friend class CImageObject;
friend class QTpThreadImage;
Cablack_GetVariantById m_GetVariantFunc;
private:
CGlobalCoreCtrl* m_gpData{ nullptr };
CGlobalCamera* m_gpGlobalCameraZZZ{ nullptr };
ICameraPool* m_gpCameraPool{ nullptr };
IImgProc* m_gpImgProc{nullptr};
};
#endif

@ -1,6 +1,7 @@
#include "ImageObject.h"
#include "CoreCtrl.h"
#include "zfunctions.h"
#include "callbackFunc.h"
CImageObject::CImageObject(class CCoreCtrl* pCoreCtrl)
: m_pCoreCtrl(pCoreCtrl)
@ -95,7 +96,8 @@ void CImageObject::ISetCameroProperty(TP_CAMERA_PROPERTY& property)
{
if( NULL != m_pCamImg )
{
glpCameralPool->ISetCameraProperty(m_pCamImg->Serial(), property);
m_pCoreCtrl->m_gpCameraPool->ISetCameraProperty(m_pCamImg->Serial(), property);
//glpCameralPool->ISetCameraProperty(m_pCamImg->Serial(), property);
}
}
@ -123,7 +125,7 @@ void CImageObject::ISafeDataToUI(void* pData, int nDataLen)
void CImageObject::ISafeDataToUI(WORD type, void* pData, int nDataLen)
{
QByteArray data((char*)pData, nDataLen);
emTpUiDataType emType = (emTpUiDataType)(TP_UI_DATA_FROM_ALGORITHM | type);
//emTpUiDataType emType = (emTpUiDataType)(TP_UI_DATA_FROM_ALGORITHM | type);
if (NULL != m_pCamImg)
{
// gGuiCallback_FuncCall(ISafeDataToUI, emType, m_pCamImg->Serial(), data);
@ -235,7 +237,12 @@ IAlgorithmShared* CImageObject::IGetShared()
void CImageObject::IVariantMapToUI(const QVariantMap& vMap)
{
glpGuiCallback->IVariantMapToUI(TP_UI_DATA_FROM_ALGORITHM, m_pCamImg->Serial(), vMap);
if (lpCallBackFunc::instance()->m_ResultCallBackFunc)
{
lpCallBackFunc::instance()->m_ResultCallBackFunc(m_pCamImg->Serial(), vMap);
}
//glpGuiCallback->IVariantMapToUI(m_pCamImg->Serial(), vMap);
}
const ZStringA& CImageObject::ICameraSerial()

@ -12,7 +12,6 @@ public:
~CImageObject();
bool SetCameraImage(CZkCameraImage* pCamImage);
private:
// virtual const TP_IMAGE_NODE& ImageNode() { return m_imgNode; }
virtual emTpColorFormat IColorFormat();
//@nBytesPerLine: 0 means there is no valid value
virtual BYTE* IImageData(int& nOutW, int& nOutH, int& nOutBitsPerPixel, int& nBytesPerLine);
@ -43,7 +42,6 @@ private:
}
virtual void IDataToComm(DATA_TO_COMM_HEAD& head, char* pData, int nLen) {};
private:
// TP_IMAGE_NODE m_imgNode;
CZkCameraImage* m_pCamImg;
class CCoreCtrl* m_pCoreCtrl;
};

@ -1,16 +1,6 @@
/******************************************************************************
Copyright(C):2015~2018 hzleaper
FileName:LoadModule.cpp
Author:zhikun wu
Email:zk.wu@hzleaper.com
Tools:vs2010 pc on company
Created:2015/03/23
History:23:3:2015 17:48
*******************************************************************************/
#include "LoadModule.h"
#include "LoadModule.h"
CLoadModule::CLoadModule(const char *szLibName, const char *szFuncInit, const char *szFuncFree, const char* szPath /* = NULL */)
// :m_lib(szLibName)
{
QString dllFile;
if( NULL != szPath )

@ -1,13 +1,4 @@
/******************************************************************************
Copyright(C):2015~2018 hzleaper
FileName:LoadModule.h
Author:zhikun wu
Email:zk.wu@hzleaper.com
Tools:vs2010 pc on company
Created:2015/03/23
History:23:3:2015 17:48
*******************************************************************************/
#ifndef __LOAD_MODULE_H
#ifndef __LOAD_MODULE_H
#define __LOAD_MODULE_H
#include <QtCore/QLibrary>

@ -1,107 +1,95 @@
/******************************************************************************
Copyright(C):2015~2018 hzleaper
FileName:ModulesManager.cpp
Author:zhikun wu
Email:zk.wu@hzleaper.com
Tools:vs2010 pc on company
Created:2015/03/23
History:23:3:2015 16:20
*******************************************************************************/
#include "ModulesManager.h"
#include "LoadModule.h"
#include "globalCoreCtrl.h"
#define EXTERN_LIB_FUNC(lib_name) \
extern "C" void* lib_name##_Init(void* inParam);\
extern "C" void lib_name##_Free();
#ifndef MDL_CAMERA_USE_DLL
EXTERN_LIB_FUNC(Lib_Camera)
#endif
#ifndef MDL_IMGPROC_USE_DLL
EXTERN_LIB_FUNC(Lib_ImgProc)
#endif
#ifndef MDL_COMMUNICATE_USE_DLL
EXTERN_LIB_FUNC(Lib_Communicate)
#endif
inline void* CModulesManager::getModule(const char* szLib, const char* szInit, const char* szFree, void* pInitParam /* = NULL */)
{
delModule(szLib);
CLoadModule* pLib = new CLoadModule(szLib, szInit, szFree, gpGlobalData->tgdDllPath);
return pLib->ModuleInit(pInitParam);
}
inline void CModulesManager::delModule(const char* szLib)
{
CLoadModule* pLib = m_mapLibs.value(szLib, NULL);
if( NULL != pLib )
{
pLib->ModuleFree();
delete pLib;
m_mapLibs.remove(szLib);
}
}
CModulesManager::CModulesManager(void)
{
}
CModulesManager::~CModulesManager(void)
{
}
int CModulesManager::LoadModules()
{
int nRet = 0;
//load "tpCamera" modules
void *pReturn = NULL;
//Load camera library
CAMERA_IN_PARAM camInParam;
camInParam.pCallback = gpCoreCtrlGlobal;
camInParam.pGlobalData = gpGlobalData;
#ifdef MDL_CAMERA_USE_DLL
pReturn = getModule("tpCamera", "Lib_Camera_Init", "Lib_Camera_Free", &camInParam);
#else
pReturn = Lib_Camera_Init(&camInParam);
#endif
if( NULL == pReturn )
{
return (-nRet);
}
glpCameralPool = (ICameraPool*)pReturn;
++nRet;
//Load imgproc library
IMGPROC_IN_PARAM imgprocInParam;
imgprocInParam.pGlobalData = gpGlobalData;
#ifdef MDL_IMGPROC_USE_DLL
pReturn = getModule("tpImgProc", "Lib_ImgProc_Init", "Lib_ImpProc_Free", &imgprocInParam);
#else
pReturn = Lib_ImgProc_Init(&imgprocInParam);
#endif
if( NULL == pReturn )
{
return (-nRet);
}
glpImgProc = (IImgProc*)pReturn;
++nRet;
return nRet;
}
void CModulesManager::FreeModules()
{
#ifdef MDL_IMGPROC_USE_DLL
delModule("tpImgProc");
#else
Lib_ImgProc_Free();
#endif
#ifdef MDL_CAMERA_USE_DLL
delModule("tpCamera");
#else
Lib_Camera_Free();
#endif
}
// #include "ModulesManager.h"
// #include "LoadModule.h"
// #include "globalCoreCtrl.h"
//
// #define EXTERN_LIB_FUNC(lib_name) \
// extern "C" void* lib_name##_Init(void* inParam);\
// extern "C" void lib_name##_Free();
//
// #ifndef MDL_CAMERA_USE_DLL
// EXTERN_LIB_FUNC(Lib_Camera)
// #endif
//
// #ifndef MDL_IMGPROC_USE_DLL
// EXTERN_LIB_FUNC(Lib_ImgProc)
// #endif
//
// #ifndef MDL_COMMUNICATE_USE_DLL
// EXTERN_LIB_FUNC(Lib_Communicate)
// #endif
//
// inline void* CModulesManager::getModule(const char* szLib, const char* szInit, const char* szFree, void* pInitParam /* = NULL */)
// {
// delModule(szLib);
// CLoadModule* pLib = new CLoadModule(szLib, szInit, szFree, gpGlobalData->tgdDllPath);
// return pLib->ModuleInit(pInitParam);
// }
//
// inline void CModulesManager::delModule(const char* szLib)
// {
// CLoadModule* pLib = m_mapLibs.value(szLib, NULL);
// if( NULL != pLib )
// {
// pLib->ModuleFree();
// delete pLib;
// m_mapLibs.remove(szLib);
// }
// }
//
// CModulesManager::CModulesManager(void)
// {
// }
//
//
// CModulesManager::~CModulesManager(void)
// {
// }
//
// int CModulesManager::LoadModules()
// {
// int nRet = 0;
// //load "tpCamera" modules
// void *pReturn = NULL;
// //Load camera library
// CAMERA_IN_PARAM camInParam;
// camInParam.pCallback = gpCoreCtrlGlobal;
// camInParam.pGlobalData = gpGlobalData;
//
// pReturn = Lib_Camera_Init(&camInParam);
//
// if( NULL == pReturn )
// {
// return (-nRet);
// }
//
// glpCameralPool = (ICameraPool*)pReturn;
// ++nRet;
// //Load imgproc library
// IMGPROC_IN_PARAM imgprocInParam;
// imgprocInParam.pGlobalData = gpGlobalData;
//
// pReturn = Lib_ImgProc_Init(&imgprocInParam);
//
// if( NULL == pReturn )
// {
// return (-nRet);
// }
// glpImgProc = (IImgProc*)pReturn;
// ++nRet;
//
// return nRet;
// }
//
// void CModulesManager::FreeModules()
// {
// #ifdef MDL_IMGPROC_USE_DLL
// delModule("tpImgProc");
// #else
// Lib_ImgProc_Free();
// #endif
// #ifdef MDL_CAMERA_USE_DLL
// delModule("tpCamera");
// #else
// Lib_Camera_Free();
// #endif
// }

@ -1,38 +1,22 @@
/******************************************************************************
Copyright(C):2015~2018 hzleaper
FileName:ModulesManager.h
Author:zhikun wu
Email:zk.wu@hzleaper.com
Tools:vs2010 pc on company
Created:2015/03/23
History:23:3:2015 16:20
*******************************************************************************/
#ifndef __MODULES_MANAGER_H
#define __MODULES_MANAGER_H
//modues controls
//#define MDL_CAMERA_USE_DLL //open it if using camera's module as a dll
//#define MDL_IMGPROC_USE_DLL
//#define MDL_COMMUNICATE_USE_DLL
/////////////////////////////////////////
#include "icamera.h"
#include "iCoreCtrl.h"
#include <QtCore/QMap>
class CModulesManager
{
public:
CModulesManager(void);
~CModulesManager(void);
int LoadModules();
void FreeModules();
private:
inline void* getModule(const char* szLib, const char* szInit, const char* szFree, void* pInitParam = NULL);
inline void delModule(const char* szLib);
private:
QMap<QString, class CLoadModule*> m_mapLibs;
};
#endif
// #ifndef __MODULES_MANAGER_H
// #define __MODULES_MANAGER_H
//
// #include "icamera.h"
// #include "iCoreCtrl.h"
// #include <QtCore/QMap>
//
// class CModulesManager
// {
// public:
// CModulesManager(void);
// ~CModulesManager(void);
// int LoadModules();
// void FreeModules();
// private:
// inline void* getModule(const char* szLib, const char* szInit, const char* szFree, void* pInitParam = NULL);
// inline void delModule(const char* szLib);
// private:
// QMap<QString, class CLoadModule*> m_mapLibs;
// };
//
// #endif

@ -1,13 +1,4 @@
/******************************************************************************
Copyright(C):2015~2018 hzleaper
FileName:QZkShowImage.cpp
Author:zhikun wu
Email:zk.wu@hzleaper.com
Tools:vs2010 pc on company
Created:2015/04/17
History:17:4:2015 15:10
*******************************************************************************/
#include "QZkShowImage.h"
#include "QZkShowImage.h"
#include "ZkCameraImage.h"
QZkShowImage::QZkShowImage()

@ -1,13 +1,4 @@
/******************************************************************************
Copyright(C):2015~2018 hzleaper
FileName:QZkShowImage.h
Author:zhikun wu
Email:zk.wu@hzleaper.com
Tools:vs2010 pc on company
Created:2015/04/17
History:17:4:2015 15:10
*******************************************************************************/
#ifndef QZKSHOWIMAGE_H
#ifndef QZKSHOWIMAGE_H
#define QZKSHOWIMAGE_H
#include <QtGui/QPixmap>

@ -1,13 +1,4 @@
/******************************************************************************
Copyright(C):2015~2018 hzleaper
FileName:ZkCameraImage.cpp
Author:zhikun wu
Email:zk.wu@hzleaper.com
Tools:vs2010 pc on company
Created:2015/04/16
History:16:4:2015 15:40
*******************************************************************************/
#include "ZkCameraImage.h"
#include "ZkCameraImage.h"
CZkCameraImage::CZkCameraImage()
{

@ -1,13 +1,4 @@
/******************************************************************************
Copyright(C):2015~2018 hzleaper
FileName:ZkCameraImage.h
Author:zhikun wu
Email:zk.wu@hzleaper.com
Tools:vs2010 pc on company
Created:2015/04/16
History:16:4:2015 15:39
*******************************************************************************/
#ifndef ZKCAMERAIMAGE_H
#ifndef ZKCAMERAIMAGE_H
#define ZKCAMERAIMAGE_H
#include "baseDefine.h"
@ -25,35 +16,22 @@ public:
~CZkCameraImage();
int CopyCameraObject(ICameraObject* pCamObj);
int CopyCameraObject2(ICameraObject* pCamObj);//no combine and maybe use QImage
// bool CopyImageData(const BYTE* pData, int nW, int nH, int nBits, emTpColorFormat nColorFormat);
// bool CopyQImage(const QImage& image);
//void SetSerial(const char* szSerial) {
// m_strSerial = szSerial;
//}
const ZStringA& Serial() {
return m_strSerial;
}
uint GetId() {
return m_nId;
}
//void SetId(long nId) {
// m_nId = nId;
//}
//void SetFrameNum(long nFrameNum) {
// m_nFrameNum = nFrameNum;
//}
ULONG FrameNumber() {
return m_nFrameNum;
}
//void SetColorFormat(emTpColorFormat nColorFormat) {
// m_colorFormat = nColorFormat;
//}
emTpColorFormat ColorFormat() {
return m_colorFormat;
}
//void SetTriggerCount(long nTriggers) {
// m_nTriggerCount = nTriggers;
//}
long TriggerCount() {
return m_nTriggerCount;
}
@ -71,9 +49,6 @@ public:
long Algorithm() {
return m_nAlgorithm;
}
//void SetFileName(const ZStringA& strName) {
// m_fileName = strName;
//}
const ZStringA& FileName() {
return m_fileName;
}
@ -92,9 +67,6 @@ public:
INT64 Stamp() {
return m_nTimeStamp;
}
//void SetDllSuffix(const ZStringA& strName) {
// m_dllSuffix = strName;
//}
const ZStringA& DllSuffix() {
return m_dllSuffix;
}

@ -1,13 +1,4 @@
/******************************************************************************
Copyright(C):2015~2018 hzleaper
FileName:ZkImage.cpp
Author:zhikun wu
Email:zk.wu@hzleaper.com
Tools:vs2010 pc on company
Created:2015/04/16
History:16:4:2015 11:06
*******************************************************************************/
#include "ZkImage.h"
#include "ZkImage.h"
CZkImage::CZkImage()
{

@ -1,13 +1,4 @@
/******************************************************************************
Copyright(C):2015~2018 hzleaper
FileName:ZkImage.h
Author:zhikun wu
Email:zk.wu@hzleaper.com
Tools:vs2010 pc on company
Created:2015/04/16
History:16:4:2015 11:06
*******************************************************************************/
#ifndef ZKIMAGE_H
#ifndef ZKIMAGE_H
#define ZKIMAGE_H
#include "baseDefine.h"

@ -0,0 +1,20 @@
#ifndef _H_CALLBACKFUNC_H_
#define _H_CALLBACKFUNC_H_
#include "lp_singleton_base.h"
#include "iCoreCtrl.h"
/*全局回调函数指针*/
class lpCallBackFunc : public lp_singleton_base< lpCallBackFunc>
{
public:
lpCallBackFunc() {};
~lpCallBackFunc() {};
public:
FuncCallBack_VarInt m_GetVariantCallBackFunc;//检测算法传输函数
FuncCallBack_StrMap m_ResultCallBackFunc;//检测结果回调函数
FuncCallBack_VarMap m_ImageCallBackFunc;//图像获取回调函数
};
#endif

@ -1,13 +1,4 @@
/******************************************************************************
Copyright(C):2015~2018 hzleaper
FileName:globalCoreCtrl.h
Author:zhikun wu
Email:zk.wu@hzleaper.com
Tools:vs2010 pc on company
Created:2015/03/24
History:24:3:2015 17:30
*******************************************************************************/
#ifndef __GLOBAL_CORE_CTRL_H
#ifndef __GLOBAL_CORE_CTRL_H
#define __GLOBAL_CORE_CTRL_H
#include "baseInclude.h"
@ -34,9 +25,7 @@ public:
CGlobalCoreCtrl(const CORE_CTRL_IN_PARAM* pParam){
m_pCameraPool = NULL;
m_pImageProc = NULL;
m_pGuiCallback = pParam->pGuiCb;
m_pGlobalData = pParam->pGlobalData;
// m_pCoreSetting = pParam->pCoreSetting;
readCoreCtrlCfg();
}
~CGlobalCoreCtrl() {}
@ -49,25 +38,21 @@ public:
TP_GLOBAL_DATA* m_pGlobalData;
TP_CORE_SETTING m_coreSetting;
ICameraPool* m_pCameraPool;
IGuiCallback* m_pGuiCallback;
IImgProc* m_pImageProc;
};
extern CGlobalCoreCtrl* gpData;
#define gpCoreCtrlGlobal gpData
#define gpGlobalData ((TP_GLOBAL_DATA*)(gpData->m_pGlobalData))
#define gCoreSetting gpData->m_coreSetting
#define glpCameralPool gpData->m_pCameraPool
//#define glpMainPath NULL != gpData ? gpData->tgdMainPath : ".\\"
// #define gcallCameraPool(fc) if( NULL != glpCameralPool ) glpCameralPool->##fc##()
// #define gcallCameraPoolParam(fc, ...) if( NULL != glpCameralPool) glpCameralPool->##fc##(__VA_VRGS__)
#define glpGuiCallback gpData->m_pGuiCallback
#define gfcbGuiSetImage(...) if( NULL != glpGuiCallback ) glpGuiCallback->ISetCameraImage(__VA_ARGS__)
#define gGuiCallback_FuncCall(fun, ...) if( NULL != glpGuiCallback ) glpGuiCallback->##fun##(__VA_ARGS__)
#define glpImgProc gpData->m_pImageProc
// extern CGlobalCoreCtrl* gpData;
//
// #define gpCoreCtrlGlobal gpData
//
// #define gpGlobalData ((TP_GLOBAL_DATA*)(gpData->m_pGlobalData))
// #define gCoreSetting gpData->m_coreSetting
// #define glpCameralPool gpData->m_pCameraPool
// #define glpGuiCallback gpData->m_pGuiCallback
// #define gfcbGuiSetImage(...) if( NULL != glpGuiCallback ) glpGuiCallback->ISetCameraImage(__VA_ARGS__)
// #define gGuiCallback_FuncCall(fun, ...) if( NULL != glpGuiCallback ) glpGuiCallback->##fun##(__VA_ARGS__)
//
// #define glpImgProc gpData->m_pImageProc
#endif

@ -1,13 +1,4 @@
/******************************************************************************
Copyright(C):2015~2018 hzleaper
FileName:iCameraObject.h
Author:zhikun wu
Email:zk.wu@hzleaper.com
Tools:vs2010 pc on company
Created:2015/05/25
History:25:5:2015 15:52
*******************************************************************************/
#ifndef _I_CAMERA_OBJECT_H
#ifndef _I_CAMERA_OBJECT_H
#define _I_CAMERA_OBJECT_H
#include <QRunnable>
@ -18,7 +9,6 @@
#include "QZkMutexList.h"
#include <QFileInfo>
#include <QDir>
//#define _USE_CAMERA_SERIAL_ENCRYPTO
class CSaveImgTask : public QRunnable
{

@ -1,13 +1,4 @@
/******************************************************************************
Copyright(C):2015~2018 hzleaper
FileName:qtpthreadbase.cpp
Author:zhikun wu
Email:zk.wu@hzleaper.com
Tools:vs2010 pc on company
Created:2015/03/26
History:26:3:2015 17:06
*******************************************************************************/
#include "qtpthreadbase.h"
#include "qtpthreadbase.h"
QTpThreadBase::QTpThreadBase(QObject *parent)
: QThread(parent)

@ -1,13 +1,4 @@
/******************************************************************************
Copyright(C):2015~2018 hzleaper
FileName:qtpthreadbase.h
Author:zhikun wu
Email:zk.wu@hzleaper.com
Tools:vs2010 pc on company
Created:2015/03/26
History:26:3:2015 17:06
*******************************************************************************/
#ifndef QTPTHREADBASE_H
#ifndef QTPTHREADBASE_H
#define QTPTHREADBASE_H
#include "baseInclude.h"

@ -1,13 +1,4 @@
/******************************************************************************
Copyright(C):2015~2018 hzleaper
FileName:qtpthreadimage.cpp
Author:zhikun wu
Email:zk.wu@hzleaper.com
Tools:vs2010 pc on company
Created:2015/03/26
History:26:3:2015 17:10
*******************************************************************************/
#include "qtpthreadimage.h"
#include "qtpthreadimage.h"
#include "globalCoreCtrl.h"
#include "CoreCtrl.h"
#include <QDebug>
@ -18,7 +9,7 @@ QTpThreadImage::QTpThreadImage(class CCoreCtrl* pCtrl, class IDetectorEngine* pD
, m_objImage(pCtrl)
, m_pDE(pDE)
{
// LOG_SPIDER::InitLog("", "log.txt");
}
QTpThreadImage::~QTpThreadImage()
@ -31,7 +22,7 @@ bool QTpThreadImage::loop()
QTime timespan;
timespan.start();
CZkCameraImage* pCamImage = glpCameralPool->IPopCameraImage();
CZkCameraImage* pCamImage = m_pCoreCtrl->m_gpCameraPool->IPopCameraImage();
int span = timespan.elapsed();
if (span > 100)
{
@ -60,14 +51,14 @@ bool QTpThreadImage::loop()
// Algorithm process image
timespan.restart();
m_objImage.SetCameraImage(pCamImage);
glpImgProc->IImageProcess(&m_objImage, m_pDE);
m_pCoreCtrl->m_gpImgProc->IImageProcess(&m_objImage, m_pDE);
qDebug() << "Process Image(ID:" << pCamImage->FrameNumber()
<< ") cost " << timespan.elapsed() << " MSecs"
<< " - " __FUNCTION__;
}
//release CameraImage
m_objImage.SetCameraImage(NULL);
glpCameralPool->IFreeCameraImage(pCamImage);
m_pCoreCtrl->m_gpCameraPool->IFreeCameraImage(pCamImage);
}
else
{

@ -1,13 +1,4 @@
/******************************************************************************
Copyright(C):2015~2018 hzleaper
FileName:qtpthreadimage.h
Author:zhikun wu
Email:zk.wu@hzleaper.com
Tools:vs2010 pc on company
Created:2015/03/26
History:26:3:2015 17:10
*******************************************************************************/
#ifndef QTPTHREADIMAGE_H
#ifndef QTPTHREADIMAGE_H
#define QTPTHREADIMAGE_H
#include "qtpthreadbase.h"

@ -1,19 +1,10 @@
/******************************************************************************
Copyright(C):2015~2018 hzleaper
FileName:CameraPool.cpp
Author:zhikun wu
Email:zk.wu@hzleaper.com
Tools:vs2010 pc on company
Created:2015/03/25
History:25:3:2015 11:28
*******************************************************************************/
#include "CameraPool.h"
#include "CameraPool.h"
#include <QDebug>
#include "callbackFunc.h"
CCameraPool::CCameraPool(void)
: m_thdTrigger(this)
, m_libs(gpGlobalData->tgdDllPath)
// :m_mutexImgQueue(QMutex::Recursive)
, m_libs("")
{
m_nTriggerMode = DEV_TRIGGER_MODE_STOP;
m_nFrameRate = 0;
@ -41,14 +32,14 @@ void CCameraPool::FreePool()
int CCameraPool::ICreateCameraes()
{
QList<QString> keys = gpGlobalCamera->CameraKeys();//cameraes.keys();
QList<QString> keys;// = gpGlobalCamera->CameraKeys();//cameraes.keys();
for (int i = 0; i < keys.size(); ++i)
{
if (m_cameraes.contains(keys[i]))
{
continue;
}
ICameraObject* pObject = m_libs.Create(gpGlobalCamera->CameraOption(keys[i]), this);
ICameraObject* pObject;// = m_libs.Create(gpGlobalCamera->CameraOption(keys[i]), this);
if (NULL == pObject)
{
continue;
@ -128,7 +119,7 @@ bool CCameraPool::IDeleteCamera(const QString& strSerial)
m_libs.Delete(pCamera);
}
m_cameraes.remove(strSerial);
gpGlobalCamera->delCameraOption(strSerial);
// gpGlobalCamera->delCameraOption(strSerial);
return true;
}
@ -141,10 +132,10 @@ bool CCameraPool::IAddCamera(const QString& strName, const TP_CAMERA_OPTION& cam
if (!bret) return bret;
}
gpGlobalCamera->updateCameraOption(strName, camOpt);
//gpGlobalCamera->updateCameraOption(strName, camOpt);
if (bNew){
ICameraObject* pCamObj = m_libs.Create(gpGlobalCamera->CameraOption(strName), this);
ICameraObject* pCamObj;// = m_libs.Create(gpGlobalCamera->CameraOption(strName), this);
if (pCamObj)
{
pCamObj->m_pCamOpt->status = TP_CAMERA_STATUS_INITED;
@ -338,27 +329,27 @@ void CCameraPool::DeviceLost(const QString& strName)
QList<QString> CCameraPool::ICameraKeys()
{
return gpGlobalCamera->CameraKeys();
return QList<QString>();// gpGlobalCamera->CameraKeys();
}
QList<QString> CCameraPool::ICameraKeysOrderByIds()
{
return gpGlobalCamera->CameraKeysOrderByIds();
return QList<QString>();// gpGlobalCamera->CameraKeysOrderByIds();
}
bool CCameraPool::ICameraOption(const QString& strSerial, TP_CAMERA_OPTION& camOpt)
{
return gpGlobalCamera->CameraOption(strSerial, camOpt);
return false;// gpGlobalCamera->CameraOption(strSerial, camOpt);
}
bool CCameraPool::ICameraOptionByKey(const QString& strSerial, TP_CAMERA_OPTION& camOpt)
{
return gpGlobalCamera->CameraOptionByKey(strSerial, camOpt);
return false;//gpGlobalCamera->CameraOptionByKey(strSerial, camOpt);
}
bool CCameraPool::ISetCameraOption(const QString& strSerial, const TP_CAMERA_OPTION& camOpt)
{
bool bRet = gpGlobalCamera->SetCameraOption(strSerial, camOpt);
bool bRet = false;//gpGlobalCamera->SetCameraOption(strSerial, camOpt);
if (bRet)
{
ICameraObject* pCam = m_cameraes.value(strSerial, NULL);
@ -396,15 +387,15 @@ QList<QString> CCameraPool::IEnumAvailableCameras(emTpDeviceType camType)
void CCameraPool::ISetTriggerMode(emTpDeviceTriggerMode mode, emTpTriggerDirection nDirection /* = TRIGGER_DIRECT_FOREWARD */, long nFrameRate /* = 0 */)
{
gGlobalPoolOption.triggerMode = mode;
gGlobalPoolOption.triggerDirection = nDirection;
gGlobalPoolOption.frameRate = nFrameRate;
gGlobalPoolOption.fixedFrames = nFrameRate;
m_nTriggerMode = mode;
m_nFrameRate = nFrameRate;
//set every device's trigger
m_thdTrigger.LockWorked();
m_cameraes.iterateCall(cameraSetTriggerMode, &gGlobalPoolOption);
// gGlobalPoolOption.triggerMode = mode;
// gGlobalPoolOption.triggerDirection = nDirection;
// gGlobalPoolOption.frameRate = nFrameRate;
// gGlobalPoolOption.fixedFrames = nFrameRate;
// m_nTriggerMode = mode;
// m_nFrameRate = nFrameRate;
// //set every device's trigger
// m_thdTrigger.LockWorked();
// m_cameraes.iterateCall(cameraSetTriggerMode, &gGlobalPoolOption);
IStartDevices();
m_thdTrigger.UnlockWorked();
//begin or end trigger's thread
@ -422,7 +413,6 @@ void CCameraPool::ISetTriggerMode(emTpDeviceTriggerMode mode, emTpTriggerDirecti
}
}
void CCameraPool::IManualTrigger(emTpTriggerDirection nDirection /* = TRIGGER_DIRECT_FOREWARD */)
{
if( DEV_TRIGGER_MODE_OUT != m_nTriggerMode )
@ -525,55 +515,22 @@ void CCameraPool::cameraSetProperty(class ICameraObject*& pCam, void* pData)
pCam->ISetProperty((TP_CAMERA_PROPERTY*)pData);
}
//ICameraObject* CCameraPool::CreateCamera(TP_CAMERA_OPTION* pCamOpt)
//{
// if( NULL == pCamOpt )
// {
// return NULL;
// }
// ICameraObject* pObj = NULL;
// if( DEV_CAMERA == pCamOpt->deviceType )
// {
// //pObj = new CGigeCamera(pCamOpt, this);
// }
// else if( DEV_VIRTUAL == pCamOpt->deviceType )
// {
// //pObj = new CVirtualCamera(pCamOpt, this);
// }
// else if( DEV_BITFLOW == pCamOpt->deviceType )
// {
// //pObj = new CBitflowCameraBi(pCamOpt, this);
// }
// return pObj;
//}
QList<TP_CAMERA_WIN*> CCameraPool::ICameraWins()
{
return gpGlobalCamera->CameraWins();
}
CZkCameraImage* CCameraPool::IPopCameraImage()
{
return m_imagesList.takeFirst(NULL);
/*CZkCameraImage *pCamImg = m_imagesList.takeFirst(NULL);
if (NULL != pCamImg)
{
}
return pCamImg;*/
}
//////////////////////////////////////////////////////////////////////////////////////////////
int CCameraPool::createDeviceByOptiones()
{
QList<QString> keys = gpGlobalCamera->CameraKeys();//cameraes.keys();
QList<QString> keys;// = gpGlobalCamera->CameraKeys();//cameraes.keys();
for( int i = 0; i < keys.size(); ++i )
{
if( m_cameraes.contains(keys[i]) )
{
continue;
}
ICameraObject* pObject = m_libs.Create(gpGlobalCamera->CameraOption(keys[i]), this);
ICameraObject* pObject;// = m_libs.Create(gpGlobalCamera->CameraOption(keys[i]), this);
if( NULL == pObject )
{
continue;
@ -721,12 +678,19 @@ int CCameraPool::IPushCameraData(ICameraObject* pCamObj)
if (NULL != pImage)
{
//
if (!gpGlobalCamCallback){
delete pImage;
return 0;
}
// if (!gpGlobalCamCallback){
// delete pImage;
// return 0;
// }
try{
pImage->SetVarFromUI(gpGlobalCamCallback->IGetVariantById(pCamObj->m_pCamOpt->id));
if (lpCallBackFunc::instance()->m_GetVariantCallBackFunc)
{
QVariant val = lpCallBackFunc::instance()->m_GetVariantCallBackFunc(pCamObj->m_pCamOpt->id);
pImage->SetVarFromUI(val);
}
// else
// pImage->SetVarFromUI(gpGlobalCamCallback->IGetVariantById(pCamObj->m_pCamOpt->id));
//QVariantMap map;
//map.clear();
@ -811,7 +775,12 @@ int CCameraPool::IPushCameraData2(ICameraObject* pCamObj)
return 0;
}
pImage->SetVarFromUI(gpGlobalCamCallback->IGetVariantById(pCamObj->m_pCamOpt->id));
if (lpCallBackFunc::instance()->m_GetVariantCallBackFunc)
{
QVariant val = lpCallBackFunc::instance()->m_GetVariantCallBackFunc(pCamObj->m_pCamOpt->id);
pImage->SetVarFromUI(val);
}
//pImage->SetVarFromUI(gpGlobalCamCallback->IGetVariantById(pCamObj->m_pCamOpt->id));
m_imagesList.append(pImage);
//
if (pCamObj->NeedStopping())
@ -823,7 +792,7 @@ int CCameraPool::IPushCameraData2(ICameraObject* pCamObj)
char* CCameraPool::IGetMainPath()
{
return gpGlobalCamera->m_pGlobalData->tgdMainPath;
return nullptr;// gpGlobalCamera->m_pGlobalData->tgdMainPath;
}
void CCameraPool::IFreeCameraImage(CZkCameraImage *pCamImg)
{
@ -832,7 +801,7 @@ void CCameraPool::IFreeCameraImage(CZkCameraImage *pCamImg)
QMap<QString, QString> CCameraPool::IGetCamShowNames()
{
return gpGlobalCamera->GetCamShowNames();
return QMap<QString, QString>();// gpGlobalCamera->GetCamShowNames();
}
void CCameraPool::ISetCameraEncode(INT64 code, INT64 rate)
@ -861,23 +830,3 @@ void CCameraPool::cameraSetVirtuleImages(class ICameraObject*& pCam, void* pData
}
}
QList<QString> CCameraPool::ICamWinKeys()
{
return gpGlobalCamera->camWinKeys();
}
bool CCameraPool::ICamWinOptionByKey(const QString& strKey, TP_CAMERA_WIN& camwinOpt)
{
return gpGlobalCamera->camWinByKey(strKey, camwinOpt);
}
bool CCameraPool::IAddCamWin(const QString& strKey, const TP_CAMERA_WIN& camwinOpt, bool bNew)
{
return gpGlobalCamera->addCamWin(strKey, camwinOpt, bNew);
}
bool CCameraPool::IDelCamWin(const QString& strKey)
{
return gpGlobalCamera->delCamWin(strKey);
}

@ -1,19 +1,9 @@
/******************************************************************************
Copyright(C):2015~2018 hzleaper
FileName:CameraPool.h
Author:zhikun wu
Email:zk.wu@hzleaper.com
Tools:vs2010 pc on company
Created:2015/03/25
History:25:3:2015 11:26
*******************************************************************************/
#ifndef __CAMERA_POOL_H_20150325
#ifndef __CAMERA_POOL_H_20150325
#define __CAMERA_POOL_H_20150325
#include "icamera.h"
#include <QtCore/QMap>
#include <QtCore/QQueue>
//#include <QtCore/QMutexLocker>
#include <QtCore/QString>
#include "triggerthread.h"
#include "QZkMutexList.h"
@ -21,7 +11,6 @@
#include "iCameraObject.h"
#include "LibCameraes.h"
class CCameraPool : public ICameraPool, public IPoolCallback
{
public:
@ -74,7 +63,7 @@ private:
virtual void IManualTrigger( emTpTriggerDirection nDirection = TRIGGER_DIRECT_FOREWARD);
virtual void ISnapImage(const QStringList& camKeys);
virtual void ISendSoftTrigger(const QStringList& camKeys);
virtual QList<TP_CAMERA_WIN*> ICameraWins();
// virtual QList<TP_CAMERA_WIN*> ICameraWins();
virtual CZkCameraImage* IPopCameraImage();
virtual int ICameraImages() {
return m_imagesList.size();
@ -87,24 +76,15 @@ private:
virtual void ISetCameraEncode(INT64 code, INT64 rate);
virtual void ISetVirtualImages(const QString& camera, const QStringList& szImages);
//operate camera window
virtual QList<QString> ICamWinKeys();
virtual bool ICamWinOptionByKey(const QString& strKey, TP_CAMERA_WIN& camwinOpt);
virtual bool IAddCamWin(const QString& strKey, const TP_CAMERA_WIN& camwinOpt, bool bNew);
virtual bool IDelCamWin(const QString& strKey);
virtual bool ICamsStartPush();
virtual bool ICamsPausePush();
///////////////////////////////////////////////////////////////////////////////////////////
// ICameraObject* CreateCamera(TP_CAMERA_OPTION* pCamOpt);
void calRelyOn();
///////////////////////////////////////////////////////////////////////////////////////////////
void releaseImagesList() {
//m_imagesList.iterateCall(iterateCallImageErase, NULL);
m_imagesList.clear(iterateCallImageErase, NULL);
m_imagesMerging.clear(iterateCallImageErase, NULL);
//m_imagesCache.clear(iterateCallImageErase, NULL);
}
static void iterateCallImageErase(class CZkCameraImage*& pImage, void* pData) {
delete pImage;
@ -136,7 +116,6 @@ private:
//**the key is unique name, not serial number**
QZkMutexMap<QString, CZkCameraImage*> m_imagesMerging;
QZkMutexList<CZkCameraImage*> m_imagesList;
//QZkMutexMap<QString, CZkCameraImage*> m_imagesCache;
CTriggerThread m_thdTrigger;
emTpDeviceTriggerMode m_nTriggerMode;
long m_nFrameRate;

@ -1,13 +1,4 @@
/******************************************************************************
Copyright(C):2015~2018 hzleaper
FileName:LibCameraes.cpp
Author:zhikun wu
Email:zk.wu@hzleaper.com
Tools:vs2010 pc on company
Created:2015/05/26
History:26:5:2015 16:34
*******************************************************************************/
#include "LibCameraes.h"
#include "LibCameraes.h"
#include <QtCore\qfile.h>
#include <QDebug>

@ -1,13 +1,4 @@
/******************************************************************************
Copyright(C):2015~2018 hzleaper
FileName:LibCameraes.h
Author:zhikun wu
Email:zk.wu@hzleaper.com
Tools:vs2010 pc on company
Created:2015/05/26
History:26:5:2015 16:34
*******************************************************************************/
#ifndef LIBCAMERAES_H
#ifndef LIBCAMERAES_H
#define LIBCAMERAES_H
#include "iCameraObject.h"

@ -1,24 +1,11 @@
/******************************************************************************
Copyright(C):2015~2018 hzleaper
FileName:globalCamera.cpp
Author:zhikun wu
Email:zk.wu@hzleaper.com
Tools:vs2010 pc on company
Created:2015/04/09
History:9:4:2015 13:23
*******************************************************************************/
#include <QDir>
#include <QDir>
#include "globalCamera.h"
#include "ZkCameraImage.h"
#include <QReadWriteLock>
#include <QCoreApplication>
#ifdef _USE_CAMERA_SERIAL_ENCRYPTO
#include "QZkSerialNumbers.h"
#endif
const char CGlobalCamera::cs_szCfgName[] = "camera";
CGlobalCamera::CGlobalCamera(const CAMERA_IN_PARAM* pInParam)
:m_mtxCam(QMutex::Recursive)
{
@ -101,8 +88,8 @@ void CGlobalCamera::readConfig()
{
int nError;
//read config from ".json" file
QString szFileName(m_pGlobalData->tgdMainPath);
szFileName.append(m_pGlobalData->tgdFolderNames[TP_FOLDER_NAME_CONFIG]).append(cs_szCfgName).append(TP_STR::cszJsonSuffix);
QString szFileName(""/*m_pGlobalData->tgdMainPath*/);
szFileName.append("./config/"/*m_pGlobalData->tgdFolderNames[TP_FOLDER_NAME_CONFIG]*/).append(cs_szCfgName).append(TP_STR::cszJsonSuffix);
// szFileName.append(TP_STR::cszCfgFolder)
QMutexLocker locker(&m_mtxCam);
QJsonObject objJson = m_jsonCamera = QZkJsonParser::ReadJsonObject(szFileName, &nError);
@ -220,35 +207,6 @@ void CGlobalCamera::readConfig()
m_cameraesOption.insert(pCamOpt->uniqueName, pCamOpt);
}
}
objTmp = objJson["windows"].toObject();
if (!objTmp.isEmpty())
{
for (QJsonObject::Iterator it = objTmp.begin(); it != objTmp.end(); ++it)
{
QJsonObject objWin = it.value().toObject();
if (objWin.isEmpty())
{
continue;
}
TP_CAMERA_WIN* pWin = new TP_CAMERA_WIN;
if (NULL == pWin)
{
continue;
}
pWin->key = it.key();
pWin->device = objWin.value("device").toString();
pWin->images = objWin.value("images").toInt(1);
pWin->buffers = objWin.value("buffers").toInt(2);
pWin->bitsPerPixel = objWin.value("bitsperpixel").toInt(32);
pWin->index = objWin.value("index").toInt(0);
pWin->bufferW = objWin.value("buffer_w").toInt(0);
pWin->bufferH = objWin.value("buffer_h").toInt(0);
pWin->mirror = objWin.value("mirror").toInt(0);
pWin->bCacheOriginImage = objWin.value("cache_origin").toBool();
pWin->bNeedRgbSwapped = objWin.value("rgb_swapped").toBool();
m_cameraWins.append(pWin);
}
}
}
void CGlobalCamera::checkFolder(QString& sFolder)
@ -266,7 +224,7 @@ void CGlobalCamera::checkFolder(QString& sFolder)
void CGlobalCamera::releaseConfig(const QString& key /* = NULL */)
{
m_cameraesOption.clear(releaseCameraOption);
m_cameraWins.clear(releaseCameraWin, NULL);
}
void CGlobalCamera::releaseCameraOption(const QString& key, TP_CAMERA_OPTION*& pCamOpt, void* pData)
@ -274,11 +232,6 @@ void CGlobalCamera::releaseCameraOption(const QString& key, TP_CAMERA_OPTION*& p
delete pCamOpt;
}
void CGlobalCamera::releaseCameraWin(tagTP_CAMERA_WIN*& pWin, void* pData)
{
delete pWin;
}
QList<QString> CGlobalCamera::CameraKeysOrderByIds()
{
QList<TP_CAMERA_OPTION*> options = m_cameraesOption.values();
@ -303,13 +256,6 @@ QMap<QString, QString> CGlobalCamera::GetCamShowNames()
{
knMap.insert(it.key(), it.value()->showName);
}
//for (QZkMutexList<TP_CAMERA_WIN*>::Iterator it = m_cameraWins.begin(); it != m_cameraWins.end(); ++it)
//{
// if (0 == (*it)->index && m_cameraesOption.contains((*it)->device))
// {
// knMap.insert((*it)->device, (*it)->key);
// }
//}
return knMap;
}
@ -362,75 +308,6 @@ void CGlobalCamera::updateCameraOption(const QString& serials, const TP_CAMERA_O
m_cameraesOption.insert(pCamOpt->uniqueName, pCamOpt);
}
QList<QString> CGlobalCamera::camWinKeys()
{
QMutexLocker locker(&m_mtxCam);
QList<QString> ret;
QZkMutexList<TP_CAMERA_WIN*>::const_iterator it = m_cameraWins.constBegin();
for (; it != m_cameraWins.constEnd(); ++it)
{
ret.append((*it)->key);
}
return ret;
}
bool CGlobalCamera::camWinByKey(const QString& strKey, TP_CAMERA_WIN& camwinOpt)
{
QMutexLocker locker(&m_mtxCam);
QZkMutexList<TP_CAMERA_WIN*>::const_iterator it = m_cameraWins.constBegin();
for (; it != m_cameraWins.constEnd(); ++it)
{
TP_CAMERA_WIN* pOpt = *it;
if (pOpt->key.compare(strKey, Qt::CaseInsensitive) == 0){
camwinOpt = *pOpt;
return true;
}
}
return false;
}
bool CGlobalCamera::addCamWin(const QString& strKey, const TP_CAMERA_WIN& camwinOpt, bool bNew)
{
QMutexLocker locker(&m_mtxCam);
// update if exist, otherwise new one.
QZkMutexList<TP_CAMERA_WIN*>::iterator it = m_cameraWins.begin();
for (; it != m_cameraWins.end(); ++it)
{
TP_CAMERA_WIN* pOpt = *it;
if (pOpt->key.compare(strKey, Qt::CaseInsensitive) == 0){
*pOpt = camwinOpt;
return true;
}
}
TP_CAMERA_WIN* pOpt = new TP_CAMERA_WIN;
if (NULL == pOpt) return false;
*pOpt = camwinOpt;
m_cameraWins.append(pOpt);
return true;
}
bool CGlobalCamera::delCamWin(const QString& strKey)
{
QMutexLocker locker(&m_mtxCam);
QZkMutexList<TP_CAMERA_WIN*>::iterator it = m_cameraWins.begin();
for (; it != m_cameraWins.end(); ++it)
{
TP_CAMERA_WIN* pOpt = *it;
if (pOpt->key.compare(strKey, Qt::CaseInsensitive) == 0){
m_cameraWins.removeOne(pOpt);
delete pOpt;
pOpt = NULL;
return true;
}
}
return true;
}
QJsonObject CGlobalCamera::getAppJsonUser()
{
QJsonObject userJson;
@ -457,4 +334,4 @@ QJsonObject CGlobalCamera::getAppJsonUser()
userJson = objJson["user"].toObject();
return userJson;
}
}

@ -1,13 +1,4 @@
/******************************************************************************
Copyright(C):2015~2018 hzleaper
FileName:globalCamera.h
Author:zhikun wu
Email:zk.wu@hzleaper.com
Tools:vs2010 pc on company
Created:2015/04/07
History:7:4:2015 8:53
*******************************************************************************/
#ifndef __GLOBAL_CAMERA_H_20150407
#ifndef __GLOBAL_CAMERA_H_20150407
#define __GLOBAL_CAMERA_H_20150407
#include "icamera.h"
@ -19,8 +10,6 @@
#include "QZkMutexMap.h"
#include "QZkMutexList.h"
class CGlobalCamera
{
public:
@ -36,23 +25,13 @@ public:
return m_cameraesOption.keys();
}
QList<QString> CameraKeysOrderByIds();
QList<TP_CAMERA_WIN*> CameraWins() {
return m_cameraWins;
}
QMap<QString, QString> GetCamShowNames();
bool SaveCameraOption(const TP_CAMERA_OPTION& camOpt);
void delCameraOption(const QString& serials);
void updateCameraOption(const QString& serials, const TP_CAMERA_OPTION& camOpt);
QList<QString> camWinKeys();
bool camWinByKey(const QString& strKey, TP_CAMERA_WIN& camwinOpt);
bool addCamWin(const QString& strKey, const TP_CAMERA_WIN& camwinOpt, bool bNew);
bool delCamWin(const QString& strKey);
public:
TP_GLOBAL_DATA* m_pGlobalData;
// TP_GLOBAL_DATA* m_pGlobalData;
ICameraCallback* m_pCallback;
// QHash<QString, TP_CAMERA_OPTION*> m_cfgCameraes;
TP_CAMERAPOOL_OPTION m_optPool;
private:
void readConfig();
@ -65,33 +44,20 @@ private:
static bool copyCameraOptionBySerial(const QString& key, TP_CAMERA_OPTION*& pCamOpt, void* pData);
static void copyCameraOptionByKey(const QString& key, TP_CAMERA_OPTION*& pCamOpt, void* pData);
static bool optionCompare(TP_CAMERA_OPTION* op1, TP_CAMERA_OPTION* op2);
static void releaseCameraWin(tagTP_CAMERA_WIN*& pWin, void* pData);
private:
QMutex m_mtxCam;
const static char cs_szCfgName[];
QZkMutexMap<QString, TP_CAMERA_OPTION*> m_cameraesOption;
QZkMutexList<TP_CAMERA_WIN*> m_cameraWins;
QJsonObject m_jsonCamera;
QStringList m_serialsList;
};
//const char CGlobalCamera::m_szCfgFile[] = "camera";
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
//***inline functions***
extern class CGlobalCamera* gpGlobalCameraZZZ;
#define gpGlobalCamera gpGlobalCameraZZZ
//#define gpMainPath gpGlobalCamera->m_pszMainPath
#define gpGlobalData gpGlobalCamera->m_pGlobalData
#define gpGlobalCamCallback gpGlobalCamera->m_pCallback
#define callCamCallback(fc, defaultReturn, ...) (NULL != gpGlobalCamCallback) ? gpGlobalCamCallback->##fc##(__VA_ARGS__) : defaultReturn
// #define callGlobalCamera(fc, dValue, ...) (NULL != gpGlobalCamera ) ? gpGlobalCamera->##fc##(__VA_ARGS__) : dValue
// #define callGlobalCameraNoP(fc, dValue) (NULL != gpGlobalCamera ) ? gpGlobalCamera->##fc##() : dValue
//#define gpCameraesHash() (NULL != gpGlobalCamera) ? gpGlobalCamera->m_cfgCameraes : QHash<QString, TP_CAMERA_OPTION*>()
#define gGlobalPoolOption gpGlobalCamera->m_optPool
// extern class CGlobalCamera* gpGlobalCameraZZZ;
//
// #define gpGlobalCamera gpGlobalCameraZZZ
//
// #define gpGlobalData gpGlobalCamera->m_pGlobalData
// #define gpGlobalCamCallback gpGlobalCamera->m_pCallback
// #define callCamCallback(fc, defaultReturn, ...) (NULL != gpGlobalCamCallback) ? gpGlobalCamCallback->##fc##(__VA_ARGS__) : defaultReturn
// #define gGlobalPoolOption gpGlobalCamera->m_optPool
#endif

@ -1,60 +1,51 @@
/******************************************************************************
Copyright(C):2015~2018 hzleaper
FileName:tpCamera.cpp
Author:zhikun wu
Email:zk.wu@hzleaper.com
Tools:vs2010 pc on company
Created:2015/03/23
History:23:3:2015 16:31
*******************************************************************************/
#include "CameraPool.h"
#include "globalCamera.h"
#ifdef TPCAMERA_EXPORTS
#define TPCAMERA_API extern "C" __declspec(dllexport)
#else
#define TPCAMERA_API extern "C"
#endif
CGlobalCamera* gpGlobalCameraZZZ = NULL;
CCameraPool *gpCameraPool = NULL;
//don't change the names of these global functions
TPCAMERA_API void* Lib_Camera_Init(void* inParam)
{
CAMERA_IN_PARAM cinParam = {0};
if( NULL != inParam )
{
std::memcpy(&cinParam, inParam, sizeof(CAMERA_IN_PARAM));
}
if( NULL == gpGlobalCamera )
{
gpGlobalCamera = new CGlobalCamera(&cinParam);
}
//
if( NULL == gpCameraPool )
{
gpCameraPool = new CCameraPool();
}
if( NULL != gpCameraPool )
{
gpCameraPool->InitPool();
}
return gpCameraPool;
}
TPCAMERA_API void Lib_Camera_Free()
{
if( NULL != gpCameraPool )
{
gpCameraPool->FreePool();
delete gpCameraPool;
gpCameraPool = NULL;
}
if( NULL != gpGlobalCamera )
{
delete gpGlobalCamera;
gpGlobalCamera = NULL;
}
}
// #include "CameraPool.h"
// #include "globalCamera.h"
//
// #ifdef TPCAMERA_EXPORTS
// #define TPCAMERA_API extern "C" __declspec(dllexport)
// #else
// #define TPCAMERA_API extern "C"
// #endif
//
// CGlobalCamera* gpGlobalCameraZZZ = NULL;
// CCameraPool *gpCameraPool = NULL;
//
//
// //don't change the names of these global functions
// TPCAMERA_API void* Lib_Camera_Init(void* inParam)
// {
// CAMERA_IN_PARAM cinParam = {0};
// if( NULL != inParam )
// {
// std::memcpy(&cinParam, inParam, sizeof(CAMERA_IN_PARAM));
// }
// if( NULL == gpGlobalCamera )
// {
// gpGlobalCamera = new CGlobalCamera(&cinParam);
// }
// //
// if( NULL == gpCameraPool )
// {
// gpCameraPool = new CCameraPool();
// }
// if( NULL != gpCameraPool )
// {
// gpCameraPool->InitPool();
// }
// return gpCameraPool;
// }
//
// TPCAMERA_API void Lib_Camera_Free()
// {
// if( NULL != gpCameraPool )
// {
// gpCameraPool->FreePool();
// delete gpCameraPool;
// gpCameraPool = NULL;
// }
// if( NULL != gpGlobalCamera )
// {
// delete gpGlobalCamera;
// gpGlobalCamera = NULL;
// }
// }

@ -49,7 +49,7 @@ bool CTriggerThread::loop()
if (nIntervals >= m_msecOfInterval)
{
CCameraPool::tagCOMMIT_TRIGGER_PARAM prm;
prm.direct = gGlobalPoolOption.triggerDirection;
//prm.direct = gGlobalPoolOption.triggerDirection;
prm.count = ++m_nTriggerCount;
prm.bFromMenual = false;
m_pPool->IntervalCaptureImages(prm);

@ -1,13 +1,4 @@
/******************************************************************************
Copyright(C):2015~2018 hzleaper
FileName:tpCoreCtrl.cpp
Author:zhikun wu
Email:zk.wu@hzleaper.com
Tools:vs2010 pc on company
Created:2015/03/24
History:24:3:2015 12:46
*******************************************************************************/
#include "CoreCtrl.h"
#include "CoreCtrl.h"
#ifdef TPCORECTRL_EXPORTS
#define TPCORECTRL_API extern "C" __declspec(dllexport)
@ -19,40 +10,29 @@
#include "globalCoreCtrl.h"
#include <QtCore/QDir>
CModulesManager gMdlesMgr;
CGlobalCoreCtrl* gpData = NULL;
//CModulesManager gMdlesMgr;
//CGlobalCoreCtrl* gpData = NULL;
class CCoreCtrl* gpCoreCtrl = NULL;
TPCORECTRL_API void* Lib_CoreCtrl_Init(void* inParam)
{
CORE_CTRL_LOG("Lib_CoreCtrl_Init start!");
//create and initialize the global data(class CGlobalCoreCtrl's object)
CORE_CTRL_IN_PARAM* pCciParam = (CORE_CTRL_IN_PARAM*)inParam;
gpData = new CGlobalCoreCtrl(pCciParam);
if( NULL == gpData )
{
return NULL;
}
//
CORE_CTRL_INIT(gpGlobalData->tgdMainPath, gpGlobalData->tgdMainPath);
//
if( gMdlesMgr.LoadModules() <= 0 )
{
return NULL;
}
// CORE_CTRL_IN_PARAM* pCciParam = (CORE_CTRL_IN_PARAM*)inParam;
// gpData = new CGlobalCoreCtrl(pCciParam);
// if( NULL == gpData )
// {
// return NULL;
// }
// if( gMdlesMgr.LoadModules() <= 0 )
// {
// return NULL;
// }
//////////////////////////////////////////////////////////////////
if( NULL == gpCoreCtrl )
{
gpCoreCtrl = new CCoreCtrl();
gpCoreCtrl = new CCoreCtrl(inParam);
}
/*
if( NULL != gpCoreCtrl )
{
gpCoreCtrl->IInitCore();
}
*/
CORE_CTRL_LOG("Lib_CoreCtrl_Init finished!");
return gpCoreCtrl;
}
@ -65,11 +45,10 @@ TPCORECTRL_API void Lib_CoreCtrl_Free()
gpCoreCtrl = NULL;
}
/////////////////////////////////////////////////
gMdlesMgr.FreeModules();
CORE_CTRL_FREE();
if( NULL != gpData )
{
delete gpData;
gpData = NULL;
}
// gMdlesMgr.FreeModules();
// if( NULL != gpData )
// {
// delete gpData;
// gpData = NULL;
// }
}

@ -1,27 +1,14 @@
/******************************************************************************
Copyright(C):2015~2018 hzleaper
FileName:ImgProc.cpp
Author:zhikun wu
Email:zk.wu@hzleaper.com
Tools:vs2010 pc on company
Created:2015/03/26
History:26:3:2015 18:03
*******************************************************************************/
#include "ImgProc.h"
#include "ImgProc.h"
#include "baseConstant.h"
#include <QtCore/QThread>
#include <QDebug>
#include "QZkJsonParser.h"
#include "zfunctions.h"
///////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
const char CImgProc::cs_strCfgName[] = "algorithm";
TP_GLOBAL_DATA* CImgProc::s_pGlobalData = NULL;
CImgProc::CImgProc(IMGPROC_IN_PARAM* pParam)
// : m_dbAlg(pParam->pGlobalData->tgdUserPath)
{
s_pGlobalData = pParam->pGlobalData;
m_bIsInited = false;
@ -37,10 +24,6 @@ CImgProc::~CImgProc(void)
int CImgProc::InitProc()
{
m_pDefAlgorithmDll = createAlgorithmDll("0", NULL);
//if (NULL == m_pDefAlgorithmDll)
//{
// return 0;
//}
m_bIsInited = true;
return 1;
}
@ -52,9 +35,8 @@ void CImgProc::FreeProc()
{
QThread::msleep(25);
}
// m_algorithms.clear(releaseAlgorithm);
m_threadAlgorithms.clear(releaseAlgorithmApis);
// m_algorithmOptions.clear(releaseAlgorithmOption);
m_algorithmDlls.clear(releaseAlgorithmDlls);
if (NULL != m_pDefAlgorithmDll)
{
@ -69,21 +51,6 @@ void CImgProc::releaseAlgorithm(const Qt::HANDLE& k, IAlgorithm*& v, void* pData
//FREE_ALGORITHM(v);
}
// void CImgProc::releaseAlgorithmOption(const int& k, CAlgorithmOption*& v, void* pData)
// {
// delete v;
// }
//
// CAlgorithmOption* CImgProc::createAlgorithmOption(const int& k, void* pData)
// {
// // CImgProc* pThis = (CImgProc*)pData;
// // QString szFileName(s_pGlobalData->tgdMainPath);
// // szFileName.append(s_pGlobalData->tgdFolderNames[TP_FOLDER_NAME_CONFIG]).append(cs_strCfgName);
// // CAlgorithmOption* pv = new CAlgorithmOption(szFileName, k, &pThis->m_dbAlg);
// // return pv;
// return nullptr;
// }
int CImgProc::IImageProcess(class IImageObject* pImgObj, class IDetectorEngine* pDE /*= NULL*/)
{
if (NULL == pImgObj || !m_bIsInited)

@ -1,21 +1,9 @@
/******************************************************************************
Copyright(C):2015~2018 hzleaper
FileName:ImgProc.h
Author:zhikun wu
Email:zk.wu@hzleaper.com
Tools:vs2010 pc on company
Created:2015/03/26
History:26:3:2015 18:03
*******************************************************************************/
#include "iImgProc.h"
/*#include "ImageAlgorithm.h"*/
#include "iImgProc.h"
#include "QZkMutexMap.h"
#include "baseClass.h"
#include <QtCore/QAtomicInt>
#include <QtCore/QReadWriteLock>
#include "LoadAlgorithm.h"
//#include "AlgorithmOption.h"
#include "LoadAlgorithm.h"
class CImgProc : public IImgProc
{

@ -1,19 +1,6 @@
/******************************************************************************
Copyright(C):2015~2018 hzleaper
FileName:LoadAlgorithm.cpp
Author:zhikun wu
Email:zk.wu@hzleaper.com
Tools:vs2010 pc on company
Created:2015/05/21
History:21:5:2015 14:33
*******************************************************************************/
#include "LoadAlgorithm.h"
#include "LoadAlgorithm.h"
#include <QtCore/QLibrary>
//CLoadAlgorithm::Func_Alg_Create CLoadAlgorithm::sf_AlgCreata = NULL;
//CLoadAlgorithm::Func_Alg_Delete CLoadAlgorithm::sf_AlgDelete = NULL;
//class QLibrary* CLoadAlgorithm::s_pLib = NULL;
CLoadAlgorithm::CLoadAlgorithm()
{
m_pLib = NULL;

@ -1,13 +1,4 @@
/******************************************************************************
Copyright(C):2015~2018 hzleaper
FileName:LoadAlgorithm.h
Author:zhikun wu
Email:zk.wu@hzleaper.com
Tools:vs2010 pc on company
Created:2015/05/21
History:21:5:2015 14:33
*******************************************************************************/
#ifndef LOADALGORITHM_H
#ifndef LOADALGORITHM_H
#define LOADALGORITHM_H
#include "iAlgorithm.h"
@ -29,7 +20,4 @@ private:
class QLibrary* m_pLib;
};
//#define ALLOC_ALGORITHM() (NULL == CLoadAlgorithm::sf_AlgCreata) ? NULL : CLoadAlgorithm::sf_AlgCreata()
//#define FREE_ALGORITHM(obj) if ( NULL != CLoadAlgorithm::sf_AlgDelete) CLoadAlgorithm::sf_AlgDelete(obj)
#endif // LOADALGORITHM_H

@ -1,13 +1,4 @@
/******************************************************************************
Copyright(C):2015~2018 hzleaper
FileName:tpImgProc.cpp
Author:zhikun wu
Email:zk.wu@hzleaper.com
Tools:vs2010 pc on company
Created:2015/03/26
History:26:3:2015 17:56
*******************************************************************************/
#include "ImgProc.h"
#include "ImgProc.h"
#include "LoadAlgorithm.h"
#ifdef TPIMGPROC_EXPORTS
@ -21,16 +12,6 @@ CImgProc* gpImgProc = NULL;
TPIMGPROC_API void* Lib_ImgProc_Init(void* inParam)
{
IMGPROC_IN_PARAM* pParam = (IMGPROC_IN_PARAM*)inParam;
/*
char szDllName[260];
strcpy(szDllName, pParam->pGlobalData->tgdDllPath);
#ifdef _DEBUG
strcat(szDllName, "tpAlgorithmd");
#else
strcat(szDllName, "tpAlgorithm");
#endif
CLoadAlgorithm::LoadAlg(szDllName);
*/
if( NULL == gpImgProc )
{
gpImgProc = new CImgProc((IMGPROC_IN_PARAM*)pParam);

@ -45,9 +45,9 @@ CDsgRoiDlg::CDsgRoiDlg(QWidget *parent) : QDialog(parent), ui(new Ui::RoiDlg)
SystemStateInfo::rgb = QColor(255, 0, 0).rgb();
connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(OnOk()));
connect(ui->pushButton_2, SIGNAL(clicked()), this, SLOT(OnCancel()));
connect(ui->pushButton_3, SIGNAL(clicked()), this, SLOT(OnRectangle()));
//connect(ui->pushButton_3, SIGNAL(clicked()), this, SLOT(OnRectangle()));
connect(ui->pushButton_7, SIGNAL(clicked()), this, SLOT(OnCircle()));
connect(ui->pushButton_4, SIGNAL(clicked()), this, SLOT(OnEllipse()));
//connect(ui->pushButton_4, SIGNAL(clicked()), this, SLOT(OnEllipse()));
connect(ui->pushButton_8, SIGNAL(clicked()), this, SLOT(OnShowColorDlg()));
ui->pushButton_8->setAutoDefault(false);

@ -171,44 +171,6 @@
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_3">
<property name="minimumSize">
<size>
<width>0</width>
<height>30</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>130</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>矩形</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_4">
<property name="minimumSize">
<size>
<width>0</width>
<height>30</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>130</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>椭圆</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">

@ -1,6 +1,6 @@
#include "Algorithm.h"
#include <windows.h>
#pragma execution_character_set("utf-8")
CDetectorAlgorithm::CDetectorAlgorithm() : m_mutex(QReadWriteLock::Recursive)
{
m_nID = LP_DETECTOR_INVALID_ID;
@ -1470,7 +1470,7 @@ bool CDetectorAlgorithm::Exec()
PLP_ALGORITHM_PARAM p = *iter;
if (p && !p->bIsLock && p->nSrcAlgoID != LP_DETECTOR_INVALID_ID && p->nSrcParamID != LP_DETECTOR_INVALID_ID)
{
qWarning() << "handle rely algo";
//qWarning() << "handle rely algo";
IDetectorAlgorithm* pAlgo = m_pTask->GetAlgorithm(p->nSrcAlgoID);
if (pAlgo)
{
@ -1513,7 +1513,7 @@ bool CDetectorAlgorithm::Exec()
}
m_dExecTime = (cv::getTickCount() - start) / cv::getTickFrequency() * 1000;
qDebug("algo name:%s, algo exec time: %.4f", m_tAlgorithmInfo.strName.toLocal8Bit().data(), m_dExecTime);
qDebug()<<QString("algo name:%1, algo exec time: %2").arg(m_tAlgorithmInfo.strName).arg(m_dExecTime);
return true;
}
@ -1589,8 +1589,7 @@ bool CDetectorAlgorithm::ExecOnce()
//dfTime = dfMinus / dfFreq;
m_dExecTime = (cv::getTickCount() - start) / cv::getTickFrequency() * 1000;
qDebug("algo name:%s, algo exec time: %.4f", m_tAlgorithmInfo.strName.toLocal8Bit().data(), m_dExecTime);
qDebug() << QString("algo name:%1, algo exec time: %2").arg(m_tAlgorithmInfo.strName).arg(m_dExecTime);
return true;
}

@ -35,6 +35,7 @@
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\src\lpCoreCtrl\AlgorithmResult.h" />
<ClInclude Include="..\..\src\lpCoreCtrl\callbackFunc.h" />
<ClInclude Include="..\..\src\lpCoreCtrl\CoreCtrl.h" />
<ClInclude Include="..\..\src\lpCoreCtrl\globalCoreCtrl.h" />
<ClInclude Include="..\..\src\lpCoreCtrl\GlobalDataBase.h" />
@ -45,7 +46,6 @@
<ClInclude Include="..\..\src\lpCoreCtrl\qtpthreadbase.h" />
<ClInclude Include="..\..\src\lpCoreCtrl\qtpthreadimage.h" />
<ClInclude Include="..\..\src\lpCoreCtrl\QZkShowImage.h" />
<ClInclude Include="..\..\src\lpCoreCtrl\tadpoleGuiHeader.h" />
<ClInclude Include="..\..\src\lpCoreCtrl\tpCamera\CameraPool.h" />
<ClInclude Include="..\..\src\lpCoreCtrl\tpCamera\globalCamera.h" />
<ClInclude Include="..\..\src\lpCoreCtrl\tpCamera\LibCameraes.h" />

@ -139,9 +139,6 @@
<ClInclude Include="..\..\src\lpCoreCtrl\QZkShowImage.h">
<Filter>tpCoreCtrl</Filter>
</ClInclude>
<ClInclude Include="..\..\src\lpCoreCtrl\tadpoleGuiHeader.h">
<Filter>tpCoreCtrl</Filter>
</ClInclude>
<ClInclude Include="..\..\src\lpCoreCtrl\ZkCameraImage.h">
<Filter>tpCoreCtrl</Filter>
</ClInclude>
@ -160,5 +157,8 @@
<ClInclude Include="..\..\src\lpCoreCtrl\tpCamera\triggerthread.h">
<Filter>tpCamera</Filter>
</ClInclude>
<ClInclude Include="..\..\src\lpCoreCtrl\callbackFunc.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
</Project>

@ -165,9 +165,9 @@ CMainWin::~CMainWin()
lpSysLog::uninstance();
}
void CMainWin::IVariantMapToUI(emTpUiDataType dataType, const QString& camKey, const QVariantMap& vMap)
void CMainWin::IVariantMapToUI(const QString& camKey, const QVariantMap& vMap)
{
qDebug() << "variant 2 ui, start";
//qDebug() << "variant 2 ui, start";
if (!m_pWfCtrl) {
qWarning() << "VariantMapToUI, WFctrl is null";
return;
@ -710,12 +710,20 @@ bool CMainWin::onInitCoreCtrl()
//load coretrl
if (NULL == m_pDllCoreCtrl)
{
m_pDllCoreCtrl = new CDllCoreCtrl(QStringList(), this, m_pDetectorEngine);
m_pDllCoreCtrl = new CDllCoreCtrl(QStringList(), nullptr, m_pDetectorEngine);
if (NULL == m_pDllCoreCtrl)
{
return false;
}
m_pCoreCtrl = m_pDllCoreCtrl->m_pCoreCtrl;
FuncCallBack_VarInt getVarfunc = std::bind(&CMainWin::IGetVariantById, this, std::placeholders::_1);
m_pCoreCtrl->IRegisterGetVariant(getVarfunc);
FuncCallBack_StrMap strMapfunc = std::bind(&CMainWin::IVariantMapToUI, this, std::placeholders::_1,std::placeholders::_2);
m_pCoreCtrl->IRegisterResultCallBack(strMapfunc);
}
m_pDllDetectorEngine->Initialize(m_pCoreCtrl);

@ -26,7 +26,7 @@ struct StationInfo
bool m_bRunEnable{ false };
QString strModelName;
};
class CMainWin : public QMainWindow, public IGuiCallback
class CMainWin : public QMainWindow//, public IGuiCallback
{
Q_OBJECT
@ -34,23 +34,9 @@ public:
CMainWin(QWidget *parent = Q_NULLPTR);
~CMainWin();
// virtual void IOnReady() {}
// virtual void IUpdateShow(const QString& skey) {};
virtual void INewCameraImage(const QVariantMap& vMap) {};
// virtual void IAddWindows(const QString& sWinName, const QString& sShowId) {};
// virtual void ISendDataToUI(emTpUiDataType dataType, const QString& camKey, void* pData) {}//弃用用IVariantMapToUI()替代
// virtual void ICameraTrigger(bool bStartOrStop) {};//弃用用ICommInterval()替代
// virtual void IDrawDefectToScene(const QString& szWinName, IImageObject::emTpDefectType defectType, QByteArray& data) {};
// virtual void ISafeDataToUI(emTpUiDataType dataType, const QString& camKey, const QByteArray& data) {};
// virtual void IWarning(int nWarningCode, void* data, int nDataLen) {};
// virtual void ICommInterval(const char* szCom, int nCmd, BYTE* pData, int nDataLen) {};
// virtual void IAlgorithmResult(const QVariantMap& varMap) {};
virtual void IVariantMapToUI(emTpUiDataType dataType, const QString& camKey, const QVariantMap& vMap);
virtual void IVariantMapToUI(const QString& camKey, const QVariantMap& vMap);
virtual QVariant IGetVariantById(int id);
// virtual void IIoStatesChanged(int nOldState, int nNewState) {};
// virtual void ICommAchieved(const char* szCom, int nCmd, BYTE* pData, int nDataLen) {};
// virtual WORD IGetWorkState() { return 0; };//心跳包中发送的用来控制是否触发的值返回0不触发返回1触发
public:
Q_SLOT void onAppanalysis(SComFrame frame);
void onHeartComm(SComFrame &frame);

Loading…
Cancel
Save