目录
1、开发准备
2、导入头文件
3、数据初始化
4、获取红外图像
5、关闭红外图像
6、完整代码
为了方便发开,需要下载Visual Studio,本开发基于Visual Studio 2022,使用C++。
通过Visual Studio创建好项目后,将DMSDK V1.16.3内所有文件复制到创建好的项目文件内。
通过Visual Studio在源文件处创建C++文件,用来开发,如下图所示。
在C++文件内包含所需要使用的头文件。
#include
#include
#include // 用于读取键盘输入
#include "DMSDK.h"
#pragma comment(lib, "DMSDK.lib")
我们要获取仪器的红外图像不能单纯直接靠DM_OpenMonitor获取,需要先创建一个图像窗口,然后通过DM_OpenMonitor将图像映射到图像窗口上。注意!!!这里的端口和连接仪器的端口不一样,这里是5000!!!
//创建图像窗口
HWND videoWindow = CreateWindow(L"STATIC", L"红外图像", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 320 * 2, 240 * 2,
NULL, NULL, NULL, NULL);
DM_Init();
DM_PlayerInit(videoWindow);
// 显示窗口
ShowWindow(videoWindow, true);
//数据初始化
char ipAddress[] = "192.168.1.2"; // 替换为实际的仪器IP地址
unsigned short port = 5000; // 替换为实际的端口
int channel = 0; // 替换为实际的通道号
现在通过DM_OpenMonitor将图像映射到图像窗口上,并判断是否映射成功。
int handle = DM_OpenMonitor(videoWindow, ipAddress, port, channel);
if (handle >= 0) {
std::cout << "视频监控打开成功,连接句柄:" << handle << std::endl;
//等待按下Esc键
std::cout << "按下Esc键关闭视频监控..." << std::endl;
while (!_kbhit() || _getch() != 27) { // 按下的键不是Esc键,则继续等待
// 在此处可以执行其他操作
}
}
else {
std::cout << "视频监控打开失败" << std::endl;
}
不需要红外图像后,需要先关闭视频监控,再清除资源内存。
// 关闭视频监控
int closeResult = DM_CloseMonitor(handle);
if (closeResult >= 0) {
std::cout << "视频监控关闭成功" << std::endl;
// 清除资源
int cleanupResult = DM_PlayerCleanup();
if (cleanupResult > 0) {
std::cout << "资源清除成功" << std::endl;
}
else {
std::cout << "资源清除失败" << std::endl;
}
}
else {
std::cout << "视频监控关闭失败" << std::endl;
}
#include
#include
#include // 用于读取键盘输入
#include "DMSDK.h"
#pragma comment(lib, "DMSDK.lib")
int main() {
// 初始化DMSDK
HWND videoWindow = CreateWindow(L"STATIC", L"红外图像", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 320 * 2, 240 * 2,
NULL, NULL, NULL, NULL);
DM_Init();
DM_PlayerInit(videoWindow);
// 显示视频
ShowWindow(videoWindow, true);
//UpdateWindow(videoWindow);
// 打开视频监控
char ipAddress[] = "192.168.1.2"; // 替换为实际的仪器IP地址
unsigned short port = 5000; // 替换为实际的端口
int channel = 0; // 替换为实际的通道号
int handle = DM_OpenMonitor(videoWindow, ipAddress, port, channel);
if (handle >= 0) {
std::cout << "视频监控打开成功,连接句柄:" << handle << std::endl;
//等待按下Esc键
std::cout << "按下Esc键关闭视频监控..." << std::endl;
while (!_kbhit() || _getch() != 27) { // 按下的键不是Esc键,则继续等待
// 在此处可以执行其他操作
}
}
else {
std::cout << "视频监控打开失败" << std::endl;
}
// 关闭视频监控
int closeResult = DM_CloseMonitor(handle);
if (closeResult >= 0) {
std::cout << "视频监控关闭成功" << std::endl;
// 清除资源
int cleanupResult = DM_PlayerCleanup();
if (cleanupResult > 0) {
std::cout << "资源清除成功" << std::endl;
}
else {
std::cout << "资源清除失败" << std::endl;
}
}
else {
std::cout << "视频监控关闭失败" << std::endl;
}
return 0;
}