#include "MagDevice.h"
#ifdef _WIN64
#pragma comment(lib, "ThermoGroupSDKLib_x64.lib")
#else
#pragma comment(lib, "ThermoGroupSDKLib.lib")
#endif
#define MAX_CHANNELINDEX (128)
CMagDevice::CMagDevice(HWND hWndMsg) :
m_hWndMsg(hWndMsg)
,m_bInitialized(FALSE)
,m_intChannelIndex(-1)
,m_bIsRecordingAvi(FALSE)
,m_bIsRecordingMGS(FALSE)
,m_bIsRecordingLocalAvi(FALSE)
,m_bIsRecordingLocalMgs(FALSE)
,m_bIsPlayingLocalMgs(FALSE)
,m_intCamIPAddr(0)
{
memset(&m_CamInfo, 0, sizeof(m_CamInfo));
memset(&m_RegContent, 0, sizeof(m_RegContent));
Initialize();
}
CMagDevice::~CMagDevice()
{
if (MAG_IsProcessingImage(m_intChannelIndex))
{
MAG_StopProcessImage(m_intChannelIndex);
}
if (MAG_IsLinked(m_intChannelIndex))
{
DisLinkCamera();//include stop sd storage
}
if (MAG_IsInitialized(m_intChannelIndex))
{
MAG_Free(m_intChannelIndex);
m_bInitialized = FALSE;
}
if (MAG_IsChannelAvailable(m_intChannelIndex))
{
MAG_DelChannel(m_intChannelIndex);
m_intChannelIndex = -1;
}
}
BOOL CMagDevice::Initialize()
{
if (m_bInitialized)
{
return TRUE;
}
if (m_intChannelIndex<=0 || m_intChannelIndex>MAX_CHANNELINDEX)
{
for (int i=1; i<=MAX_CHANNELINDEX; i++)
{
if (!MAG_IsChannelAvailable(i))//find an unused channel
{
BOOL bSuccess = MAG_NewChannel(i);
//ASSERT(bSuccess);
m_intChannelIndex = i;
break;
}
}
}
if (m_intChannelIndex>0 && m_intChannelIndex<=MAX_CHANNELINDEX)
{
m_bInitialized = MAG_Initialize(m_intChannelIndex, m_hWndMsg);
}
return m_bInitialized;
}
BOOL CMagDevice::IsLinked()
{
return MAG_IsLinked(m_intChannelIndex);
}
BOOL CMagDevice::LinkCamera(const char * charIp, UINT intTimeoutMS)
{
return LinkCamera(inet_addr(charIp), intTimeoutMS);
}
BOOL CMagDevice::LinkCameraEx(const char * charIp, USHORT shortCmdPort, USHORT shortImgPort, const char * charCloudUser, const char * charCloudPwd, UINT intCamSN, const char * charCamUser, const char * charCamPwd, UINT intTimeoutMS)
{
return LinkCameraEx(inet_addr(charIp), shortCmdPort, shortImgPort, charCloudUser, charCloudPwd, intCamSN, charCamUser, charCamPwd, intTimeoutMS);
}
BOOL CMagDevice::LinkCamera(UINT intIP, UINT intTimeoutMS)
{
if (MAG_LinkCamera(m_intChannelIndex, intIP, intTimeoutMS))
{
m_intCamIPAddr = intIP;
MAG_GetCamInfo(m_intChannelIndex, &m_CamInfo, sizeof(m_CamInfo));
MAG_ReadCameraRegContent(m_intChannelIndex, &m_RegContent, MAG_DEFAULT_TIMEOUT, FALSE);
return TRUE;
}
else
{
return FALSE;
}
}
BOOL CMagDevice::LinkCameraEx(UINT intIP, USHORT shortCmdPort, USHORT shortImgPort, const char * charCloudUser, const char * charCloudPwd, UINT intCamSN, const char * charCamUser, const char * charCamPwd, UINT intTimeoutMS)
{
#ifdef MAG_Linux_Not_Implemented
return LinkCamera(intIP, intTimeoutMS);
#else
if (MAG_LinkCameraEx(m_intChannelIndex, intIP, shortCmdPort, shortImgPort,
charCloudUser, charCloudPwd, intCamSN, charCamUser, charCamPwd, intTimeoutMS))
{
m_intCamIPAddr = intIP;
MAG_GetCamInfo(m_intChannelIndex, &m_CamInfo, sizeof(m_CamInfo));
MAG_ReadCameraRegContent(m_intChannelIndex, &m_RegContent, MAG_DEFAULT_TIMEOUT, FALSE);
return TRUE;
}
else
{
return FALSE;
}
#endif
}
void CMagDevice::DisLinkCamera()
{
//remember to stop sd storage before dislink
if (m_bIsRecordingMGS)
{
SDCardStorage(SDFileMGS, 0);
}
if (m_bIsRecordingAvi)
{
SDCardStorage(SDFileAVI, 0);
}
m_intCamIPAddr = 0;
MAG_DisLinkCamera(m_intChannelIndex);
}
const struct_CamInfoEx * CMagDevice::GetCamInfoEx()
{
#ifdef MAG_Linux_Not_Implemented
return NULL;
#else
MAG_GetCamInfoEx(m_intChannelIndex, &m_CamInfoEx, sizeof(m_CamInfoEx));
return &m_CamInfoEx;
#endif
}
UINT CMagDevice::GetRecentHeartBeat()
{
return MAG_GetRecentHeartBeat(m_intChannelIndex);
}
BOOL CMagDevice::SetReConnectCallBack(MAG_RECONNECTCALLBACK pCallBack, void * pUserData)
{
return MAG_SetReConnectCallBack(m_intChannelIndex, pCallBack, pUserData);
}
BOOL CMagDevice::ResetCamera()
{
//the user should stop image process before reset
//if you forget, the sdk will call MAG_StopProcessImage()
//remember to stop sd storage before reset
if (m_bIsRecordingMGS)
{
SDCardStorage(SDFileMGS, 0);
}
if (m_bIsRecordingAvi)
{
SDCardStorage(SDFileAVI, 0);
}
if (MAG_ResetCamera(m_intChannelIndex))
{
//MAG_ResetCamera() will call MAG_Free() and MAG_DelChannel()
//so the channel is invalid now
m_bInitialized = FALSE;
m_intChannelIndex = -1;
//this object is reusable after call Initialize()
return TRUE;
}
else
{
return FALSE;
}
}
BOOL CMagDevice::TriggerFFC()
{
return MAG_TriggerFFC(m_intChannelIndex);
}
BOOL CMagDevice::AutoFocus()
{
return MAG_SetPTZCmd(m_intChannelIndex, PTZFocusAuto, 0);
}
BOOL CMagDevice::SetIoAlarmState(BOOL bAlarm)
{
return MAG_SetIoAlarmState(m_intChannelIndex, bAlarm);
}
BOOL CMagDevice::SetPTZCmd(enum PTZCmd cmd, DWORD dwPara)
{
return MAG_SetPTZCmd(m_intChannelIndex, cmd, dwPara);
}
BOOL CMagDevice::QueryPTZState(enum PTZQuery query, int * intValue, UINT intTimeoutMS)
{
return MAG_QueryPTZState(m_intChannelIndex, query, intValue, intTimeoutMS);
}
BOOL CMagDevice::SetSerialCmd(const BYTE * buffer, UINT intBufferLen)
{
return MAG_SetSerialCmd(m_intChannelIndex, buffer, intBufferLen);
}
BOOL CMagDevice::SetSerialCallBack(MAG_SERIALCALLBACK pCallBack, void * pUserData)
{
return MAG_SetSerialCallBack(m_intChannelIndex, pCallBack, pUserData);
}
BOOL CMagDevice::GetCameraTemperature(int intT[4], UINT intTimeoutMS)
{
return MAG_GetCameraTemperature(m_intChannelIndex, intT, intTimeoutMS);
}
BOOL CMagDevice::SetCameraRegContent(const struct_CeRegContent * pContent)
{
if (MAG_SetCameraRegContent(m_intChannelIndex, pContent))
{
MAG_ReadCameraRegContent(m_intChannelIndex, &m_RegContent, 1000 + MAG_DEFAULT_TIMEOUT, FALSE);//we need more time here
return TRUE;
}
else
{
return FALSE;
}
}
BOOL CMagDevice::ReadCameraRegContent2(struct_CfgPara * pContent, UINT intTimeoutM)
{
return MAG_ReadCameraRegContent2(m_intChannelIndex, pContent, intTimeoutM);
}
BOOL CMagDevice::SetCameraRegContent2(const struct_CfgPara * pContent)
{
return MAG_SetCameraRegContent2(m_intChannelIndex, pContent);
}
BOOL CMagDevice::SetUserROIs(const struct_UserROIs * pROI)
{
return MAG_SetUserROIs(m_intChannelIndex, pROI);
}
BOOL CMagDevice::SetUserROIsEx(const struct_RectROI * pROIs, UINT intROINum)
{
return MAG_SetUserROIsEx(m_intChannelIndex, pROIs, intROINum);
}
BOOL CMagDevice::SetIrregularROIs(const struct_IrregularROI * pROIs, UINT intROINum)
{
return MAG_SetIrregularROIs(m_intChannelIndex, pROIs, intROINum);
}
BOOL CMagDevice::SetROIReportCallBack(MAG_ROICALLBACK pCallBack, void * pUserData)
{
return MAG_SetROIReportCallBack(m_intChannelIndex, pCallBack, pUserData);
}
BOOL CMagDevice::SetIrregularROIReportCallBack(MAG_ROICALLBACK pCallBack, void * pUserData)
{
return MAG_SetIrregularROIReportCallBack(m_intChannelIndex, pCallBack, pUserData);
}
BOOL CMagDevice::SetIrregularROIReportExCallBack(MAG_IRREGULARROICALLBACK pCallBack, void * pUserData)
{
return MAG_SetIrregularROIReportExCallBack(m_intChannelIndex, pCallBack, pUserData);
}
BOOL CMagDevice::IsProcessingImage()
{
return MAG_IsProcessingImage(m_intChannelIndex);
}
BOOL CMagDevice::StartProcessImage(const OutputPara * paraOut, MAG_FRAMECALLBACK funcFrame, DWORD dwStreamType, void * pUserData)
{
return MAG_StartProcessImage(m_intChannelIndex, paraOut, funcFrame, dwStreamType, pUserData);
}
BOOL CMagDevice::StartProcessPulseImage(const OutputPara * paraOut, MAG_FRAMECALLBACK funcFrame, DWORD dwStreamType, void * pUserData)
{
return MAG_StartProcessPulseImage(m_intChannelIndex, paraOut, funcFrame, dwStreamType, pUserData);
}
BOOL CMagDevice::TransferPulseImage()
{
return MAG_TransferPulseImage(m_intChannelIndex);
}
void CMagDevice::StopProcessImage()
{
if (m_bIsRecordingLocalAvi)
{
LocalStorageAviStop();
}
if (m_bIsRecordingLocalMgs)
{
LocalStorageMgsStop();
}
MAG_StopProcessImage(m_intChannelIndex);
}
void C
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
1.项目代码均经过功能验证ok,确保稳定可靠运行。欢迎下载体验!下载完使用问题请私信沟通。 2.主要针对各个计算机相关专业,包括计算机科学、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师、企业员工。 3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.当然也鼓励大家基于此进行二次开发。在使用过程中,如有问题或建议,请及时沟通。 5.期待你能在项目中找到乐趣和灵感,也欢迎你的分享和反馈! 【资源说明】 基于光激励红外和深度相机astra SDK实现三维重构目标检测项目C++源码+项目说明+sln解决方案.zip 此项目是将光激励红外结合深度相机,联合机械臂自动扫查扫查系统,实现自动扫查与三维重构 代码环境: + depth camera astra SDK<br> + Open3D_v0.10.0<br> + OpenCV3416<br> 代码流程: + 标定红外系统、深度相机和机器人的变换关系<br> + 采集实验数据,包含红外图像、深度图像<br> + 三维重构+匹配<br>
资源推荐
资源详情
资源评论
收起资源包目录
基于光激励红外和深度相机astra SDK实现三维重构目标检测项目C++源码+项目说明+sln解决方案.zip (139个子文件)
MagDevice.cpp 19KB
MagDevice.cpp 19KB
AstraCameraD2C.cpp 15KB
AstraCameraD2C.cpp 15KB
CalibrateEyeInHand.cpp 14KB
CalibrateEyeInHand.cpp 14KB
main.cpp 14KB
main.cpp 14KB
rainbowTable.cpp 11KB
rainbowTable.cpp 11KB
MakeFragments.cpp 9KB
MakeFragments.cpp 9KB
RegisterFragments.cpp 8KB
RegisterFragments.cpp 8KB
AstraCamera.cpp 7KB
AstraCamera.cpp 7KB
MagCamera.cpp 5KB
MagCamera.cpp 5KB
MyMagCamera.cpp 4KB
MyMagCamera.cpp 4KB
SerialPort.cpp 3KB
SerialPort.cpp 3KB
open3dAlgorithm.cpp 3KB
open3dAlgorithm.cpp 3KB
MagService.cpp 2KB
MagService.cpp 2KB
IntegrateScene.cpp 2KB
IntegrateScene.cpp 2KB
OptimizePoseGraph.cpp 2KB
OptimizePoseGraph.cpp 2KB
Visualizer.cpp 2KB
Visualizer.cpp 2KB
Common.cpp 1KB
Common.cpp 1KB
Reconstruction.cpp 1017B
Reconstruction.cpp 1017B
AdaptiveThreshold.cpp 842B
AdaptiveThreshold.cpp 842B
SerialListener.cpp 503B
SerialListener.cpp 503B
Helpers.cpp 346B
Helpers.cpp 346B
RealtimeSystem.cpp 197B
RealtimeSystem.cpp 197B
d2cSwapper.cpp 87B
d2cSwapper.cpp 87B
ThermoGroupSDKLib.dll 911KB
ThermoGroupSDKLib.dll 911KB
ThermoGroupSDKLib.dll 886KB
ThermoGroupSDKLib.dll 886KB
reconstruction.vcxproj.filters 6KB
reconstruction.vcxproj.filters 6KB
ThermoGroupSDK.h 16KB
ThermoGroupSDK.h 16KB
typedef.h 13KB
typedef.h 13KB
MagDevice.h 7KB
MagDevice.h 7KB
FrameListener.h 3KB
FrameListener.h 3KB
AstraCameraD2C.h 3KB
AstraCameraD2C.h 3KB
d2cSwapper.h 2KB
d2cSwapper.h 2KB
key_handler.h 2KB
key_handler.h 2KB
Helpers.h 1KB
Helpers.h 1KB
AstraCamera.h 1KB
AstraCamera.h 1KB
mag_errorcode.h 1KB
mag_errorcode.h 1KB
MagCamera.h 1KB
MagCamera.h 1KB
CalibrateEyeInHand.h 1KB
CalibrateEyeInHand.h 1KB
MagService.h 1011B
MagService.h 1011B
MyMagCamera.h 858B
MyMagCamera.h 858B
Common.h 816B
Common.h 816B
SerialPort.h 649B
SerialPort.h 649B
Visualizer.h 457B
Visualizer.h 457B
RealtimeSystem.h 439B
RealtimeSystem.h 439B
MakeFragments.h 426B
MakeFragments.h 426B
open3dAlgorithm.h 410B
open3dAlgorithm.h 410B
Reconstruction.h 402B
Reconstruction.h 402B
OptimizePoseGraph.h 384B
OptimizePoseGraph.h 384B
RegisterFragments.h 379B
RegisterFragments.h 379B
IntegrateScene.h 361B
IntegrateScene.h 361B
共 139 条
- 1
- 2
资源评论
北航程序员小C
- 粉丝: 2243
- 资源: 1824
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功