diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/A8SDK.cs b/Windows/CS/Framework4.0/Toprie/Toprie/A8SDK.cs index df57999..b1e718f 100644 --- a/Windows/CS/Framework4.0/Toprie/Toprie/A8SDK.cs +++ b/Windows/CS/Framework4.0/Toprie/Toprie/A8SDK.cs @@ -646,12 +646,6 @@ namespace JoyD.Windows.CS.Toprie v8Instance.Set_time(data); } - // 设置图像模式 - public void SetImageMode(int mode) - { - v8Instance.SetImageMode(mode); - } - // 获取视频模式 public int GetVideoMode() { diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/Camera.cs b/Windows/CS/Framework4.0/Toprie/Toprie/Camera.cs index 42cd53c..1e6c7a2 100644 --- a/Windows/CS/Framework4.0/Toprie/Toprie/Camera.cs +++ b/Windows/CS/Framework4.0/Toprie/Toprie/Camera.cs @@ -131,16 +131,6 @@ namespace JoyD.Windows.CS.Toprie { // 设置为热图模式 bool modeSet = false; - try - { - _deviceManager.SetImageMode(ImageMode.Thermal); - modeSet = true; - Console.WriteLine("已设置热图模式"); - } - catch (Exception ex) - { - Console.WriteLine($"设置热图模式失败: {ex.Message}"); - } // 启用自动重连 _deviceManager.AutoReconnectEnabled = true; @@ -155,7 +145,7 @@ namespace JoyD.Windows.CS.Toprie { try { - _deviceManager.SetImageMode(ImageMode.Thermal); + _deviceManager.SetImageMode(ImageMode.Infrared); Console.WriteLine("连接后已设置热图模式"); } catch (Exception ex) @@ -680,7 +670,7 @@ namespace JoyD.Windows.CS.Toprie { try { - _deviceManager.SetImageMode(ImageMode.Thermal); + _deviceManager.SetImageMode(ImageMode.Infrared); Console.WriteLine("首次连接,设置热图模式"); } catch (Exception ex) diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/DeviceManager.cs b/Windows/CS/Framework4.0/Toprie/Toprie/DeviceManager.cs index 8cd3403..0decf21 100644 --- a/Windows/CS/Framework4.0/Toprie/Toprie/DeviceManager.cs +++ b/Windows/CS/Framework4.0/Toprie/Toprie/DeviceManager.cs @@ -27,14 +27,15 @@ namespace JoyD.Windows.CS.Toprie Reconnecting } + + /// /// 图像模式枚举 /// public enum ImageMode { - Thermal, - Visible, - Fusion + Infrared, // 红外模式 + Natural // 自然模式 } /// @@ -175,7 +176,7 @@ namespace JoyD.Windows.CS.Toprie // 是否已释放 private bool _isDisposed = false; // 图像模式 - private ImageMode _currentImageMode = ImageMode.Thermal; + private ImageMode _currentImageMode = ImageMode.Infrared; // 当前色彩模式 private PaletteType _currentPaletteType = PaletteType.WhiteHot; // 当前视频模式 @@ -1425,11 +1426,6 @@ namespace JoyD.Windows.CS.Toprie if (_currentImageMode != value) { _currentImageMode = value; - // 如果已连接,发送模式变更命令 - if (_connectionStatus == ConnectionStatus.Connected) - { - SendModeChangeCommand(value); - } } } } @@ -2618,95 +2614,6 @@ namespace JoyD.Windows.CS.Toprie } } - /// - /// 发送模式切换命令 - /// - /// 图像模式 - private bool SendModeChangeCommand(ImageMode mode) - { - // 使用相同的线程锁保护SDK操作 - lock (_sdkOperationLock) - { - // 最大重试次数 - const int maxRetries = 3; - // 重试间隔(毫秒) - const int retryDelayMs = 100; - - for (int attempt = 0; attempt < maxRetries; attempt++) - { - try - { - // 检查对象状态和连接状态 - if (_a8Sdk == null || _connectionStatus != ConnectionStatus.Connected) - { - Log($"图像模式切换失败: {(attempt > 0 ? "重试中" : "")}SDK实例为空或设备未连接"); - Thread.Sleep(retryDelayMs); - continue; - } - - // 将ImageMode枚举转换为int类型 - _a8Sdk.SetImageMode((int)mode); - - // 短暂延迟,确保设置生效 - Thread.Sleep(50); - - // 简单验证:尝试读取一个基本属性确认SDK仍在正常工作 - try - { - // 使用一个简单的只读操作验证SDK状态 - int testValue = _a8Sdk.Color_plate; // 使用Color_plate作为验证点 - Log($"读取色彩模式值用于验证: {testValue}"); - Log($"图像模式 {mode} 切换成功 (尝试 {attempt + 1}/{maxRetries})"); - return true; - } - catch (Exception verifyEx) - { - // 验证失败,记录日志并准备重试 - Log($"图像模式切换验证失败 (尝试 {attempt + 1}/{maxRetries}): {verifyEx.Message}"); - - // 重试前等待 - Thread.Sleep(retryDelayMs); - continue; - } - } - catch (Exception ex) - { - Log($"切换图像模式异常 (尝试 {attempt + 1}/{maxRetries}): {ex.Message}"); - - // 增加SDK状态检查,判断是否真的需要触发连接异常 - try - { - // 简单的SDK状态检查 - if (_a8Sdk != null) - { - // 只读操作,确认SDK仍在响应 - int testValue = _a8Sdk.Color_plate; - Log($"SDK状态检查: 读取色彩模式值 = {testValue}"); - } - } - catch (Exception checkEx) - { - Log($"SDK状态检查失败: {checkEx.Message}"); - - // 只有在最后一次尝试且确认SDK状态异常时,才触发连接异常 - if (attempt == maxRetries - 1) - { - Log("所有尝试失败且SDK状态异常,触发连接异常事件"); - OnConnectionException(new ConnectionExceptionEventArgs(checkEx, "图像模式切换导致SDK状态异常")); - } - } - - // 重试前等待 - Thread.Sleep(retryDelayMs); - } - } - - // 所有尝试都失败 - Log($"图像模式切换最终失败: 已尝试{maxRetries}次"); - return false; - } - } - /// /// 开始接收图像(已弃用,使用HTTP方式替代) /// diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/V8.cs b/Windows/CS/Framework4.0/Toprie/Toprie/V8.cs index 3d50950..01d0bdc 100644 --- a/Windows/CS/Framework4.0/Toprie/Toprie/V8.cs +++ b/Windows/CS/Framework4.0/Toprie/Toprie/V8.cs @@ -2383,30 +2383,6 @@ namespace JoyD.Windows.CS.Toprie Console.WriteLine($"设置系统时间失败: {ex.Message}"); } } - - // 新增方法:设置图像模式 - public void SetImageMode(int mode) - { - try - { - // 使用SET_IMAGE_MODE命令设置图像模式 - SDK格式 - string command = $"{CMD_HEAD}:{(int)CMD_TYPE.SET_IMAGE_MODE},{mode}$"; - - if (SendCommand(command, out string response)) - { - // 验证响应是否成功 - if (response != null) - { - Console.WriteLine($"设置图像模式为: {mode}"); - } - } - } - catch (Exception ex) - { - Console.WriteLine($"设置图像模式失败: {ex.Message}"); - } - } - // 获取视频模式 public int GetVideoMode() {