添加注释
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -10,6 +10,9 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace JoyD.Windows.CS.Toprie
|
||||
{
|
||||
/// <summary>
|
||||
/// 相机控件类,用于显示和处理相机图像
|
||||
/// </summary>
|
||||
public partial class Camera : UserControl
|
||||
{
|
||||
// 测温区配置类
|
||||
@@ -487,6 +490,9 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 相机控件构造函数
|
||||
/// </summary>
|
||||
public Camera()
|
||||
{
|
||||
InitializeComponent();
|
||||
@@ -3145,7 +3151,6 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <summary>
|
||||
/// imageBox双击事件处理方法
|
||||
/// 双击后弹出检测配置窗口
|
||||
|
||||
@@ -16,9 +16,21 @@ namespace JoyD.Windows.CS.Toprie
|
||||
/// </summary>
|
||||
public enum ConnectionStatus
|
||||
{
|
||||
/// <summary>
|
||||
/// 未连接状态
|
||||
/// </summary>
|
||||
Disconnected,
|
||||
/// <summary>
|
||||
/// 正在连接状态
|
||||
/// </summary>
|
||||
Connecting,
|
||||
/// <summary>
|
||||
/// 已连接状态
|
||||
/// </summary>
|
||||
Connected,
|
||||
/// <summary>
|
||||
/// 正在重连状态
|
||||
/// </summary>
|
||||
Reconnecting
|
||||
}
|
||||
|
||||
@@ -29,7 +41,13 @@ namespace JoyD.Windows.CS.Toprie
|
||||
/// </summary>
|
||||
public enum ImageMode
|
||||
{
|
||||
/// <summary>
|
||||
/// 红外模式
|
||||
/// </summary>
|
||||
Infrared, // 红外模式
|
||||
/// <summary>
|
||||
/// 自然模式
|
||||
/// </summary>
|
||||
Natural // 自然模式
|
||||
}
|
||||
|
||||
@@ -39,13 +57,37 @@ namespace JoyD.Windows.CS.Toprie
|
||||
/// </summary>
|
||||
public enum PaletteType
|
||||
{
|
||||
/// <summary>
|
||||
/// 白热,对应SDK参数0
|
||||
/// </summary>
|
||||
WhiteHot, // 白热,对应SDK参数0
|
||||
/// <summary>
|
||||
/// 黑热,对应SDK参数1
|
||||
/// </summary>
|
||||
BlackHot, // 黑热,对应SDK参数1
|
||||
/// <summary>
|
||||
/// 铁红,对应SDK参数2
|
||||
/// </summary>
|
||||
IronRed, // 铁红,对应SDK参数2
|
||||
/// <summary>
|
||||
/// 熔岩,对应SDK参数3
|
||||
/// </summary>
|
||||
Lava, // 熔岩,对应SDK参数3
|
||||
/// <summary>
|
||||
/// 彩虹,对应SDK参数4
|
||||
/// </summary>
|
||||
Rainbow, // 彩虹,对应SDK参数4
|
||||
/// <summary>
|
||||
/// 铁灰,对应SDK参数5
|
||||
/// </summary>
|
||||
IronGray, // 铁灰,对应SDK参数5
|
||||
/// <summary>
|
||||
/// 红热,对应SDK参数6
|
||||
/// </summary>
|
||||
RedHot, // 红热,对应SDK参数6
|
||||
/// <summary>
|
||||
/// 彩虹2,对应SDK参数7
|
||||
/// </summary>
|
||||
Rainbow2 // 彩虹2,对应SDK参数7
|
||||
}
|
||||
|
||||
@@ -55,12 +97,33 @@ namespace JoyD.Windows.CS.Toprie
|
||||
/// </summary>
|
||||
public enum VideoMode
|
||||
{
|
||||
/// <summary>
|
||||
/// 红外,对应SDK参数0
|
||||
/// </summary>
|
||||
Infrared, // 红外,对应SDK参数0
|
||||
/// <summary>
|
||||
/// 可见光,对应SDK参数1
|
||||
/// </summary>
|
||||
VisibleLight, // 可见光,对应SDK参数1
|
||||
/// <summary>
|
||||
/// 融合1,对应SDK参数2
|
||||
/// </summary>
|
||||
Fusion1, // 融合1,对应SDK参数2
|
||||
/// <summary>
|
||||
/// 融合2,对应SDK参数3
|
||||
/// </summary>
|
||||
Fusion2, // 融合2,对应SDK参数3
|
||||
/// <summary>
|
||||
/// 融合3,对应SDK参数4
|
||||
/// </summary>
|
||||
Fusion3, // 融合3,对应SDK参数4
|
||||
/// <summary>
|
||||
/// 融合4,对应SDK参数5
|
||||
/// </summary>
|
||||
Fusion4, // 融合4,对应SDK参数5
|
||||
/// <summary>
|
||||
/// 融合5,对应SDK参数6
|
||||
/// </summary>
|
||||
Fusion5 // 融合5,对应SDK参数6
|
||||
}
|
||||
|
||||
@@ -88,9 +151,20 @@ namespace JoyD.Windows.CS.Toprie
|
||||
/// </summary>
|
||||
public class ConnectionStatusChangedEventArgs : EventArgs
|
||||
{
|
||||
/// <summary>
|
||||
/// 连接状态
|
||||
/// </summary>
|
||||
public ConnectionStatus Status { get; set; }
|
||||
/// <summary>
|
||||
/// 设备信息
|
||||
/// </summary>
|
||||
public string DeviceInfo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 初始化连接状态改变事件参数
|
||||
/// </summary>
|
||||
/// <param name="status">连接状态</param>
|
||||
/// <param name="deviceInfo">设备信息</param>
|
||||
public ConnectionStatusChangedEventArgs(ConnectionStatus status, string deviceInfo = null)
|
||||
{
|
||||
Status = status;
|
||||
@@ -104,9 +178,20 @@ namespace JoyD.Windows.CS.Toprie
|
||||
/// </summary>
|
||||
public class ImageReceivedEventArgs : EventArgs
|
||||
{
|
||||
/// <summary>
|
||||
/// 图像数据
|
||||
/// </summary>
|
||||
public byte[] ImageData { get; set; }
|
||||
/// <summary>
|
||||
/// 图像模式
|
||||
/// </summary>
|
||||
public ImageMode Mode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 初始化图像接收事件参数
|
||||
/// </summary>
|
||||
/// <param name="imageData">图像数据</param>
|
||||
/// <param name="mode">图像模式</param>
|
||||
public ImageReceivedEventArgs(byte[] imageData, ImageMode mode)
|
||||
{
|
||||
ImageData = imageData;
|
||||
@@ -119,9 +204,20 @@ namespace JoyD.Windows.CS.Toprie
|
||||
/// </summary>
|
||||
public class ConnectionExceptionEventArgs : EventArgs
|
||||
{
|
||||
/// <summary>
|
||||
/// 异常对象
|
||||
/// </summary>
|
||||
public Exception Exception { get; set; }
|
||||
/// <summary>
|
||||
/// 异常消息
|
||||
/// </summary>
|
||||
public string Message { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 初始化连接异常事件参数
|
||||
/// </summary>
|
||||
/// <param name="ex">异常对象</param>
|
||||
/// <param name="message">异常消息</param>
|
||||
public ConnectionExceptionEventArgs(Exception ex, string message = null)
|
||||
{
|
||||
Exception = ex;
|
||||
@@ -157,29 +253,64 @@ namespace JoyD.Windows.CS.Toprie
|
||||
/// </summary>
|
||||
public string SerialNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 返回设备信息的字符串表示
|
||||
/// </summary>
|
||||
/// <returns>设备信息字符串</returns>
|
||||
public override string ToString()
|
||||
{
|
||||
return $"设备 {DeviceID} ({IPAddress})";
|
||||
}
|
||||
}
|
||||
|
||||
// 测温区配置类
|
||||
/// <summary>
|
||||
/// 测温区配置类
|
||||
/// </summary>
|
||||
public class TemperatureZone
|
||||
{
|
||||
/// <summary>
|
||||
/// 测温区索引
|
||||
/// </summary>
|
||||
public int Index { get; set; }
|
||||
/// <summary>
|
||||
/// 测温区X坐标
|
||||
/// </summary>
|
||||
public int X { get; set; }
|
||||
/// <summary>
|
||||
/// 测温区Y坐标
|
||||
/// </summary>
|
||||
public int Y { get; set; }
|
||||
/// <summary>
|
||||
/// 测温区宽度
|
||||
/// </summary>
|
||||
public int Width { get; set; }
|
||||
/// <summary>
|
||||
/// 测温区高度
|
||||
/// </summary>
|
||||
public int Height { get; set; }
|
||||
/// <summary>
|
||||
/// 测温区颜色
|
||||
/// </summary>
|
||||
public Color Color { get; set; }
|
||||
}
|
||||
|
||||
// 温差配置类
|
||||
/// <summary>
|
||||
/// 温差配置类
|
||||
/// </summary>
|
||||
public class TemperatureDiffConfig
|
||||
{
|
||||
/// <summary>
|
||||
/// 温度图例数据
|
||||
/// </summary>
|
||||
public List<Tuple<double, Color>> TemperatureLegend { get; set; }
|
||||
/// <summary>
|
||||
/// 像素温度数据
|
||||
/// </summary>
|
||||
public Dictionary<Point, double> PixelTemperatureData { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 初始化温差配置类
|
||||
/// </summary>
|
||||
public TemperatureDiffConfig()
|
||||
{
|
||||
TemperatureLegend = new List<Tuple<double, Color>>();
|
||||
@@ -187,12 +318,19 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设备管理器类,负责设备的连接、管理和通信
|
||||
/// </summary>
|
||||
public class DeviceManager : IDisposable
|
||||
{
|
||||
// 设计模式标志,用于在设计模式下跳过实际的设备连接和初始化
|
||||
/// <summary>
|
||||
/// 设计模式标志,用于在设计模式下跳过实际的设备连接和初始化
|
||||
/// </summary>
|
||||
public static bool IsDesignMode { get; set; } = true;
|
||||
|
||||
// 暂停检测标志,用于控制是否进行连接检测和重连操作
|
||||
/// <summary>
|
||||
/// 暂停检测标志,用于控制是否进行连接检测和重连操作
|
||||
/// </summary>
|
||||
public bool IsDetectionPaused { get; set; } = false;
|
||||
/// <summary>
|
||||
/// 最近检查到的温度
|
||||
@@ -249,7 +387,9 @@ namespace JoyD.Windows.CS.Toprie
|
||||
private int _reconnectInterval = 2000;
|
||||
// 重连尝试次数
|
||||
|
||||
// 最大重连尝试次数
|
||||
/// <summary>
|
||||
/// 最大重连尝试次数
|
||||
/// </summary>
|
||||
public static int MaxReconnectAttempts = 5;
|
||||
// 连接检查定时器
|
||||
private System.Threading.Timer _connectionCheckTimer;
|
||||
@@ -948,26 +1088,7 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 启动温度数据清理定时器
|
||||
/// </summary>
|
||||
// 温度数据清理定时器相关方法已移除,改为直接在后台线程处理
|
||||
|
||||
/// <summary>
|
||||
/// 停止温度数据清理定时器
|
||||
/// </summary>
|
||||
// 温度数据清理定时器相关方法已移除,改为直接在后台线程处理
|
||||
|
||||
/// <summary>
|
||||
/// 清理温度数据
|
||||
/// </summary>
|
||||
/// <param name="state">定时器状态对象</param>
|
||||
/// <summary>
|
||||
/// 在后台线程处理温度帧数据
|
||||
/// </summary>
|
||||
/// <param name="frameData">温度帧数据</param>
|
||||
/// <param name="width">宽度</param>
|
||||
/// <param name="height">高度</param>
|
||||
|
||||
/// <summary>
|
||||
/// 初始化温度数据处理线程
|
||||
/// </summary>
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设置温度接收状态标志
|
||||
/// </summary>
|
||||
// SetReceivingState方法已移除,因为_isReceivingTemperatureData变量未被使用
|
||||
|
||||
/// <summary>
|
||||
@@ -1936,7 +2053,6 @@ namespace JoyD.Windows.CS.Toprie
|
||||
private const int FixedWidth = 512;
|
||||
private const int FixedHeight = 384;
|
||||
|
||||
/// <param name="dataAccumulator">累积的温度数据包列表</param>
|
||||
// 重入保护标志
|
||||
private bool _isProcessingTemperatureData = false;
|
||||
|
||||
@@ -4617,6 +4733,10 @@ namespace JoyD.Windows.CS.Toprie
|
||||
return _connectionStatus == ConnectionStatus.Connected;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 连接指定ID的设备
|
||||
/// </summary>
|
||||
/// <param name="deviceId">设备ID</param>
|
||||
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
|
||||
/// <summary>
|
||||
/// 根据设备ID连接设备
|
||||
/// </summary>
|
||||
/// <param name="deviceId">设备ID</param>
|
||||
// 该方法已在文件上方定义,删除重复实现
|
||||
|
||||
/// <summary>
|
||||
/// 断开设备连接(兼容Form1)
|
||||
@@ -4895,8 +5012,6 @@ namespace JoyD.Windows.CS.Toprie
|
||||
Disconnect();
|
||||
}
|
||||
|
||||
// TestTcpConnection方法不再需要,由A8SDK内部处理连接测试
|
||||
|
||||
/// <summary>
|
||||
/// 发送连接命令
|
||||
/// </summary>
|
||||
@@ -4992,6 +5107,9 @@ namespace JoyD.Windows.CS.Toprie
|
||||
// 连接进行中标志(用于防止重连期间再次触发连接)
|
||||
private volatile bool _isConnecting = false;
|
||||
|
||||
/// <summary>
|
||||
/// 启动自动重连机制
|
||||
/// </summary>
|
||||
public void StartAutoReconnect()
|
||||
{
|
||||
Log($"[{DateTime.Now:HH:mm:ss.fff}] [线程:{Thread.CurrentThread.ManagedThreadId}] StartAutoReconnect() - 开始执行");
|
||||
@@ -5856,6 +5974,65 @@ namespace JoyD.Windows.CS.Toprie
|
||||
/// </summary>
|
||||
/// <param name="filePath">CSV文件路径</param>
|
||||
/// <returns>是否保存成功</returns>
|
||||
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<string> csvLines = new List<string>();
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 保存温度数据到CSV文件(接受已有的温度数据)
|
||||
/// </summary>
|
||||
|
||||
@@ -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("")]
|
||||
|
||||
|
||||
@@ -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
|
||||
{
|
||||
/// <summary>
|
||||
/// 设置窗口类,用于配置热成像设备的各种参数和检测区域
|
||||
/// </summary>
|
||||
public partial class Setting : Form
|
||||
{
|
||||
// 创建并显示检测配置窗口
|
||||
private static Setting _formInstance;
|
||||
/// <summary>
|
||||
/// 获取Setting类的单例实例
|
||||
/// </summary>
|
||||
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; // 临时温差图矩形预览
|
||||
|
||||
/// <summary>
|
||||
/// 初始化Setting窗体
|
||||
/// </summary>
|
||||
public Setting()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
@@ -9,170 +9,482 @@ namespace JoyD.Windows.CS.Toprie
|
||||
public static class SharedStructures
|
||||
{
|
||||
// 位置相关结构体
|
||||
/// <summary>
|
||||
/// 区域位置结构体
|
||||
/// </summary>
|
||||
public struct AreaPos
|
||||
{
|
||||
/// <summary>
|
||||
/// 启用状态,0表示禁用,1表示启用
|
||||
/// </summary>
|
||||
public int enable;
|
||||
/// <summary>
|
||||
/// 区域左上角X坐标
|
||||
/// </summary>
|
||||
public int x;
|
||||
/// <summary>
|
||||
/// 区域左上角Y坐标
|
||||
/// </summary>
|
||||
public int y;
|
||||
/// <summary>
|
||||
/// 区域宽度
|
||||
/// </summary>
|
||||
public int width;
|
||||
/// <summary>
|
||||
/// 区域高度
|
||||
/// </summary>
|
||||
public int height;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 点位置结构体
|
||||
/// </summary>
|
||||
public struct SpotPos
|
||||
{
|
||||
/// <summary>
|
||||
/// 启用状态,0表示禁用,1表示启用
|
||||
/// </summary>
|
||||
public int enable;
|
||||
/// <summary>
|
||||
/// 点的X坐标
|
||||
/// </summary>
|
||||
public int x;
|
||||
/// <summary>
|
||||
/// 点的Y坐标
|
||||
/// </summary>
|
||||
public int y;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 线位置结构体
|
||||
/// </summary>
|
||||
public struct LinePos
|
||||
{
|
||||
/// <summary>
|
||||
/// 启用状态,0表示禁用,1表示启用
|
||||
/// </summary>
|
||||
public int enable;
|
||||
/// <summary>
|
||||
/// 起始点X坐标
|
||||
/// </summary>
|
||||
public int sta_x;
|
||||
/// <summary>
|
||||
/// 起始点Y坐标
|
||||
/// </summary>
|
||||
public int sta_y;
|
||||
/// <summary>
|
||||
/// 结束点X坐标
|
||||
/// </summary>
|
||||
public int end_x;
|
||||
/// <summary>
|
||||
/// 结束点Y坐标
|
||||
/// </summary>
|
||||
public int end_y;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 图像位置结构体
|
||||
/// </summary>
|
||||
public struct ImagePos
|
||||
{
|
||||
/// <summary>
|
||||
/// 区域位置数组,最多支持6个区域
|
||||
/// </summary>
|
||||
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
|
||||
public AreaPos[] area;
|
||||
/// <summary>
|
||||
/// 点位置数组,最多支持6个点
|
||||
/// </summary>
|
||||
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
|
||||
public SpotPos[] spot;
|
||||
/// <summary>
|
||||
/// 线位置
|
||||
/// </summary>
|
||||
public LinePos line;
|
||||
}
|
||||
|
||||
// 温度相关结构体
|
||||
/// <summary>
|
||||
/// 区域温度结构体
|
||||
/// </summary>
|
||||
public struct AreaTemp
|
||||
{
|
||||
/// <summary>
|
||||
/// 启用状态,0表示禁用,1表示启用
|
||||
/// </summary>
|
||||
public int enable;
|
||||
/// <summary>
|
||||
/// 最高温度值
|
||||
/// </summary>
|
||||
public int max_temp;
|
||||
/// <summary>
|
||||
/// 最高温度点的X坐标
|
||||
/// </summary>
|
||||
public int max_temp_x;
|
||||
/// <summary>
|
||||
/// 最高温度点的Y坐标
|
||||
/// </summary>
|
||||
public int max_temp_y;
|
||||
/// <summary>
|
||||
/// 最低温度值
|
||||
/// </summary>
|
||||
public int min_temp;
|
||||
/// <summary>
|
||||
/// 最低温度点的X坐标
|
||||
/// </summary>
|
||||
public int min_temp_x;
|
||||
/// <summary>
|
||||
/// 最低温度点的Y坐标
|
||||
/// </summary>
|
||||
public int min_temp_y;
|
||||
/// <summary>
|
||||
/// 平均温度值
|
||||
/// </summary>
|
||||
public int ave_temp;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 点温度结构体
|
||||
/// </summary>
|
||||
public struct SpotTemp
|
||||
{
|
||||
/// <summary>
|
||||
/// 启用状态,0表示禁用,1表示启用
|
||||
/// </summary>
|
||||
public int enable;
|
||||
/// <summary>
|
||||
/// 温度值
|
||||
/// </summary>
|
||||
public int temp;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 线温度结构体
|
||||
/// </summary>
|
||||
public struct LineTemp
|
||||
{
|
||||
/// <summary>
|
||||
/// 启用状态,0表示禁用,1表示启用
|
||||
/// </summary>
|
||||
public int enable;
|
||||
/// <summary>
|
||||
/// 最高温度值
|
||||
/// </summary>
|
||||
public int max_temp;
|
||||
/// <summary>
|
||||
/// 最高温度点的X坐标
|
||||
/// </summary>
|
||||
public int max_temp_x;
|
||||
/// <summary>
|
||||
/// 最高温度点的Y坐标
|
||||
/// </summary>
|
||||
public int max_temp_y;
|
||||
/// <summary>
|
||||
/// 最低温度值
|
||||
/// </summary>
|
||||
public int min_temp;
|
||||
/// <summary>
|
||||
/// 最低温度点的X坐标
|
||||
/// </summary>
|
||||
public int min_temp_x;
|
||||
/// <summary>
|
||||
/// 最低温度点的Y坐标
|
||||
/// </summary>
|
||||
public int min_temp_y;
|
||||
/// <summary>
|
||||
/// 平均温度值
|
||||
/// </summary>
|
||||
public int ave_temp;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 全局温度结构体
|
||||
/// </summary>
|
||||
public struct GlobaTemp
|
||||
{
|
||||
/// <summary>
|
||||
/// 最高温度值
|
||||
/// </summary>
|
||||
public int max_temp;
|
||||
/// <summary>
|
||||
/// 最高温度点的X坐标
|
||||
/// </summary>
|
||||
public int max_temp_x;
|
||||
/// <summary>
|
||||
/// 最高温度点的Y坐标
|
||||
/// </summary>
|
||||
public int max_temp_y;
|
||||
/// <summary>
|
||||
/// 最低温度值
|
||||
/// </summary>
|
||||
public int min_temp;
|
||||
/// <summary>
|
||||
/// 最低温度点的X坐标
|
||||
/// </summary>
|
||||
public int min_temp_x;
|
||||
/// <summary>
|
||||
/// 最低温度点的Y坐标
|
||||
/// </summary>
|
||||
public int min_temp_y;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 图像温度结构体
|
||||
/// </summary>
|
||||
public struct ImageTemp
|
||||
{
|
||||
/// <summary>
|
||||
/// 区域温度数组,最多支持6个区域
|
||||
/// </summary>
|
||||
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
|
||||
public AreaTemp[] area;
|
||||
/// <summary>
|
||||
/// 点温度数组,最多支持6个点
|
||||
/// </summary>
|
||||
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
|
||||
public SpotTemp[] spot;
|
||||
/// <summary>
|
||||
/// 线温度
|
||||
/// </summary>
|
||||
public LineTemp line;
|
||||
/// <summary>
|
||||
/// 全局温度
|
||||
/// </summary>
|
||||
public GlobaTemp globa;
|
||||
}
|
||||
|
||||
// 配置相关结构体
|
||||
/// <summary>
|
||||
/// 邮件服务器配置结构体
|
||||
/// </summary>
|
||||
public struct EmailServer
|
||||
{
|
||||
/// <summary>
|
||||
/// 启用状态,0表示禁用,1表示启用
|
||||
/// </summary>
|
||||
public int enable;
|
||||
/// <summary>
|
||||
/// 收件人邮箱地址
|
||||
/// </summary>
|
||||
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
|
||||
public char[] recv_addr;
|
||||
/// <summary>
|
||||
/// 发件人邮箱地址
|
||||
/// </summary>
|
||||
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
|
||||
public char[] send_addr;
|
||||
/// <summary>
|
||||
/// 发件人邮箱密码
|
||||
/// </summary>
|
||||
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
|
||||
public char[] send_pwd;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// TFTP服务器配置结构体
|
||||
/// </summary>
|
||||
public struct TftpServer
|
||||
{
|
||||
/// <summary>
|
||||
/// 启用状态,0表示禁用,1表示启用
|
||||
/// </summary>
|
||||
public int enable;
|
||||
/// <summary>
|
||||
/// TFTP服务器地址
|
||||
/// </summary>
|
||||
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
|
||||
public char[] tftp_addr;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 网络以太网配置结构体
|
||||
/// </summary>
|
||||
public struct NetworkEth
|
||||
{
|
||||
/// <summary>
|
||||
/// 启用状态,0表示禁用,1表示启用
|
||||
/// </summary>
|
||||
public int enable;
|
||||
/// <summary>
|
||||
/// 静态IP地址
|
||||
/// </summary>
|
||||
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
|
||||
public char[] static_ip;
|
||||
/// <summary>
|
||||
/// 子网掩码
|
||||
/// </summary>
|
||||
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
|
||||
public char[] netmask;
|
||||
/// <summary>
|
||||
/// 默认网关
|
||||
/// </summary>
|
||||
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
|
||||
public char[] gateway;
|
||||
/// <summary>
|
||||
/// 主DNS服务器地址
|
||||
/// </summary>
|
||||
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
|
||||
public char[] dns1;
|
||||
/// <summary>
|
||||
/// 备DNS服务器地址
|
||||
/// </summary>
|
||||
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
|
||||
public char[] dns2;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 环境参数结构体
|
||||
/// </summary>
|
||||
public struct EnvirParam
|
||||
{
|
||||
/// <summary>
|
||||
/// 计算方法
|
||||
/// </summary>
|
||||
public int method;
|
||||
/// <summary>
|
||||
/// 参数编号
|
||||
/// </summary>
|
||||
public int num;
|
||||
/// <summary>
|
||||
/// 发射率
|
||||
/// </summary>
|
||||
public float emissivity;
|
||||
/// <summary>
|
||||
/// 环境温度
|
||||
/// </summary>
|
||||
public float airTemp;
|
||||
/// <summary>
|
||||
/// 目标温度
|
||||
/// </summary>
|
||||
public float targetTemp;
|
||||
/// <summary>
|
||||
/// 大气透过率
|
||||
/// </summary>
|
||||
public float atmosTrans;
|
||||
/// <summary>
|
||||
/// 测量距离
|
||||
/// </summary>
|
||||
public float distance;
|
||||
/// <summary>
|
||||
/// 红外温度
|
||||
/// </summary>
|
||||
public float infraredTemp;
|
||||
/// <summary>
|
||||
/// 红外辐射率
|
||||
/// </summary>
|
||||
public float infraredRadia;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 报警参数结构体
|
||||
/// </summary>
|
||||
public struct AlarmParam
|
||||
{
|
||||
/// <summary>
|
||||
/// 报警方法
|
||||
/// </summary>
|
||||
public int method;
|
||||
/// <summary>
|
||||
/// 参数编号
|
||||
/// </summary>
|
||||
public int num;
|
||||
/// <summary>
|
||||
/// 激活状态
|
||||
/// </summary>
|
||||
public int active;
|
||||
/// <summary>
|
||||
/// 报警条件
|
||||
/// </summary>
|
||||
public int condition;
|
||||
/// <summary>
|
||||
/// 截图功能
|
||||
/// </summary>
|
||||
public int captrue;
|
||||
/// <summary>
|
||||
/// 禁用校准
|
||||
/// </summary>
|
||||
public int disableCalib;
|
||||
/// <summary>
|
||||
/// 邮件报警
|
||||
/// </summary>
|
||||
public int email;
|
||||
/// <summary>
|
||||
/// 数字输出
|
||||
/// </summary>
|
||||
public int digital;
|
||||
/// <summary>
|
||||
/// FTP上传
|
||||
/// </summary>
|
||||
public int ftp;
|
||||
/// <summary>
|
||||
/// 报警阈值
|
||||
/// </summary>
|
||||
public float threshold;
|
||||
/// <summary>
|
||||
/// 滞后值
|
||||
/// </summary>
|
||||
public float hysteresis;
|
||||
/// <summary>
|
||||
/// 阈值时间
|
||||
/// </summary>
|
||||
public int thresholeTime;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 焦距参数结构体
|
||||
/// </summary>
|
||||
public struct FocusParam
|
||||
{
|
||||
/// <summary>
|
||||
/// 对焦方法
|
||||
/// </summary>
|
||||
public int method;
|
||||
/// <summary>
|
||||
/// 对焦区域X坐标
|
||||
/// </summary>
|
||||
public int x;
|
||||
/// <summary>
|
||||
/// 对焦区域Y坐标
|
||||
/// </summary>
|
||||
public int y;
|
||||
/// <summary>
|
||||
/// 对焦区域宽度
|
||||
/// </summary>
|
||||
public int width;
|
||||
/// <summary>
|
||||
/// 对焦区域高度
|
||||
/// </summary>
|
||||
public int height;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 时间参数结构体
|
||||
/// </summary>
|
||||
public struct TimeParam
|
||||
{
|
||||
/// <summary>
|
||||
/// 年份
|
||||
/// </summary>
|
||||
public int year;
|
||||
/// <summary>
|
||||
/// 月份
|
||||
/// </summary>
|
||||
public char month;
|
||||
/// <summary>
|
||||
/// 日期
|
||||
/// </summary>
|
||||
public char day;
|
||||
/// <summary>
|
||||
/// 小时
|
||||
/// </summary>
|
||||
public char hour;
|
||||
/// <summary>
|
||||
/// 分钟
|
||||
/// </summary>
|
||||
public char minute;
|
||||
/// <summary>
|
||||
/// 秒
|
||||
/// </summary>
|
||||
public char second;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -75,9 +75,34 @@ namespace JoyD.Windows.CS.Toprie
|
||||
/// </summary>
|
||||
public class ZoneTemperatureData
|
||||
{
|
||||
/// <summary>
|
||||
/// 区域ID
|
||||
/// </summary>
|
||||
public int AreaId { get; set; }
|
||||
/// <summary>
|
||||
/// 点ID
|
||||
/// </summary>
|
||||
public int SpotId { get; set; }
|
||||
/// <summary>
|
||||
/// 区域温度
|
||||
/// </summary>
|
||||
public float Temperature { get; set; }
|
||||
/// <summary>
|
||||
/// 区域最低温度
|
||||
/// </summary>
|
||||
public float MinTemperature { get; set; }
|
||||
/// <summary>
|
||||
/// 区域最高温度
|
||||
/// </summary>
|
||||
public float MaxTemperature { get; set; }
|
||||
/// <summary>
|
||||
/// 区域平均温度
|
||||
/// </summary>
|
||||
public float AverageTemperature { get; set; }
|
||||
/// <summary>
|
||||
/// 区域类型
|
||||
/// </summary>
|
||||
public int AreaType { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -267,10 +267,25 @@ namespace JoyD.Windows.CS.Toprie
|
||||
/// </summary>
|
||||
public enum RequestResult
|
||||
{
|
||||
/// <summary>
|
||||
/// 请求成功
|
||||
/// </summary>
|
||||
Success,
|
||||
/// <summary>
|
||||
/// 请求超时
|
||||
/// </summary>
|
||||
Timeout,
|
||||
/// <summary>
|
||||
/// 网络错误
|
||||
/// </summary>
|
||||
NetworkError,
|
||||
/// <summary>
|
||||
/// 处理错误
|
||||
/// </summary>
|
||||
ProcessingError,
|
||||
/// <summary>
|
||||
/// 无效响应
|
||||
/// </summary>
|
||||
InvalidResponse
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
{
|
||||
/// <summary>
|
||||
/// V8热成像设备SDK封装类
|
||||
/// </summary>
|
||||
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<string, V8> deviceInstances = new Dictionary<string, V8>();
|
||||
|
||||
/// <summary>
|
||||
/// V8类构造函数
|
||||
/// </summary>
|
||||
/// <param name="ip">设备IP地址</param>
|
||||
public V8(string ip)
|
||||
{
|
||||
deviceIp = ip;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// V8类析构函数
|
||||
/// </summary>
|
||||
~V8()
|
||||
{
|
||||
Disconnect();
|
||||
@@ -279,6 +281,10 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
|
||||
// SDK核心功能实现 - 不使用DllImport
|
||||
/// <summary>
|
||||
/// 初始化SDK
|
||||
/// </summary>
|
||||
/// <returns>0表示成功,-1表示失败</returns>
|
||||
public static int SDK_initialize()
|
||||
{
|
||||
try
|
||||
@@ -299,6 +305,10 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 销毁SDK资源
|
||||
/// </summary>
|
||||
/// <returns>0表示成功,-1表示失败</returns>
|
||||
public static int SDK_destroy()
|
||||
{
|
||||
try
|
||||
@@ -323,6 +333,11 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 搜索设备
|
||||
/// </summary>
|
||||
/// <param name="list_len">设备列表长度(未使用)</param>
|
||||
/// <returns>设备列表字符串</returns>
|
||||
public static string SDK_serch_device(int list_len)
|
||||
{
|
||||
try
|
||||
@@ -408,6 +423,9 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 执行快门校正
|
||||
/// </summary>
|
||||
public void Shutter_correction()
|
||||
{
|
||||
try
|
||||
@@ -430,6 +448,9 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取快门校正次数
|
||||
/// </summary>
|
||||
public int Shutter_times
|
||||
{
|
||||
get
|
||||
@@ -688,6 +709,9 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
|
||||
// 保留原属性以保持向后兼容性
|
||||
/// <summary>
|
||||
/// 获取或设置色彩板模式
|
||||
/// </summary>
|
||||
public int Color_plate
|
||||
{
|
||||
get => GetColorPlate();
|
||||
@@ -724,6 +748,9 @@ namespace JoyD.Windows.CS.Toprie
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置镜像模式
|
||||
/// </summary>
|
||||
public int Mirror_mode
|
||||
{
|
||||
get
|
||||
@@ -965,12 +992,20 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
|
||||
// 保留原属性以保持向后兼容性
|
||||
/// <summary>
|
||||
/// 获取或设置视频模式
|
||||
/// </summary>
|
||||
public int Video_mode
|
||||
{
|
||||
get => GetVideoModeInternal();
|
||||
set => SetVideoModeInternal(value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设置区域位置
|
||||
/// </summary>
|
||||
/// <param name="index">区域索引</param>
|
||||
/// <param name="area_data">区域位置数据</param>
|
||||
public void Set_area_pos(int index, SharedStructures.AreaPos area_data)
|
||||
{
|
||||
try
|
||||
@@ -986,6 +1021,11 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取区域位置
|
||||
/// </summary>
|
||||
/// <param name="index">区域索引</param>
|
||||
/// <returns>区域位置数据</returns>
|
||||
public SharedStructures.AreaPos Get_area_pos(int index)
|
||||
{
|
||||
try
|
||||
@@ -1021,6 +1061,11 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设置点位置
|
||||
/// </summary>
|
||||
/// <param name="index">点索引</param>
|
||||
/// <param name="spot_data">点位置数据</param>
|
||||
public void Set_spot_pos(int index, SharedStructures.SpotPos spot_data)
|
||||
{
|
||||
try
|
||||
@@ -1036,6 +1081,11 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取点位置
|
||||
/// </summary>
|
||||
/// <param name="index">点索引</param>
|
||||
/// <returns>点位置数据</returns>
|
||||
public SharedStructures.SpotPos Get_spot_pos(int index)
|
||||
{
|
||||
try
|
||||
@@ -1069,6 +1119,9 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置线位置
|
||||
/// </summary>
|
||||
public SharedStructures.LinePos Line_pos
|
||||
{
|
||||
set
|
||||
@@ -1121,6 +1174,9 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取所有位置信息
|
||||
/// </summary>
|
||||
public SharedStructures.ImagePos All_pos
|
||||
{
|
||||
get
|
||||
@@ -1152,6 +1208,9 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置温度范围
|
||||
/// </summary>
|
||||
public int Temp_range
|
||||
{
|
||||
set
|
||||
@@ -1196,6 +1255,9 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置视频ISP X偏移
|
||||
/// </summary>
|
||||
public int Video_isp_x_offset
|
||||
{
|
||||
set
|
||||
@@ -1240,6 +1302,9 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置视频ISP Y偏移
|
||||
/// </summary>
|
||||
public int Video_isp_y_offset
|
||||
{
|
||||
set
|
||||
@@ -1284,6 +1349,9 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置视频ISP X缩放
|
||||
/// </summary>
|
||||
public int Video_isp_x_scale
|
||||
{
|
||||
set
|
||||
@@ -1328,6 +1396,9 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置视频ISP Y缩放
|
||||
/// </summary>
|
||||
public int Video_isp_y_scale
|
||||
{
|
||||
set
|
||||
@@ -1372,6 +1443,9 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置LED状态
|
||||
/// </summary>
|
||||
public int Set_led
|
||||
{
|
||||
set
|
||||
@@ -1416,6 +1490,9 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置邮件服务器配置
|
||||
/// </summary>
|
||||
public SharedStructures.EmailServer Email_server
|
||||
{
|
||||
set
|
||||
@@ -1466,6 +1543,9 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置TFTP服务器配置
|
||||
/// </summary>
|
||||
public SharedStructures.TftpServer Tftp_server
|
||||
{
|
||||
set
|
||||
@@ -1515,6 +1595,9 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置网络配置
|
||||
/// </summary>
|
||||
public SharedStructures.NetworkEth Network_eth
|
||||
{
|
||||
set
|
||||
@@ -1564,6 +1647,9 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置融合距离
|
||||
/// </summary>
|
||||
public int Fusion_distance
|
||||
{
|
||||
set
|
||||
@@ -1608,6 +1694,10 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设置环境参数
|
||||
/// </summary>
|
||||
/// <param name="data">环境参数</param>
|
||||
public void Set_envir_param(SharedStructures.EnvirParam data)
|
||||
{
|
||||
try
|
||||
@@ -1632,6 +1722,11 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取区域环境参数
|
||||
/// </summary>
|
||||
/// <param name="index">区域索引</param>
|
||||
/// <returns>环境参数</returns>
|
||||
public SharedStructures.EnvirParam Get_area_envir_param(int index)
|
||||
{
|
||||
try
|
||||
@@ -1656,6 +1751,11 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取点环境参数
|
||||
/// </summary>
|
||||
/// <param name="index">点索引</param>
|
||||
/// <returns>环境参数</returns>
|
||||
public SharedStructures.EnvirParam Get_spot_envir_param(int index)
|
||||
{
|
||||
try
|
||||
@@ -1680,6 +1780,10 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取线环境参数
|
||||
/// </summary>
|
||||
/// <returns>环境参数</returns>
|
||||
public SharedStructures.EnvirParam Get_line_envir_param()
|
||||
{
|
||||
try
|
||||
@@ -1704,6 +1808,10 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取全局环境参数
|
||||
/// </summary>
|
||||
/// <returns>环境参数</returns>
|
||||
public SharedStructures.EnvirParam Get_globa_envir_param()
|
||||
{
|
||||
try
|
||||
@@ -1728,6 +1836,10 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设置报警参数
|
||||
/// </summary>
|
||||
/// <param name="data">报警参数</param>
|
||||
public void Set_alarm_param(SharedStructures.AlarmParam data)
|
||||
{
|
||||
try
|
||||
@@ -1750,6 +1862,11 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取区域报警参数
|
||||
/// </summary>
|
||||
/// <param name="index">区域索引</param>
|
||||
/// <returns>报警参数</returns>
|
||||
public SharedStructures.AlarmParam Get_area_alarm_param(int index)
|
||||
{
|
||||
try
|
||||
@@ -1773,6 +1890,11 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取点报警参数
|
||||
/// </summary>
|
||||
/// <param name="index">点索引</param>
|
||||
/// <returns>报警参数</returns>
|
||||
public SharedStructures.AlarmParam Get_spot_alarm_param(int index)
|
||||
{
|
||||
try
|
||||
@@ -1797,6 +1919,10 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取全局报警参数
|
||||
/// </summary>
|
||||
/// <returns>报警参数</returns>
|
||||
public SharedStructures.AlarmParam Get_globa_alarm_param()
|
||||
{
|
||||
try
|
||||
@@ -1821,6 +1947,10 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取线报警参数
|
||||
/// </summary>
|
||||
/// <returns>报警参数</returns>
|
||||
public SharedStructures.AlarmParam Get_line_alarm_param()
|
||||
{
|
||||
try
|
||||
@@ -1845,6 +1975,11 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取区域温度
|
||||
/// </summary>
|
||||
/// <param name="index">区域索引</param>
|
||||
/// <returns>区域温度数据</returns>
|
||||
public SharedStructures.AreaTemp Get_area_temp(int index)
|
||||
{
|
||||
try
|
||||
@@ -1869,6 +2004,11 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取点温度
|
||||
/// </summary>
|
||||
/// <param name="index">点索引</param>
|
||||
/// <returns>点温度数据</returns>
|
||||
public SharedStructures.SpotTemp Get_spot_temp(int index)
|
||||
{
|
||||
try
|
||||
@@ -1893,6 +2033,10 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取线温度
|
||||
/// </summary>
|
||||
/// <returns>线温度数据</returns>
|
||||
public SharedStructures.LineTemp Get_line_temp()
|
||||
{
|
||||
try
|
||||
@@ -1917,6 +2061,10 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取全局温度
|
||||
/// </summary>
|
||||
/// <returns>全局温度数据</returns>
|
||||
public SharedStructures.GlobaTemp Get_globa_temp()
|
||||
{
|
||||
try
|
||||
@@ -1941,6 +2089,10 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取所有温度数据
|
||||
/// </summary>
|
||||
/// <returns>图像温度数据</returns>
|
||||
public SharedStructures.ImageTemp Get_all_temp()
|
||||
{
|
||||
try
|
||||
@@ -1965,6 +2117,9 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设备重启
|
||||
/// </summary>
|
||||
public void Power_reboot()
|
||||
{
|
||||
try
|
||||
@@ -1987,6 +2142,9 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 恢复默认参数
|
||||
/// </summary>
|
||||
public void Param_recover()
|
||||
{
|
||||
try
|
||||
@@ -2009,6 +2167,9 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设备固件更新
|
||||
/// </summary>
|
||||
public void Update()
|
||||
{
|
||||
try
|
||||
@@ -2032,6 +2193,10 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
|
||||
// 使用SendCommand方法发送心跳命令,与SDK保持一致
|
||||
/// <summary>
|
||||
/// 发送心跳命令
|
||||
/// </summary>
|
||||
/// <returns>心跳响应值</returns>
|
||||
public int Heartbeat()
|
||||
{
|
||||
try
|
||||
@@ -2076,6 +2241,13 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设置串口参数
|
||||
/// </summary>
|
||||
/// <param name="nSpeed">波特率</param>
|
||||
/// <param name="nBits">数据位</param>
|
||||
/// <param name="nEvent">校验位</param>
|
||||
/// <param name="nStop">停止位</param>
|
||||
public void Set_uart(int nSpeed, int nBits, char nEvent, int nStop)
|
||||
{
|
||||
try
|
||||
@@ -2098,6 +2270,10 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 发送串口命令
|
||||
/// </summary>
|
||||
/// <param name="cmd">命令字节数组</param>
|
||||
public void Send_uart_command(byte[] cmd)
|
||||
{
|
||||
try
|
||||
@@ -2115,6 +2291,10 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 自动对焦
|
||||
/// </summary>
|
||||
/// <param name="data">对焦参数</param>
|
||||
public void Autofocus(SharedStructures.FocusParam data)
|
||||
{
|
||||
try
|
||||
@@ -2137,6 +2317,10 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设置设备名称
|
||||
/// </summary>
|
||||
/// <param name="data">设备名称</param>
|
||||
public void Set_device_name(string data)
|
||||
{
|
||||
try
|
||||
@@ -2159,6 +2343,10 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取设备名称
|
||||
/// </summary>
|
||||
/// <returns>设备名称</returns>
|
||||
public string Get_device_name()
|
||||
{
|
||||
try
|
||||
@@ -2191,6 +2379,10 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取检测编号
|
||||
/// </summary>
|
||||
/// <returns>检测编号字节数组</returns>
|
||||
public byte[] Get_detect_number()
|
||||
{
|
||||
try
|
||||
@@ -2226,6 +2418,9 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置温度帧
|
||||
/// </summary>
|
||||
public char Temp_frame
|
||||
{
|
||||
set
|
||||
@@ -2277,6 +2472,9 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置报警输出
|
||||
/// </summary>
|
||||
public char Alarm
|
||||
{
|
||||
set
|
||||
@@ -2331,6 +2529,9 @@ namespace JoyD.Windows.CS.Toprie
|
||||
// 私有字段,用于存储最后一次成功获取的温补值
|
||||
private int _lastSuccessfulCompTemp = 0;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置温补值
|
||||
/// </summary>
|
||||
public int Comp_temp
|
||||
{
|
||||
get
|
||||
@@ -2373,6 +2574,10 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设置系统时间
|
||||
/// </summary>
|
||||
/// <param name="data">时间参数</param>
|
||||
public void Set_time(SharedStructures.TimeParam data)
|
||||
{
|
||||
try
|
||||
@@ -2395,18 +2600,30 @@ namespace JoyD.Windows.CS.Toprie
|
||||
}
|
||||
}
|
||||
// 获取视频模式
|
||||
/// <summary>
|
||||
/// 获取视频模式
|
||||
/// </summary>
|
||||
/// <returns>视频模式值</returns>
|
||||
public int GetVideoMode()
|
||||
{
|
||||
return GetVideoModeInternal();
|
||||
}
|
||||
|
||||
// 设置视频模式
|
||||
/// <summary>
|
||||
/// 设置视频模式
|
||||
/// </summary>
|
||||
/// <param name="mode">视频模式值</param>
|
||||
public void SetVideoMode(int mode)
|
||||
{
|
||||
SetVideoModeInternal(mode);
|
||||
}
|
||||
|
||||
// 新增方法:获取图像数据
|
||||
/// <summary>
|
||||
/// 获取图像数据
|
||||
/// </summary>
|
||||
/// <returns>图像数据字节数组</returns>
|
||||
public byte[] GetImageData()
|
||||
{
|
||||
try
|
||||
|
||||
@@ -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 "
|
||||
发布过程完成"
|
||||
发布过程完成"
|
||||
|
||||
Reference in New Issue
Block a user