diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/A8SDK.cs b/Windows/CS/Framework4.0/Toprie/Toprie/A8SDK.cs
index b1e718f..15cd558 100644
--- a/Windows/CS/Framework4.0/Toprie/Toprie/A8SDK.cs
+++ b/Windows/CS/Framework4.0/Toprie/Toprie/A8SDK.cs
@@ -4,211 +4,547 @@ using System.Runtime.InteropServices;
namespace JoyD.Windows.CS.Toprie
{
+ ///
+ /// A8SDK设备控制类,用于与A8热成像设备进行通信和控制
+ ///
public class A8SDK
{
- // 结构体定义
+ ///
+ /// 区域位置结构体,包含启用状态和位置坐标信息
+ ///
public struct AreaPos
{
+ ///
+ /// 启用状态,0表示禁用,1表示启用
+ ///
public int enable;
+ ///
+ /// 区域左上角X坐标
+ ///
public int x;
+ ///
+ /// 区域左上角Y坐标
+ ///
public int y;
+ ///
+ /// 区域宽度
+ ///
public int width;
+ ///
+ /// 区域高度
+ ///
public int height;
}
+ ///
+ /// 点位置结构体,用于定义测量点的位置
+ ///
public struct SpotPos
{
+ ///
+ /// 启用状态,0表示禁用,1表示启用
+ ///
public int enable;
+ ///
+ /// 点的X坐标
+ ///
public int x;
+ ///
+ /// 点的Y坐标
+ ///
public int y;
}
+ ///
+ /// 线位置结构体,用于定义测量线的起始和结束位置
+ ///
public struct LinePos
{
+ ///
+ /// 启用状态,0表示禁用,1表示启用
+ ///
public int enable;
+ ///
+ /// 起始点X坐标
+ ///
public int sta_x;
+ ///
+ /// 起始点Y坐标
+ ///
public int sta_y;
+ ///
+ /// 结束点X坐标
+ ///
public int end_x;
+ ///
+ /// 结束点Y坐标
+ ///
public int end_y;
}
+ ///
+ /// 图像位置结构体,包含所有测量区域、点和线的位置信息
+ ///
public struct ImagePos
{
+ ///
+ /// 区域位置数组,最多支持6个区域
+ ///
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
public AreaPos[] area;
+ ///
+ /// 点位置数组,最多支持6个点
+ ///
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
public SpotPos[] spot;
+ ///
+ /// 线位置
+ ///
public LinePos line;
}
+ ///
+ /// 区域温度结构体,包含区域的温度统计数据
+ ///
public struct AreaTemp
{
+ ///
+ /// 启用状态,0表示禁用,1表示启用
+ ///
public int enable;
+ ///
+ /// 最高温度值
+ ///
public int max_temp;
+ ///
+ /// 最高温度点的X坐标
+ ///
public int max_temp_x;
+ ///
+ /// 最高温度点的Y坐标
+ ///
public int max_temp_y;
+ ///
+ /// 最低温度值
+ ///
public int min_temp;
+ ///
+ /// 最低温度点的X坐标
+ ///
public int min_temp_x;
+ ///
+ /// 最低温度点的Y坐标
+ ///
public int min_temp_y;
+ ///
+ /// 平均温度值
+ ///
public int ave_temp;
}
+ ///
+ /// 点温度结构体,包含单个测量点的温度信息
+ ///
public struct SpotTemp
{
+ ///
+ /// 启用状态,0表示禁用,1表示启用
+ ///
public int enable;
+ ///
+ /// 温度值
+ ///
public int temp;
}
+ ///
+ /// 线温度结构体,包含测量线的温度统计数据
+ ///
public struct LineTemp
{
+ ///
+ /// 启用状态,0表示禁用,1表示启用
+ ///
public int enable;
+ ///
+ /// 最高温度值
+ ///
public int max_temp;
+ ///
+ /// 最高温度点的X坐标
+ ///
public int max_temp_x;
+ ///
+ /// 最高温度点的Y坐标
+ ///
public int max_temp_y;
+ ///
+ /// 最低温度值
+ ///
public int min_temp;
+ ///
+ /// 最低温度点的X坐标
+ ///
public int min_temp_x;
+ ///
+ /// 最低温度点的Y坐标
+ ///
public int min_temp_y;
+ ///
+ /// 平均温度值
+ ///
public int ave_temp;
}
+ ///
+ /// 全局温度结构体,包含整个图像的温度统计数据
+ ///
public struct GlobaTemp
{
+ ///
+ /// 最高温度值
+ ///
public int max_temp;
+ ///
+ /// 最高温度点的X坐标
+ ///
public int max_temp_x;
+ ///
+ /// 最高温度点的Y坐标
+ ///
public int max_temp_y;
+ ///
+ /// 最低温度值
+ ///
public int min_temp;
+ ///
+ /// 最低温度点的X坐标
+ ///
public int min_temp_x;
+ ///
+ /// 最低温度点的Y坐标
+ ///
public int min_temp_y;
}
+ ///
+ /// 图像温度结构体,包含所有温度测量数据
+ ///
public struct ImageTemp
{
+ ///
+ /// 区域温度数组,最多支持6个区域
+ ///
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
public AreaTemp[] area;
+ ///
+ /// 点温度数组,最多支持6个点
+ ///
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
public SpotTemp[] spot;
+ ///
+ /// 线温度
+ ///
public LineTemp line;
+ ///
+ /// 全局温度
+ ///
public GlobaTemp globa;
}
+ ///
+ /// 邮件服务器配置结构体
+ ///
public struct EmailServer
{
+ ///
+ /// 启用状态,0表示禁用,1表示启用
+ ///
public int enable;
+ ///
+ /// 收件人邮箱地址
+ ///
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
public char[] recv_addr;
+ ///
+ /// 发件人邮箱地址
+ ///
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
public char[] send_addr;
+ ///
+ /// 发件人邮箱密码
+ ///
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
public char[] send_pwd;
}
+ ///
+ /// TFTP服务器配置结构体
+ ///
public struct TftpServer
{
+ ///
+ /// 启用状态,0表示禁用,1表示启用
+ ///
public int enable;
+ ///
+ /// TFTP服务器地址
+ ///
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
public char[] tftp_addr;
}
+ ///
+ /// 网络以太网配置结构体
+ ///
public struct NetworkEth
{
+ ///
+ /// 启用状态,0表示禁用,1表示启用
+ ///
public int enable;
+ ///
+ /// 静态IP地址
+ ///
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
public char[] static_ip;
+ ///
+ /// 子网掩码
+ ///
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
public char[] netmask;
+ ///
+ /// 默认网关
+ ///
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
public char[] gateway;
+ ///
+ /// 主DNS服务器地址
+ ///
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
public char[] dns1;
+ ///
+ /// 备DNS服务器地址
+ ///
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
public char[] dns2;
}
+ ///
+ /// 环境参数结构体,用于温度补偿计算
+ ///
public struct EnvirParam
{
+ ///
+ /// 计算方法
+ ///
public int method;
+ ///
+ /// 参数编号
+ ///
public int num;
+ ///
+ /// 发射率
+ ///
public float emissivity;
+ ///
+ /// 环境温度
+ ///
public float airTemp;
+ ///
+ /// 目标温度
+ ///
public float targetTemp;
+ ///
+ /// 大气透过率
+ ///
public float atmosTrans;
+ ///
+ /// 测量距离
+ ///
public float distance;
+ ///
+ /// 红外温度
+ ///
public float infraredTemp;
+ ///
+ /// 红外辐射率
+ ///
public float infraredRadia;
}
+ ///
+ /// 报警参数结构体,用于配置报警功能
+ ///
public struct AlarmParam
{
+ ///
+ /// 报警方法
+ ///
public int method;
+ ///
+ /// 参数编号
+ ///
public int num;
+ ///
+ /// 激活状态
+ ///
public int active;
+ ///
+ /// 报警条件
+ ///
public int condition;
+ ///
+ /// 截图功能
+ ///
public int captrue;
+ ///
+ /// 禁用校准
+ ///
public int disableCalib;
+ ///
+ /// 邮件报警
+ ///
public int email;
+ ///
+ /// 数字输出
+ ///
public int digital;
+ ///
+ /// FTP上传
+ ///
public int ftp;
+ ///
+ /// 报警阈值
+ ///
public float threshold;
+ ///
+ /// 滞后值
+ ///
public float hysteresis;
+ ///
+ /// 阈值时间
+ ///
public int thresholeTime;
}
+ ///
+ /// 焦距参数结构体,用于自动对焦功能
+ ///
public struct FocusParam
{
+ ///
+ /// 对焦方法
+ ///
public int method;
+ ///
+ /// 对焦区域X坐标
+ ///
public int x;
+ ///
+ /// 对焦区域Y坐标
+ ///
public int y;
+ ///
+ /// 对焦区域宽度
+ ///
public int width;
+ ///
+ /// 对焦区域高度
+ ///
public int height;
}
+ ///
+ /// 时间参数结构体,用于设备时间设置
+ ///
public struct TimeParam
{
+ ///
+ /// 年份
+ ///
public int year;
+ ///
+ /// 月份
+ ///
public char month;
+ ///
+ /// 日期
+ ///
public char day;
+ ///
+ /// 小时
+ ///
public char hour;
+ ///
+ /// 分钟
+ ///
public char minute;
+ ///
+ /// 秒
+ ///
public char second;
}
- // 使用V8类实例来实现功能
private readonly string deviceIp;
private readonly V8 v8Instance;
+ ///
+ /// 初始化A8SDK实例
+ ///
+ /// 设备IP地址
public A8SDK(string ip)
{
deviceIp = ip;
v8Instance = new V8(ip);
}
+ ///
+ /// 析构函数,释放资源
+ ///
~A8SDK()
{
- // V8类的析构函数会自动处理资源释放
}
+ ///
+ /// 初始化SDK
+ ///
+ /// 初始化结果,0表示成功
public static int SDK_initialize()
{
return V8.SDK_initialize();
}
+ ///
+ /// 销毁SDK
+ ///
+ /// 销毁结果,0表示成功
public static int SDK_destroy()
{
return V8.SDK_destroy();
}
+ ///
+ /// 搜索设备
+ ///
+ /// 最大搜索设备数量
+ /// 搜索结果字符串,设备IP地址以分号分隔
public static String SDK_serch_device(int list_len)
{
return V8.SDK_serch_device(list_len);
}
- // 快门校正方法
+ ///
+ /// 执行快门校正
+ ///
public void Shutter_correction()
{
v8Instance.Shutter_correction();
}
- // 快门次数属性
+ ///
+ /// 获取或设置快门次数
+ ///
public int Shutter_times
{
get
@@ -221,7 +557,9 @@ namespace JoyD.Windows.CS.Toprie
}
}
- // 色板属性
+ ///
+ /// 获取或设置色板模式
+ ///
public int Color_plate
{
get
@@ -253,7 +591,9 @@ namespace JoyD.Windows.CS.Toprie
return v8Instance.SetColorPlate(value);
}
- // 镜像模式属性
+ ///
+ /// 获取或设置镜像模式
+ ///
public int Mirror_mode
{
get
@@ -266,7 +606,9 @@ namespace JoyD.Windows.CS.Toprie
}
}
- // 视频模式属性
+ ///
+ /// 获取或设置视频模式
+ ///
public int Video_mode
{
get
@@ -279,31 +621,49 @@ namespace JoyD.Windows.CS.Toprie
}
}
- // 设置区域位置
+ ///
+ /// 设置区域位置
+ ///
+ /// 区域索引
+ /// 区域位置数据
public void Set_area_pos(int index, SharedStructures.AreaPos area_data)
{
v8Instance.Set_area_pos(index, area_data);
}
- // 获取区域位置
+ ///
+ /// 获取区域位置
+ ///
+ /// 区域索引
+ /// 区域位置数据
public SharedStructures.AreaPos Get_area_pos(int index)
{
return v8Instance.Get_area_pos(index);
}
- // 设置点位置
+ ///
+ /// 设置点位置
+ ///
+ /// 点索引
+ /// 点位置数据
public void Set_spot_pos(int index, SharedStructures.SpotPos spot_data)
{
v8Instance.Set_spot_pos(index, spot_data);
}
- // 获取点位置
+ ///
+ /// 获取点位置
+ ///
+ /// 点索引
+ /// 点位置数据
public SharedStructures.SpotPos Get_spot_pos(int index)
{
return v8Instance.Get_spot_pos(index);
}
- // 线位置属性
+ ///
+ /// 获取或设置线位置
+ ///
public SharedStructures.LinePos Line_pos
{
set
@@ -316,7 +676,9 @@ namespace JoyD.Windows.CS.Toprie
}
}
- // 所有位置属性
+ ///
+ /// 获取所有位置信息
+ ///
public SharedStructures.ImagePos All_pos
{
get
@@ -325,7 +687,9 @@ namespace JoyD.Windows.CS.Toprie
}
}
- // 温度范围属性
+ ///
+ /// 获取或设置温度范围
+ ///
public int Temp_range
{
set
@@ -338,7 +702,9 @@ namespace JoyD.Windows.CS.Toprie
}
}
- // 视频ISP X偏移属性
+ ///
+ /// 获取或设置视频ISP X偏移
+ ///
public int Video_isp_x_offset
{
set
@@ -351,7 +717,9 @@ namespace JoyD.Windows.CS.Toprie
}
}
- // 视频ISP Y偏移属性
+ ///
+ /// 获取或设置视频ISP Y偏移
+ ///
public int Video_isp_y_offset
{
set
@@ -364,7 +732,9 @@ namespace JoyD.Windows.CS.Toprie
}
}
- // 视频ISP X缩放属性
+ ///
+ /// 获取或设置视频ISP X缩放
+ ///
public int Video_isp_x_scale
{
set
@@ -377,7 +747,9 @@ namespace JoyD.Windows.CS.Toprie
}
}
- // 视频ISP Y缩放属性
+ ///
+ /// 获取或设置视频ISP Y缩放
+ ///
public int Video_isp_y_scale
{
set
@@ -390,7 +762,9 @@ namespace JoyD.Windows.CS.Toprie
}
}
- // LED设置属性
+ ///
+ /// 获取或设置LED设置
+ ///
public int Set_led
{
set
@@ -403,7 +777,9 @@ namespace JoyD.Windows.CS.Toprie
}
}
- // 邮件服务器属性
+ ///
+ /// 获取或设置邮件服务器配置
+ ///
public SharedStructures.EmailServer Email_server
{
set
@@ -416,7 +792,9 @@ namespace JoyD.Windows.CS.Toprie
}
}
- // TFTP服务器属性
+ ///
+ /// 获取或设置TFTP服务器配置
+ ///
public SharedStructures.TftpServer Tftp_server
{
set
@@ -429,7 +807,9 @@ namespace JoyD.Windows.CS.Toprie
}
}
- // 网络以太网属性
+ ///
+ /// 获取或设置网络以太网配置
+ ///
public SharedStructures.NetworkEth Network_eth
{
set
@@ -442,7 +822,9 @@ namespace JoyD.Windows.CS.Toprie
}
}
- // 融合距离属性
+ ///
+ /// 获取或设置融合距离
+ ///
public int Fusion_distance
{
set
@@ -455,157 +837,240 @@ namespace JoyD.Windows.CS.Toprie
}
}
- // 设置环境参数
+ ///
+ /// 设置环境参数
+ ///
+ /// 环境参数数据
public void Set_envir_param(SharedStructures.EnvirParam data)
{
v8Instance.Set_envir_param(data);
}
- // 获取区域环境参数
+ ///
+ /// 获取区域环境参数
+ ///
+ /// 区域索引
+ /// 环境参数数据
public SharedStructures.EnvirParam Get_area_envir_param(int index)
{
return v8Instance.Get_area_envir_param(index);
}
- // 获取点环境参数
+ ///
+ /// 获取点环境参数
+ ///
+ /// 点索引
+ /// 环境参数数据
public SharedStructures.EnvirParam Get_spot_envir_param(int index)
{
return v8Instance.Get_spot_envir_param(index);
}
- // 获取线环境参数
+ ///
+ /// 获取线环境参数
+ ///
+ /// 环境参数数据
public SharedStructures.EnvirParam Get_line_envir_param()
{
return v8Instance.Get_line_envir_param();
}
- // 获取全局环境参数
+ ///
+ /// 获取全局环境参数
+ ///
+ /// 环境参数数据
public SharedStructures.EnvirParam Get_globa_envir_param()
{
return v8Instance.Get_globa_envir_param();
}
- // 设置报警参数
+ ///
+ /// 设置报警参数
+ ///
+ /// 报警参数数据
public void Set_alarm_param(SharedStructures.AlarmParam data)
{
v8Instance.Set_alarm_param(data);
}
- // 获取区域报警参数
+ ///
+ /// 获取区域报警参数
+ ///
+ /// 区域索引
+ /// 报警参数数据
public SharedStructures.AlarmParam Get_area_alarm_param(int index)
{
return v8Instance.Get_area_alarm_param(index);
}
- // 获取点报警参数
+ ///
+ /// 获取点报警参数
+ ///
+ /// 点索引
+ /// 报警参数数据
public SharedStructures.AlarmParam Get_spot_alarm_param(int index)
{
return v8Instance.Get_spot_alarm_param(index);
}
- // 获取全局报警参数
+ ///
+ /// 获取全局报警参数
+ ///
+ /// 报警参数数据
public SharedStructures.AlarmParam Get_globa_alarm_param()
{
return v8Instance.Get_globa_alarm_param();
}
- // 获取线报警参数
+ ///
+ /// 获取线报警参数
+ ///
+ /// 报警参数数据
public SharedStructures.AlarmParam Get_line_alarm_param()
{
return v8Instance.Get_line_alarm_param();
}
- // 获取区域温度
+ ///
+ /// 获取区域温度
+ ///
+ /// 区域索引
+ /// 区域温度数据
public SharedStructures.AreaTemp Get_area_temp(int index)
{
return v8Instance.Get_area_temp(index);
}
- // 获取点温度
+ ///
+ /// 获取点温度
+ ///
+ /// 点索引
+ /// 点温度数据
public SharedStructures.SpotTemp Get_spot_temp(int index)
{
return v8Instance.Get_spot_temp(index);
}
- // 获取线温度
+ ///
+ /// 获取线温度
+ ///
+ /// 线温度数据
public SharedStructures.LineTemp Get_line_temp()
{
return v8Instance.Get_line_temp();
}
- // 获取全局温度
+ ///
+ /// 获取全局温度
+ ///
+ /// 全局温度数据
public SharedStructures.GlobaTemp Get_globa_temp()
{
return v8Instance.Get_globa_temp();
}
- // 获取所有温度
+ ///
+ /// 获取所有温度数据
+ ///
+ /// 图像温度数据
public SharedStructures.ImageTemp Get_all_temp()
{
return v8Instance.Get_all_temp();
}
- // 电源重启
+ ///
+ /// 设备电源重启
+ ///
public void Power_reboot()
{
v8Instance.Power_reboot();
}
- // 参数恢复
+ ///
+ /// 参数恢复
+ ///
public void Param_recover()
{
v8Instance.Param_recover();
}
- // 更新
+ ///
+ /// 更新设备配置
+ ///
public void Update()
{
v8Instance.Update();
}
- // 心跳检测
+ ///
+ /// 心跳检测
+ ///
+ /// 心跳状态,1表示正常
public int Heartbeat()
{
return v8Instance.Heartbeat();
}
- // 设置串口
+ ///
+ /// 设置串口参数
+ ///
+ /// 波特率
+ /// 数据位
+ /// 校验位
+ /// 停止位
public void Set_uart(int nSpeed, int nBits, char nEvent, int nStop)
{
v8Instance.Set_uart(nSpeed, nBits, nEvent, nStop);
}
- // 发送串口命令
+ ///
+ /// 发送串口命令
+ ///
+ /// 命令字节数组
public void Send_uart_command(byte[] cmd)
{
v8Instance.Send_uart_command(cmd);
}
- // 自动对焦
+ ///
+ /// 自动对焦
+ ///
+ /// 焦距参数
public void Autofocus(SharedStructures.FocusParam data)
{
v8Instance.Autofocus(data);
}
- // 设置设备名称
+ ///
+ /// 设置设备名称
+ ///
+ /// 设备名称字符串
public void Set_device_name(string data)
{
v8Instance.Set_device_name(data);
}
- // 获取设备名称
+ ///
+ /// 获取设备名称
+ ///
+ /// 设备名称字符串
public string Get_device_name()
{
return v8Instance.Get_device_name();
}
- // 获取检测数量
+ ///
+ /// 获取检测数量
+ ///
+ /// 检测数量字节数组
public byte[] Get_detect_number()
{
return v8Instance.Get_detect_number();
}
- // 温度帧属性
+ ///
+ /// 获取或设置温度帧
+ ///
public char Temp_frame
{
set
@@ -618,7 +1083,9 @@ namespace JoyD.Windows.CS.Toprie
}
}
- // 报警属性
+ ///
+ /// 获取或设置报警状态
+ ///
public char Alarm
{
set
@@ -631,7 +1098,9 @@ namespace JoyD.Windows.CS.Toprie
}
}
- // 补偿温度属性
+ ///
+ /// 获取补偿温度
+ ///
public float Comp_temp
{
get
@@ -640,31 +1109,46 @@ namespace JoyD.Windows.CS.Toprie
}
}
- // 设置时间
+ ///
+ /// 设置设备时间
+ ///
+ /// 时间参数
public void Set_time(SharedStructures.TimeParam data)
{
v8Instance.Set_time(data);
}
- // 获取视频模式
+ ///
+ /// 获取视频模式
+ ///
+ /// 视频模式值
public int GetVideoMode()
{
return v8Instance.GetVideoMode();
}
- // 设置视频模式
+ ///
+ /// 设置视频模式
+ ///
+ /// 视频模式值
public void SetVideoMode(int mode)
{
v8Instance.SetVideoMode(mode);
}
- // 获取图像数据
+ ///
+ /// 获取图像数据
+ ///
+ /// 图像数据字节数组
public byte[] GetImageData()
{
return v8Instance.GetImageData();
}
- // 设备搜索
+ ///
+ /// 搜索可用设备
+ ///
+ /// 设备IP地址列表
public static List SearchDevices()
{
List devices = new List();
@@ -684,4 +1168,4 @@ namespace JoyD.Windows.CS.Toprie
return devices;
}
}
-}
\ No newline at end of file
+}
diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/Camera.cs b/Windows/CS/Framework4.0/Toprie/Toprie/Camera.cs
index dd65bdc..f62bea4 100644
--- a/Windows/CS/Framework4.0/Toprie/Toprie/Camera.cs
+++ b/Windows/CS/Framework4.0/Toprie/Toprie/Camera.cs
@@ -10,6 +10,9 @@ using System.Threading.Tasks;
namespace JoyD.Windows.CS.Toprie
{
+ ///
+ /// 相机控件类,用于显示和处理相机图像
+ ///
public partial class Camera : UserControl
{
// 测温区配置类
@@ -487,6 +490,9 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 相机控件构造函数
+ ///
public Camera()
{
InitializeComponent();
@@ -3145,7 +3151,6 @@ namespace JoyD.Windows.CS.Toprie
}
}
- ///
///
/// imageBox双击事件处理方法
/// 双击后弹出检测配置窗口
diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/DeviceManager.cs b/Windows/CS/Framework4.0/Toprie/Toprie/DeviceManager.cs
index 4656ce3..d22920f 100644
--- a/Windows/CS/Framework4.0/Toprie/Toprie/DeviceManager.cs
+++ b/Windows/CS/Framework4.0/Toprie/Toprie/DeviceManager.cs
@@ -16,9 +16,21 @@ namespace JoyD.Windows.CS.Toprie
///
public enum ConnectionStatus
{
+ ///
+ /// 未连接状态
+ ///
Disconnected,
+ ///
+ /// 正在连接状态
+ ///
Connecting,
+ ///
+ /// 已连接状态
+ ///
Connected,
+ ///
+ /// 正在重连状态
+ ///
Reconnecting
}
@@ -29,7 +41,13 @@ namespace JoyD.Windows.CS.Toprie
///
public enum ImageMode
{
+ ///
+ /// 红外模式
+ ///
Infrared, // 红外模式
+ ///
+ /// 自然模式
+ ///
Natural // 自然模式
}
@@ -39,13 +57,37 @@ namespace JoyD.Windows.CS.Toprie
///
public enum PaletteType
{
+ ///
+ /// 白热,对应SDK参数0
+ ///
WhiteHot, // 白热,对应SDK参数0
+ ///
+ /// 黑热,对应SDK参数1
+ ///
BlackHot, // 黑热,对应SDK参数1
+ ///
+ /// 铁红,对应SDK参数2
+ ///
IronRed, // 铁红,对应SDK参数2
+ ///
+ /// 熔岩,对应SDK参数3
+ ///
Lava, // 熔岩,对应SDK参数3
+ ///
+ /// 彩虹,对应SDK参数4
+ ///
Rainbow, // 彩虹,对应SDK参数4
+ ///
+ /// 铁灰,对应SDK参数5
+ ///
IronGray, // 铁灰,对应SDK参数5
+ ///
+ /// 红热,对应SDK参数6
+ ///
RedHot, // 红热,对应SDK参数6
+ ///
+ /// 彩虹2,对应SDK参数7
+ ///
Rainbow2 // 彩虹2,对应SDK参数7
}
@@ -55,12 +97,33 @@ namespace JoyD.Windows.CS.Toprie
///
public enum VideoMode
{
+ ///
+ /// 红外,对应SDK参数0
+ ///
Infrared, // 红外,对应SDK参数0
+ ///
+ /// 可见光,对应SDK参数1
+ ///
VisibleLight, // 可见光,对应SDK参数1
+ ///
+ /// 融合1,对应SDK参数2
+ ///
Fusion1, // 融合1,对应SDK参数2
+ ///
+ /// 融合2,对应SDK参数3
+ ///
Fusion2, // 融合2,对应SDK参数3
+ ///
+ /// 融合3,对应SDK参数4
+ ///
Fusion3, // 融合3,对应SDK参数4
+ ///
+ /// 融合4,对应SDK参数5
+ ///
Fusion4, // 融合4,对应SDK参数5
+ ///
+ /// 融合5,对应SDK参数6
+ ///
Fusion5 // 融合5,对应SDK参数6
}
@@ -88,9 +151,20 @@ namespace JoyD.Windows.CS.Toprie
///
public class ConnectionStatusChangedEventArgs : EventArgs
{
+ ///
+ /// 连接状态
+ ///
public ConnectionStatus Status { get; set; }
+ ///
+ /// 设备信息
+ ///
public string DeviceInfo { get; set; }
+ ///
+ /// 初始化连接状态改变事件参数
+ ///
+ /// 连接状态
+ /// 设备信息
public ConnectionStatusChangedEventArgs(ConnectionStatus status, string deviceInfo = null)
{
Status = status;
@@ -104,9 +178,20 @@ namespace JoyD.Windows.CS.Toprie
///
public class ImageReceivedEventArgs : EventArgs
{
+ ///
+ /// 图像数据
+ ///
public byte[] ImageData { get; set; }
+ ///
+ /// 图像模式
+ ///
public ImageMode Mode { get; set; }
+ ///
+ /// 初始化图像接收事件参数
+ ///
+ /// 图像数据
+ /// 图像模式
public ImageReceivedEventArgs(byte[] imageData, ImageMode mode)
{
ImageData = imageData;
@@ -119,9 +204,20 @@ namespace JoyD.Windows.CS.Toprie
///
public class ConnectionExceptionEventArgs : EventArgs
{
+ ///
+ /// 异常对象
+ ///
public Exception Exception { get; set; }
+ ///
+ /// 异常消息
+ ///
public string Message { get; set; }
+ ///
+ /// 初始化连接异常事件参数
+ ///
+ /// 异常对象
+ /// 异常消息
public ConnectionExceptionEventArgs(Exception ex, string message = null)
{
Exception = ex;
@@ -157,29 +253,64 @@ namespace JoyD.Windows.CS.Toprie
///
public string SerialNumber { get; set; }
+ ///
+ /// 返回设备信息的字符串表示
+ ///
+ /// 设备信息字符串
public override string ToString()
{
return $"设备 {DeviceID} ({IPAddress})";
}
}
- // 测温区配置类
+ ///
+ /// 测温区配置类
+ ///
public class TemperatureZone
{
+ ///
+ /// 测温区索引
+ ///
public int Index { get; set; }
+ ///
+ /// 测温区X坐标
+ ///
public int X { get; set; }
+ ///
+ /// 测温区Y坐标
+ ///
public int Y { get; set; }
+ ///
+ /// 测温区宽度
+ ///
public int Width { get; set; }
+ ///
+ /// 测温区高度
+ ///
public int Height { get; set; }
+ ///
+ /// 测温区颜色
+ ///
public Color Color { get; set; }
}
- // 温差配置类
+ ///
+ /// 温差配置类
+ ///
public class TemperatureDiffConfig
{
+ ///
+ /// 温度图例数据
+ ///
public List> TemperatureLegend { get; set; }
+ ///
+ /// 像素温度数据
+ ///
public Dictionary PixelTemperatureData { get; set; }
+ ///
+ /// 初始化温差配置类
+ ///
public TemperatureDiffConfig()
{
TemperatureLegend = new List>();
@@ -187,12 +318,19 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 设备管理器类,负责设备的连接、管理和通信
+ ///
public class DeviceManager : IDisposable
{
- // 设计模式标志,用于在设计模式下跳过实际的设备连接和初始化
+ ///
+ /// 设计模式标志,用于在设计模式下跳过实际的设备连接和初始化
+ ///
public static bool IsDesignMode { get; set; } = true;
- // 暂停检测标志,用于控制是否进行连接检测和重连操作
+ ///
+ /// 暂停检测标志,用于控制是否进行连接检测和重连操作
+ ///
public bool IsDetectionPaused { get; set; } = false;
///
/// 最近检查到的温度
@@ -249,7 +387,9 @@ namespace JoyD.Windows.CS.Toprie
private int _reconnectInterval = 2000;
// 重连尝试次数
- // 最大重连尝试次数
+ ///
+ /// 最大重连尝试次数
+ ///
public static int MaxReconnectAttempts = 5;
// 连接检查定时器
private System.Threading.Timer _connectionCheckTimer;
@@ -948,26 +1088,7 @@ namespace JoyD.Windows.CS.Toprie
}
}
}
- ///
- /// 启动温度数据清理定时器
- ///
- // 温度数据清理定时器相关方法已移除,改为直接在后台线程处理
-
- ///
- /// 停止温度数据清理定时器
- ///
- // 温度数据清理定时器相关方法已移除,改为直接在后台线程处理
-
- ///
- /// 清理温度数据
- ///
- /// 定时器状态对象
- ///
- /// 在后台线程处理温度帧数据
- ///
- /// 温度帧数据
- /// 宽度
- /// 高度
+
///
/// 初始化温度数据处理线程
///
@@ -1502,7 +1623,6 @@ namespace JoyD.Windows.CS.Toprie
const int RECEIVE_TIMEOUT = 30000; // 30秒超时
const int SLEEP_MS = 1000; // 标准等待时间
const int CONNECTION_CHECK_INTERVAL_MS = 15000; // 连接检查间隔5秒
- const int LONG_SLEEP_MS = 5000; // 长等待时间
const int ERROR_SLEEP_MS = 3000; // 错误后等待时间
try
@@ -1921,9 +2041,6 @@ namespace JoyD.Windows.CS.Toprie
}
}
- ///
- /// 设置温度接收状态标志
- ///
// SetReceivingState方法已移除,因为_isReceivingTemperatureData变量未被使用
///
@@ -1936,7 +2053,6 @@ namespace JoyD.Windows.CS.Toprie
private const int FixedWidth = 512;
private const int FixedHeight = 384;
- /// 累积的温度数据包列表
// 重入保护标志
private bool _isProcessingTemperatureData = false;
@@ -4617,6 +4733,10 @@ namespace JoyD.Windows.CS.Toprie
return _connectionStatus == ConnectionStatus.Connected;
}
+ ///
+ /// 连接指定ID的设备
+ ///
+ /// 设备ID
public void ConnectDevice(int deviceId)
{
try
@@ -4695,7 +4815,6 @@ namespace JoyD.Windows.CS.Toprie
// 使用ManualResetEvent实现连接超时机制
var connectionCompleteEvent = new ManualResetEvent(false);
- bool timeoutOccurred = false;
// 真实连接过程
System.Threading.ThreadPool.QueueUserWorkItem((state) =>
@@ -4884,8 +5003,6 @@ namespace JoyD.Windows.CS.Toprie
///
/// 根据设备ID连接设备
///
- /// 设备ID
- // 该方法已在文件上方定义,删除重复实现
///
/// 断开设备连接(兼容Form1)
@@ -4895,8 +5012,6 @@ namespace JoyD.Windows.CS.Toprie
Disconnect();
}
- // TestTcpConnection方法不再需要,由A8SDK内部处理连接测试
-
///
/// 发送连接命令
///
@@ -4992,6 +5107,9 @@ namespace JoyD.Windows.CS.Toprie
// 连接进行中标志(用于防止重连期间再次触发连接)
private volatile bool _isConnecting = false;
+ ///
+ /// 启动自动重连机制
+ ///
public void StartAutoReconnect()
{
Log($"[{DateTime.Now:HH:mm:ss.fff}] [线程:{Thread.CurrentThread.ManagedThreadId}] StartAutoReconnect() - 开始执行");
@@ -5856,6 +5974,65 @@ namespace JoyD.Windows.CS.Toprie
///
/// CSV文件路径
/// 是否保存成功
+ public bool SaveTemperatureDataToCsv(string filePath)
+ {
+ try
+ {
+ // 检查文件路径是否有效
+ if (string.IsNullOrEmpty(filePath))
+ {
+ Console.WriteLine("文件路径无效");
+ return false;
+ }
+
+ // 获取目录路径
+ string directoryPath = Path.GetDirectoryName(filePath);
+ if (!Directory.Exists(directoryPath))
+ {
+ try
+ {
+ // 创建目录
+ Directory.CreateDirectory(directoryPath);
+ Console.WriteLine($"创建目录: {directoryPath}");
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine($"创建目录失败: {ex.Message}");
+ return false;
+ }
+ }
+
+ // 使用默认的LastTemperature数据
+ TemperatureData temperatureData = LastTemperature;
+ if (temperatureData == null)
+ {
+ Console.WriteLine("没有可用的温度数据");
+ return false;
+ }
+
+ // 准备CSV数据
+ List csvLines = new List();
+ csvLines.Add("时间,区域ID,点ID,温度,最高温度,最低温度,平均温度,区域类型");
+
+ DateTime timestamp = DateTime.Now;
+ foreach (var zoneTemp in temperatureData.ZoneTemperatures)
+ {
+ string line = $"{timestamp:yyyy-MM-dd HH:mm:ss},{zoneTemp.Value.AreaId},{zoneTemp.Value.SpotId},{zoneTemp.Value.Temperature:F2},{zoneTemp.Value.MaxTemperature:F2},{zoneTemp.Value.MinTemperature:F2},{zoneTemp.Value.AverageTemperature:F2},{zoneTemp.Value.AreaType}";
+ csvLines.Add(line);
+ }
+
+ // 写入CSV文件
+ File.WriteAllLines(filePath, csvLines, Encoding.UTF8);
+ Console.WriteLine($"温度数据已保存到: {filePath}");
+ return true;
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine($"保存温度数据失败: {ex.Message}");
+ return false;
+ }
+ }
+
///
/// 保存温度数据到CSV文件(接受已有的温度数据)
///
diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/Properties/AssemblyInfo.cs b/Windows/CS/Framework4.0/Toprie/Toprie/Properties/AssemblyInfo.cs
index 361f9bf..e2074b7 100644
--- a/Windows/CS/Framework4.0/Toprie/Toprie/Properties/AssemblyInfo.cs
+++ b/Windows/CS/Framework4.0/Toprie/Toprie/Properties/AssemblyInfo.cs
@@ -10,7 +10,7 @@ using System.Runtime.InteropServices;
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("JoyD")]
[assembly: AssemblyProduct("com.joyd.toprie")]
-[assembly: AssemblyCopyright("Copyright © 2025 JoyD")]
+[assembly: AssemblyCopyright("Copyright © 2026 JoyD")]
[assembly: AssemblyTrademark("JoyD")]
[assembly: AssemblyCulture("")]
diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs b/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs
index 3f1f8ab..4fa80fc 100644
--- a/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs
+++ b/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs
@@ -1,7 +1,5 @@
using System;
using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
@@ -13,10 +11,16 @@ using System.Windows.Forms;
namespace JoyD.Windows.CS
{
+ ///
+ /// 设置窗口类,用于配置热成像设备的各种参数和检测区域
+ ///
public partial class Setting : Form
{
// 创建并显示检测配置窗口
private static Setting _formInstance;
+ ///
+ /// 获取Setting类的单例实例
+ ///
public static Setting Form
{
get
@@ -30,7 +34,7 @@ namespace JoyD.Windows.CS
}
// 定时器字段
- private Timer _timer;
+ private readonly Timer _timer;
// 绘制模式标志
private bool _isDrawingMode = false;
@@ -73,6 +77,9 @@ namespace JoyD.Windows.CS
private bool _isEraseMode = false; // 擦除模式标志
private Rectangle _tempDiffTempRectangle = Rectangle.Empty; // 临时温差图矩形预览
+ ///
+ /// 初始化Setting窗体
+ ///
public Setting()
{
InitializeComponent();
diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/SharedStructures.cs b/Windows/CS/Framework4.0/Toprie/Toprie/SharedStructures.cs
index 8d773b0..558041f 100644
--- a/Windows/CS/Framework4.0/Toprie/Toprie/SharedStructures.cs
+++ b/Windows/CS/Framework4.0/Toprie/Toprie/SharedStructures.cs
@@ -9,170 +9,482 @@ namespace JoyD.Windows.CS.Toprie
public static class SharedStructures
{
// 位置相关结构体
+ ///
+ /// 区域位置结构体
+ ///
public struct AreaPos
{
+ ///
+ /// 启用状态,0表示禁用,1表示启用
+ ///
public int enable;
+ ///
+ /// 区域左上角X坐标
+ ///
public int x;
+ ///
+ /// 区域左上角Y坐标
+ ///
public int y;
+ ///
+ /// 区域宽度
+ ///
public int width;
+ ///
+ /// 区域高度
+ ///
public int height;
}
+ ///
+ /// 点位置结构体
+ ///
public struct SpotPos
{
+ ///
+ /// 启用状态,0表示禁用,1表示启用
+ ///
public int enable;
+ ///
+ /// 点的X坐标
+ ///
public int x;
+ ///
+ /// 点的Y坐标
+ ///
public int y;
}
+ ///
+ /// 线位置结构体
+ ///
public struct LinePos
{
+ ///
+ /// 启用状态,0表示禁用,1表示启用
+ ///
public int enable;
+ ///
+ /// 起始点X坐标
+ ///
public int sta_x;
+ ///
+ /// 起始点Y坐标
+ ///
public int sta_y;
+ ///
+ /// 结束点X坐标
+ ///
public int end_x;
+ ///
+ /// 结束点Y坐标
+ ///
public int end_y;
}
+ ///
+ /// 图像位置结构体
+ ///
public struct ImagePos
{
+ ///
+ /// 区域位置数组,最多支持6个区域
+ ///
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
public AreaPos[] area;
+ ///
+ /// 点位置数组,最多支持6个点
+ ///
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
public SpotPos[] spot;
+ ///
+ /// 线位置
+ ///
public LinePos line;
}
// 温度相关结构体
+ ///
+ /// 区域温度结构体
+ ///
public struct AreaTemp
{
+ ///
+ /// 启用状态,0表示禁用,1表示启用
+ ///
public int enable;
+ ///
+ /// 最高温度值
+ ///
public int max_temp;
+ ///
+ /// 最高温度点的X坐标
+ ///
public int max_temp_x;
+ ///
+ /// 最高温度点的Y坐标
+ ///
public int max_temp_y;
+ ///
+ /// 最低温度值
+ ///
public int min_temp;
+ ///
+ /// 最低温度点的X坐标
+ ///
public int min_temp_x;
+ ///
+ /// 最低温度点的Y坐标
+ ///
public int min_temp_y;
+ ///
+ /// 平均温度值
+ ///
public int ave_temp;
}
+ ///
+ /// 点温度结构体
+ ///
public struct SpotTemp
{
+ ///
+ /// 启用状态,0表示禁用,1表示启用
+ ///
public int enable;
+ ///
+ /// 温度值
+ ///
public int temp;
}
+ ///
+ /// 线温度结构体
+ ///
public struct LineTemp
{
+ ///
+ /// 启用状态,0表示禁用,1表示启用
+ ///
public int enable;
+ ///
+ /// 最高温度值
+ ///
public int max_temp;
+ ///
+ /// 最高温度点的X坐标
+ ///
public int max_temp_x;
+ ///
+ /// 最高温度点的Y坐标
+ ///
public int max_temp_y;
+ ///
+ /// 最低温度值
+ ///
public int min_temp;
+ ///
+ /// 最低温度点的X坐标
+ ///
public int min_temp_x;
+ ///
+ /// 最低温度点的Y坐标
+ ///
public int min_temp_y;
+ ///
+ /// 平均温度值
+ ///
public int ave_temp;
}
+ ///
+ /// 全局温度结构体
+ ///
public struct GlobaTemp
{
+ ///
+ /// 最高温度值
+ ///
public int max_temp;
+ ///
+ /// 最高温度点的X坐标
+ ///
public int max_temp_x;
+ ///
+ /// 最高温度点的Y坐标
+ ///
public int max_temp_y;
+ ///
+ /// 最低温度值
+ ///
public int min_temp;
+ ///
+ /// 最低温度点的X坐标
+ ///
public int min_temp_x;
+ ///
+ /// 最低温度点的Y坐标
+ ///
public int min_temp_y;
}
+ ///
+ /// 图像温度结构体
+ ///
public struct ImageTemp
{
+ ///
+ /// 区域温度数组,最多支持6个区域
+ ///
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
public AreaTemp[] area;
+ ///
+ /// 点温度数组,最多支持6个点
+ ///
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
public SpotTemp[] spot;
+ ///
+ /// 线温度
+ ///
public LineTemp line;
+ ///
+ /// 全局温度
+ ///
public GlobaTemp globa;
}
// 配置相关结构体
+ ///
+ /// 邮件服务器配置结构体
+ ///
public struct EmailServer
{
+ ///
+ /// 启用状态,0表示禁用,1表示启用
+ ///
public int enable;
+ ///
+ /// 收件人邮箱地址
+ ///
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
public char[] recv_addr;
+ ///
+ /// 发件人邮箱地址
+ ///
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
public char[] send_addr;
+ ///
+ /// 发件人邮箱密码
+ ///
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
public char[] send_pwd;
}
+ ///
+ /// TFTP服务器配置结构体
+ ///
public struct TftpServer
{
+ ///
+ /// 启用状态,0表示禁用,1表示启用
+ ///
public int enable;
+ ///
+ /// TFTP服务器地址
+ ///
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
public char[] tftp_addr;
}
+ ///
+ /// 网络以太网配置结构体
+ ///
public struct NetworkEth
{
+ ///
+ /// 启用状态,0表示禁用,1表示启用
+ ///
public int enable;
+ ///
+ /// 静态IP地址
+ ///
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
public char[] static_ip;
+ ///
+ /// 子网掩码
+ ///
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
public char[] netmask;
+ ///
+ /// 默认网关
+ ///
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
public char[] gateway;
+ ///
+ /// 主DNS服务器地址
+ ///
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
public char[] dns1;
+ ///
+ /// 备DNS服务器地址
+ ///
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
public char[] dns2;
}
+ ///
+ /// 环境参数结构体
+ ///
public struct EnvirParam
{
+ ///
+ /// 计算方法
+ ///
public int method;
+ ///
+ /// 参数编号
+ ///
public int num;
+ ///
+ /// 发射率
+ ///
public float emissivity;
+ ///
+ /// 环境温度
+ ///
public float airTemp;
+ ///
+ /// 目标温度
+ ///
public float targetTemp;
+ ///
+ /// 大气透过率
+ ///
public float atmosTrans;
+ ///
+ /// 测量距离
+ ///
public float distance;
+ ///
+ /// 红外温度
+ ///
public float infraredTemp;
+ ///
+ /// 红外辐射率
+ ///
public float infraredRadia;
}
+ ///
+ /// 报警参数结构体
+ ///
public struct AlarmParam
{
+ ///
+ /// 报警方法
+ ///
public int method;
+ ///
+ /// 参数编号
+ ///
public int num;
+ ///
+ /// 激活状态
+ ///
public int active;
+ ///
+ /// 报警条件
+ ///
public int condition;
+ ///
+ /// 截图功能
+ ///
public int captrue;
+ ///
+ /// 禁用校准
+ ///
public int disableCalib;
+ ///
+ /// 邮件报警
+ ///
public int email;
+ ///
+ /// 数字输出
+ ///
public int digital;
+ ///
+ /// FTP上传
+ ///
public int ftp;
+ ///
+ /// 报警阈值
+ ///
public float threshold;
+ ///
+ /// 滞后值
+ ///
public float hysteresis;
+ ///
+ /// 阈值时间
+ ///
public int thresholeTime;
}
+ ///
+ /// 焦距参数结构体
+ ///
public struct FocusParam
{
+ ///
+ /// 对焦方法
+ ///
public int method;
+ ///
+ /// 对焦区域X坐标
+ ///
public int x;
+ ///
+ /// 对焦区域Y坐标
+ ///
public int y;
+ ///
+ /// 对焦区域宽度
+ ///
public int width;
+ ///
+ /// 对焦区域高度
+ ///
public int height;
}
+ ///
+ /// 时间参数结构体
+ ///
public struct TimeParam
{
+ ///
+ /// 年份
+ ///
public int year;
+ ///
+ /// 月份
+ ///
public char month;
+ ///
+ /// 日期
+ ///
public char day;
+ ///
+ /// 小时
+ ///
public char hour;
+ ///
+ /// 分钟
+ ///
public char minute;
+ ///
+ /// 秒
+ ///
public char second;
}
}
diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/TemperatureData.cs b/Windows/CS/Framework4.0/Toprie/Toprie/TemperatureData.cs
index c3065ab..d0b677e 100644
--- a/Windows/CS/Framework4.0/Toprie/Toprie/TemperatureData.cs
+++ b/Windows/CS/Framework4.0/Toprie/Toprie/TemperatureData.cs
@@ -75,9 +75,34 @@ namespace JoyD.Windows.CS.Toprie
///
public class ZoneTemperatureData
{
+ ///
+ /// 区域ID
+ ///
+ public int AreaId { get; set; }
+ ///
+ /// 点ID
+ ///
+ public int SpotId { get; set; }
+ ///
+ /// 区域温度
+ ///
+ public float Temperature { get; set; }
+ ///
+ /// 区域最低温度
+ ///
public float MinTemperature { get; set; }
+ ///
+ /// 区域最高温度
+ ///
public float MaxTemperature { get; set; }
+ ///
+ /// 区域平均温度
+ ///
public float AverageTemperature { get; set; }
+ ///
+ /// 区域类型
+ ///
+ public int AreaType { get; set; }
}
///
diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/UdpCommunicationManager.cs b/Windows/CS/Framework4.0/Toprie/Toprie/UdpCommunicationManager.cs
index 46b4d53..ee8c3df 100644
--- a/Windows/CS/Framework4.0/Toprie/Toprie/UdpCommunicationManager.cs
+++ b/Windows/CS/Framework4.0/Toprie/Toprie/UdpCommunicationManager.cs
@@ -267,10 +267,25 @@ namespace JoyD.Windows.CS.Toprie
///
public enum RequestResult
{
+ ///
+ /// 请求成功
+ ///
Success,
+ ///
+ /// 请求超时
+ ///
Timeout,
+ ///
+ /// 网络错误
+ ///
NetworkError,
+ ///
+ /// 处理错误
+ ///
ProcessingError,
+ ///
+ /// 无效响应
+ ///
InvalidResponse
}
diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/V8.cs b/Windows/CS/Framework4.0/Toprie/Toprie/V8.cs
index be9915b..b39e940 100644
--- a/Windows/CS/Framework4.0/Toprie/Toprie/V8.cs
+++ b/Windows/CS/Framework4.0/Toprie/Toprie/V8.cs
@@ -1,27 +1,22 @@
using System;
using System.Collections.Generic;
using System.Text;
-using System.Net.Sockets;
using System.Net;
-using System.Threading;
+using System.Net.Sockets;
using System.IO;
-using System.Runtime.InteropServices;
-// 导入UDP通信管理器
-using JoyD.Windows.CS.Toprie;
+using System.Threading;
namespace JoyD.Windows.CS.Toprie
{
+ ///
+ /// V8热成像设备SDK封装类
+ ///
public class V8
{
// 结构体引用已移至SharedStructures类
// 常量定义
- private const int SDK_PORT = 8080;
- private const int BUFFER_SIZE = 4096;
- private const int TIMEOUT = 3000;
private const string CMD_HEAD = "+CMD";
- private const int DISCOVERY_UDP_PORT = 18889;
- private const int SEARCH_DEVICE_MAX_NUM = 99;
// 日志文件路径
private static readonly string LogFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Log.txt");
@@ -133,11 +128,18 @@ namespace JoyD.Windows.CS.Toprie
private static bool isSdkInitialized = false;
private static readonly Dictionary deviceInstances = new Dictionary();
+ ///
+ /// V8类构造函数
+ ///
+ /// 设备IP地址
public V8(string ip)
{
deviceIp = ip;
}
+ ///
+ /// V8类析构函数
+ ///
~V8()
{
Disconnect();
@@ -279,6 +281,10 @@ namespace JoyD.Windows.CS.Toprie
}
// SDK核心功能实现 - 不使用DllImport
+ ///
+ /// 初始化SDK
+ ///
+ /// 0表示成功,-1表示失败
public static int SDK_initialize()
{
try
@@ -299,6 +305,10 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 销毁SDK资源
+ ///
+ /// 0表示成功,-1表示失败
public static int SDK_destroy()
{
try
@@ -323,6 +333,11 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 搜索设备
+ ///
+ /// 设备列表长度(未使用)
+ /// 设备列表字符串
public static string SDK_serch_device(int list_len)
{
try
@@ -408,6 +423,9 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 执行快门校正
+ ///
public void Shutter_correction()
{
try
@@ -430,6 +448,9 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 获取快门校正次数
+ ///
public int Shutter_times
{
get
@@ -688,6 +709,9 @@ namespace JoyD.Windows.CS.Toprie
}
// 保留原属性以保持向后兼容性
+ ///
+ /// 获取或设置色彩板模式
+ ///
public int Color_plate
{
get => GetColorPlate();
@@ -724,6 +748,9 @@ namespace JoyD.Windows.CS.Toprie
+ ///
+ /// 获取或设置镜像模式
+ ///
public int Mirror_mode
{
get
@@ -965,12 +992,20 @@ namespace JoyD.Windows.CS.Toprie
}
// 保留原属性以保持向后兼容性
+ ///
+ /// 获取或设置视频模式
+ ///
public int Video_mode
{
get => GetVideoModeInternal();
set => SetVideoModeInternal(value);
}
+ ///
+ /// 设置区域位置
+ ///
+ /// 区域索引
+ /// 区域位置数据
public void Set_area_pos(int index, SharedStructures.AreaPos area_data)
{
try
@@ -986,6 +1021,11 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 获取区域位置
+ ///
+ /// 区域索引
+ /// 区域位置数据
public SharedStructures.AreaPos Get_area_pos(int index)
{
try
@@ -1021,6 +1061,11 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 设置点位置
+ ///
+ /// 点索引
+ /// 点位置数据
public void Set_spot_pos(int index, SharedStructures.SpotPos spot_data)
{
try
@@ -1036,6 +1081,11 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 获取点位置
+ ///
+ /// 点索引
+ /// 点位置数据
public SharedStructures.SpotPos Get_spot_pos(int index)
{
try
@@ -1069,6 +1119,9 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 获取或设置线位置
+ ///
public SharedStructures.LinePos Line_pos
{
set
@@ -1121,6 +1174,9 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 获取所有位置信息
+ ///
public SharedStructures.ImagePos All_pos
{
get
@@ -1152,6 +1208,9 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 获取或设置温度范围
+ ///
public int Temp_range
{
set
@@ -1196,6 +1255,9 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 获取或设置视频ISP X偏移
+ ///
public int Video_isp_x_offset
{
set
@@ -1240,6 +1302,9 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 获取或设置视频ISP Y偏移
+ ///
public int Video_isp_y_offset
{
set
@@ -1284,6 +1349,9 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 获取或设置视频ISP X缩放
+ ///
public int Video_isp_x_scale
{
set
@@ -1328,6 +1396,9 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 获取或设置视频ISP Y缩放
+ ///
public int Video_isp_y_scale
{
set
@@ -1372,6 +1443,9 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 获取或设置LED状态
+ ///
public int Set_led
{
set
@@ -1416,6 +1490,9 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 获取或设置邮件服务器配置
+ ///
public SharedStructures.EmailServer Email_server
{
set
@@ -1466,6 +1543,9 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 获取或设置TFTP服务器配置
+ ///
public SharedStructures.TftpServer Tftp_server
{
set
@@ -1515,6 +1595,9 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 获取或设置网络配置
+ ///
public SharedStructures.NetworkEth Network_eth
{
set
@@ -1564,6 +1647,9 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 获取或设置融合距离
+ ///
public int Fusion_distance
{
set
@@ -1608,6 +1694,10 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 设置环境参数
+ ///
+ /// 环境参数
public void Set_envir_param(SharedStructures.EnvirParam data)
{
try
@@ -1632,6 +1722,11 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 获取区域环境参数
+ ///
+ /// 区域索引
+ /// 环境参数
public SharedStructures.EnvirParam Get_area_envir_param(int index)
{
try
@@ -1656,6 +1751,11 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 获取点环境参数
+ ///
+ /// 点索引
+ /// 环境参数
public SharedStructures.EnvirParam Get_spot_envir_param(int index)
{
try
@@ -1680,6 +1780,10 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 获取线环境参数
+ ///
+ /// 环境参数
public SharedStructures.EnvirParam Get_line_envir_param()
{
try
@@ -1704,6 +1808,10 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 获取全局环境参数
+ ///
+ /// 环境参数
public SharedStructures.EnvirParam Get_globa_envir_param()
{
try
@@ -1728,6 +1836,10 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 设置报警参数
+ ///
+ /// 报警参数
public void Set_alarm_param(SharedStructures.AlarmParam data)
{
try
@@ -1750,6 +1862,11 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 获取区域报警参数
+ ///
+ /// 区域索引
+ /// 报警参数
public SharedStructures.AlarmParam Get_area_alarm_param(int index)
{
try
@@ -1773,6 +1890,11 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 获取点报警参数
+ ///
+ /// 点索引
+ /// 报警参数
public SharedStructures.AlarmParam Get_spot_alarm_param(int index)
{
try
@@ -1797,6 +1919,10 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 获取全局报警参数
+ ///
+ /// 报警参数
public SharedStructures.AlarmParam Get_globa_alarm_param()
{
try
@@ -1821,6 +1947,10 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 获取线报警参数
+ ///
+ /// 报警参数
public SharedStructures.AlarmParam Get_line_alarm_param()
{
try
@@ -1845,6 +1975,11 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 获取区域温度
+ ///
+ /// 区域索引
+ /// 区域温度数据
public SharedStructures.AreaTemp Get_area_temp(int index)
{
try
@@ -1869,6 +2004,11 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 获取点温度
+ ///
+ /// 点索引
+ /// 点温度数据
public SharedStructures.SpotTemp Get_spot_temp(int index)
{
try
@@ -1893,6 +2033,10 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 获取线温度
+ ///
+ /// 线温度数据
public SharedStructures.LineTemp Get_line_temp()
{
try
@@ -1917,6 +2061,10 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 获取全局温度
+ ///
+ /// 全局温度数据
public SharedStructures.GlobaTemp Get_globa_temp()
{
try
@@ -1941,6 +2089,10 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 获取所有温度数据
+ ///
+ /// 图像温度数据
public SharedStructures.ImageTemp Get_all_temp()
{
try
@@ -1965,6 +2117,9 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 设备重启
+ ///
public void Power_reboot()
{
try
@@ -1987,6 +2142,9 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 恢复默认参数
+ ///
public void Param_recover()
{
try
@@ -2009,6 +2167,9 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 设备固件更新
+ ///
public void Update()
{
try
@@ -2032,6 +2193,10 @@ namespace JoyD.Windows.CS.Toprie
}
// 使用SendCommand方法发送心跳命令,与SDK保持一致
+ ///
+ /// 发送心跳命令
+ ///
+ /// 心跳响应值
public int Heartbeat()
{
try
@@ -2076,6 +2241,13 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 设置串口参数
+ ///
+ /// 波特率
+ /// 数据位
+ /// 校验位
+ /// 停止位
public void Set_uart(int nSpeed, int nBits, char nEvent, int nStop)
{
try
@@ -2098,6 +2270,10 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 发送串口命令
+ ///
+ /// 命令字节数组
public void Send_uart_command(byte[] cmd)
{
try
@@ -2115,6 +2291,10 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 自动对焦
+ ///
+ /// 对焦参数
public void Autofocus(SharedStructures.FocusParam data)
{
try
@@ -2137,6 +2317,10 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 设置设备名称
+ ///
+ /// 设备名称
public void Set_device_name(string data)
{
try
@@ -2159,6 +2343,10 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 获取设备名称
+ ///
+ /// 设备名称
public string Get_device_name()
{
try
@@ -2191,6 +2379,10 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 获取检测编号
+ ///
+ /// 检测编号字节数组
public byte[] Get_detect_number()
{
try
@@ -2226,6 +2418,9 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 获取或设置温度帧
+ ///
public char Temp_frame
{
set
@@ -2277,6 +2472,9 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 获取或设置报警输出
+ ///
public char Alarm
{
set
@@ -2331,6 +2529,9 @@ namespace JoyD.Windows.CS.Toprie
// 私有字段,用于存储最后一次成功获取的温补值
private int _lastSuccessfulCompTemp = 0;
+ ///
+ /// 获取或设置温补值
+ ///
public int Comp_temp
{
get
@@ -2373,6 +2574,10 @@ namespace JoyD.Windows.CS.Toprie
}
}
+ ///
+ /// 设置系统时间
+ ///
+ /// 时间参数
public void Set_time(SharedStructures.TimeParam data)
{
try
@@ -2395,18 +2600,30 @@ namespace JoyD.Windows.CS.Toprie
}
}
// 获取视频模式
+ ///
+ /// 获取视频模式
+ ///
+ /// 视频模式值
public int GetVideoMode()
{
return GetVideoModeInternal();
}
// 设置视频模式
+ ///
+ /// 设置视频模式
+ ///
+ /// 视频模式值
public void SetVideoMode(int mode)
{
SetVideoModeInternal(mode);
}
// 新增方法:获取图像数据
+ ///
+ /// 获取图像数据
+ ///
+ /// 图像数据字节数组
public byte[] GetImageData()
{
try
diff --git a/Windows/CS/Framework4.0/Toprie/publish-nuget.ps1 b/Windows/CS/Framework4.0/Toprie/publish-nuget.ps1
index e5be191..9c4f93b 100644
--- a/Windows/CS/Framework4.0/Toprie/publish-nuget.ps1
+++ b/Windows/CS/Framework4.0/Toprie/publish-nuget.ps1
@@ -73,7 +73,7 @@ if (Test-Path "$output\$packageId.nuspec") { Remove-Item -Path "$output\$package
# 构建项目(确保生成pdb和xml文件)
Write-Host "1. 正在构建项目..."
Write-Host "当前目录: $scriptDir"
-dotnet build "$scriptDir\Toprie\Toprie.csproj" -c Debug -o "$output" /p:DebugSymbols=true /p:DebugType=full /p:DocumentationFile=JoyD.Windows.CS.Toprie.xml
+dotnet build "$scriptDir\Toprie\Toprie.csproj" -c Debug /p:DebugSymbols=true /p:DebugType=full
if ($LASTEXITCODE -ne 0) {
Write-Host "错误: 构建失败!" -ForegroundColor Red
@@ -81,11 +81,27 @@ if ($LASTEXITCODE -ne 0) {
}
# 验证DLL是否存在
-if (!(Test-Path "$output\$actualDllName")) {
- Write-Host "错误: 在输出目录中找不到$actualDllName!" -ForegroundColor Red
+$binDebugPath = Join-Path "$scriptDir\Toprie" "bin\Debug"
+if (!(Test-Path "$binDebugPath\$actualDllName")) {
+ Write-Host "错误: 在$binDebugPath目录中找不到$actualDllName!" -ForegroundColor Red
exit 1
}
+# 将构建文件复制到Output目录
+Write-Host "正在将构建文件复制到Output目录..."
+Copy-Item -Path "$binDebugPath\$actualDllName" -Destination $output -Force
+Write-Host "已复制$actualDllName到$output"
+
+if (Test-Path "$binDebugPath\$actualPdbName") {
+ Copy-Item -Path "$binDebugPath\$actualPdbName" -Destination $output -Force
+ Write-Host "已复制$actualPdbName到$output"
+}
+
+if (Test-Path "$binDebugPath\$actualXmlName") {
+ Copy-Item -Path "$binDebugPath\$actualXmlName" -Destination $output -Force
+ Write-Host "已复制$actualXmlName到$output"
+}
+
# 直接使用原始文件名,无需复制重命名
Write-Host "使用原始文件名: $actualDllName"
@@ -362,4 +378,4 @@ if (Test-Path $localNugetConfigPath) {
}
Write-Host "
-发布过程完成"
\ No newline at end of file
+发布过程完成"