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 +发布过程完成"