添加多线程支持打开关闭相机

master
bobpan 5 years ago
parent 7bf6482e6a
commit 3db804e544

@ -165,7 +165,7 @@ void CCoreCtrl::ISnapImage(const QStringList& camKeys)
if (camKeys.size() <= 0) if (camKeys.size() <= 0)
return; return;
CameraCtrl ctrl; CameraCtrl ctrl;
ctrl.m_ctrlType = 3; ctrl.m_ctrlType = EM_SNAPCAM;
ctrl.strCamName = camKeys.first(); ctrl.strCamName = camKeys.first();
m_safeList.push_back(ctrl); m_safeList.push_back(ctrl);
} }
@ -190,6 +190,42 @@ void CCoreCtrl::ISetCameraProperty(const QString& strSerial, TP_CAMERA_PROPERTY&
return m_camDevManager->ISetCameraProperty(strSerial, property); return m_camDevManager->ISetCameraProperty(strSerial, property);
} }
bool CCoreCtrl::IOpenCamera(const QString& strSerial)
{
CameraCtrl ctrl;
ctrl.m_ctrlType = EM_OPENCAM;
ctrl.strCamName = strSerial;
m_safeList.push_back(ctrl);
return true;
}
bool CCoreCtrl::ICloseCamera(const QString& strSerial)
{
CameraCtrl ctrl;
ctrl.m_ctrlType = EM_CLOSECAM;
ctrl.strCamName = strSerial;
m_safeList.push_back(ctrl);
return true;
}
bool CCoreCtrl::IStartCamera(const QString& strSerial)
{
CameraCtrl ctrl;
ctrl.m_ctrlType = EM_STARTCAM;
ctrl.strCamName = strSerial;
m_safeList.push_back(ctrl);
return true;
}
bool CCoreCtrl::IStopCamera(const QString& strSerial)
{
CameraCtrl ctrl;
ctrl.m_ctrlType = EM_STOPCAM;
ctrl.strCamName = strSerial;
m_safeList.push_back(ctrl);
return true;
}
bool CCoreCtrl::IRunAlg(const QString& strSerial, bool bRun) bool CCoreCtrl::IRunAlg(const QString& strSerial, bool bRun)
{ {
return m_camDevManager->IRunAlg(strSerial, bRun); return m_camDevManager->IRunAlg(strSerial, bRun);
@ -319,24 +355,30 @@ void CCoreCtrl::onRunTask()
if (m_safeList.getSize() > 0) { if (m_safeList.getSize() > 0) {
CameraCtrl ctrl; CameraCtrl ctrl;
m_safeList.pop_front(ctrl); m_safeList.pop_front(ctrl);
if (ctrl.m_ctrlType == 0)//开始相机 外触发 if (ctrl.m_ctrlType == EM_OPENCAM)//开始相机 外触发
{ {
//onStartCamera(ctrl.strCamName); //onStartCamera(ctrl.strCamName);
m_camDevManager->IOpenCamera(ctrl.strCamName);
} }
else if (ctrl.m_ctrlType == 1)//停止相机 else if (ctrl.m_ctrlType == EM_CLOSECAM)//停止相机
{ {
//onStopCamera(ctrl.strCamName); //onStopCamera(ctrl.strCamName);
m_camDevManager->ICloseCamera(ctrl.strCamName);
} }
else if (ctrl.m_ctrlType == 2)//开始相机 软触发 else if (ctrl.m_ctrlType == EM_STARTCAM)//开始相机 软触发
{ {
//onStartSoftCamera(ctrl.strCamName); //onStartSoftCamera(ctrl.strCamName);
m_camDevManager->IStartCamera(ctrl.strCamName);
}
else if (ctrl.m_ctrlType == EM_STOPCAM) {//停止相机
m_camDevManager->IStopCamera(ctrl.strCamName);
} }
else if (ctrl.m_ctrlType == 3)//软触发一次相机 else if (ctrl.m_ctrlType == EM_SNAPCAM)//软触发一次相机
{ {
//onSoftTrigerCamera(ctrl.strCamName); //onSoftTrigerCamera(ctrl.strCamName);
m_camDevManager->ISnapImage(QStringList()<<ctrl.strCamName); m_camDevManager->ISnapImage(QStringList()<<ctrl.strCamName);
} }
else if (ctrl.m_ctrlType == 4)//开始相机 内触发相机 else if (ctrl.m_ctrlType == 5)//开始相机 内触发相机
{ {
//onAutoTrigerCamera(ctrl.strCamName); //onAutoTrigerCamera(ctrl.strCamName);
} }

@ -9,10 +9,18 @@
#include "CThread.h" #include "CThread.h"
#include "threadsafe_list.hpp" #include "threadsafe_list.hpp"
enum EM_CamCtrl
{
EM_OPENCAM=0,
EM_CLOSECAM=1,
EM_STARTCAM=2,
EM_STOPCAM=3,
EM_SNAPCAM=4,
};
typedef struct tagCameraCtrl typedef struct tagCameraCtrl
{ {
QString strCamName; QString strCamName;
int m_ctrlType{ 0 };//0 start cam | 1 stop cam EM_CamCtrl m_ctrlType{ EM_OPENCAM };//0 start cam | 1 stop cam
}CameraCtrl; }CameraCtrl;
class CCoreCtrl : public ICoreCtrl class CCoreCtrl : public ICoreCtrl
@ -44,10 +52,10 @@ private:
//camera operate //camera operate
virtual bool ICreateCamera(const QString& strSerial, int nType) { return m_camDevManager->ICreateCamera(strSerial, nType); } virtual bool ICreateCamera(const QString& strSerial, int nType) { return m_camDevManager->ICreateCamera(strSerial, nType); }
virtual bool IOpenCamera(const QString& strSerial) { return m_camDevManager->IOpenCamera(strSerial); } virtual bool IOpenCamera(const QString& strSerial);
virtual bool ICloseCamera(const QString& strSerial) { return m_camDevManager->ICloseCamera(strSerial); } virtual bool ICloseCamera(const QString& strSerial);
virtual bool IStartCamera(const QString& strSerial) { return m_camDevManager->IStartCamera(strSerial); } virtual bool IStartCamera(const QString& strSerial);
virtual bool IStopCamera(const QString& strSerial) { return m_camDevManager->IStopCamera(strSerial); } virtual bool IStopCamera(const QString& strSerial);
virtual bool IDelCamera(const QString& strSerial) { return m_camDevManager->IDelCamera(strSerial); } virtual bool IDelCamera(const QString& strSerial) { return m_camDevManager->IDelCamera(strSerial); }
virtual bool IAddCamera(const QString& strName, const TP_CAMERA_OPTION& camOpt) { return m_camDevManager->IAddCamera(strName, camOpt); } virtual bool IAddCamera(const QString& strName, const TP_CAMERA_OPTION& camOpt) { return m_camDevManager->IAddCamera(strName, camOpt); }
virtual bool IRunAlg(const QString& strSerial, bool bRun); virtual bool IRunAlg(const QString& strSerial, bool bRun);

Loading…
Cancel
Save