From bf32d21bd811d2d2b36ff9ca9e6fff620079af6a Mon Sep 17 00:00:00 2001
From: C3032 <C3032@BC3032>
Date: 星期二, 23 十二月 2025 16:18:01 +0800
Subject: [PATCH] 删除重复的HRCamera 类的所有实现代码

---
 /dev/null | 1136 -----------------------------------------------------------
 1 files changed, 0 insertions(+), 1,136 deletions(-)

diff --git a/LB_VisionProcesses/Cameras/HRCamera.cs b/LB_VisionProcesses/Cameras/HRCamera.cs
deleted file mode 100644
index f707aca..0000000
--- a/LB_VisionProcesses/Cameras/HRCamera.cs
+++ /dev/null
@@ -1,1136 +0,0 @@
-锘縰sing MVSDK_Net;
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Drawing;
-using System.Drawing.Imaging;
-using System.Linq;
-using System.Runtime.InteropServices;
-using System.Threading;
-using System.Windows.Forms;
-
-namespace LB_VisionProcesses.Cameras
-{
-    /// <summary>
-    /// 鍗庣澘2D宸ヤ笟鐩告満瀹炵幇绫�
-    /// 鍩轰簬MVSDK_Net SDK灏佽
-    /// </summary>
-    public class HRCamera : BaseCamera
-    {
-        #region 绉佹湁瀛楁
-        
-        private MyCamera _camera; // 鍗庣澘鐩告満璁惧瀵硅薄
-        private Thread _grabThread; // 鍥惧儚閲囬泦绾跨▼
-        private bool _isGrabbing; // 閲囬泦鐘舵�佹爣蹇�
-        private bool _threadRunning; // 绾跨▼杩愯鏍囧織
-        private bool _handleCreated = false; // 鍙ユ焺鏄惁宸插垱寤�
-        private Thread _callbackThread; // 鍥炶皟澶勭悊绾跨▼
-        private List<IMVDefine.IMV_Frame> _frameList; // 鍥惧儚缂撳瓨鍒楄〃
-        private readonly object _frameLock = new object(); // 甯х紦瀛橀攣
-        
-        // CopyMemory API澹版槑
-        [System.Runtime.InteropServices.DllImport("kernel32.dll", EntryPoint = "RtlMoveMemory")]
-        private static extern void CopyMemory(IntPtr dest, IntPtr src, uint count);
-        
-        #endregion
-
-        #region 鏋勯�犲嚱鏁板拰鏋愭瀯鍑芥暟
-        
-        /// <summary>
-        /// 鏋勯�犲嚱鏁�
-        /// </summary>
-        public HRCamera()
-        {
-            _camera = new MyCamera();
-            _frameList = new List<IMVDefine.IMV_Frame>();
-            Brand = CameraBrand.HRCamera;
-            _isGrabbing = false;
-            _threadRunning = false;
-        }
-        
-        /// <summary>
-        /// 鏋愭瀯鍑芥暟
-        /// </summary>
-        ~HRCamera()
-        {
-            Dispose(false);
-        }
-        
-        #endregion
-
-        #region 璁惧绠$悊鎿嶄綔
-        
-        /// <summary>
-        /// 鑾峰彇鐩告満SN鏋氫妇鍒楄〃
-        /// </summary>
-        /// <returns>鐩告満SN鍒楄〃</returns>
-        public override List<string> GetListEnum()
-        {
-            List<string> cameraList = new List<string>();
-            
-            try
-            {
-                // 鏋氫妇鎵�鏈夎澶�
-                IMVDefine.IMV_DeviceList deviceList = new IMVDefine.IMV_DeviceList();
-                IMVDefine.IMV_EInterfaceType interfaceType = IMVDefine.IMV_EInterfaceType.interfaceTypeAll;
-                
-                int result = MyCamera.IMV_EnumDevices(ref deviceList, (uint)interfaceType);
-                
-                if (result == IMVDefine.IMV_OK && deviceList.nDevNum > 0)
-                {
-                    for (int i = 0; i < deviceList.nDevNum; i++)
-                    {
-                        IMVDefine.IMV_DeviceInfo deviceInfo = (IMVDefine.IMV_DeviceInfo)
-                            Marshal.PtrToStructure(
-                                deviceList.pDevInfo + Marshal.SizeOf(typeof(IMVDefine.IMV_DeviceInfo)) * i,
-                                typeof(IMVDefine.IMV_DeviceInfo));
-                        
-                        string cameraInfo = $"{deviceInfo.cameraName}[{deviceInfo.serialNumber}]";
-                        cameraList.Add(cameraInfo);
-                    }
-                }
-                else
-                {
-                    // 璁板綍鏃ュ織鎴栨姏鍑哄紓甯�
-                    //throw new Exception($"鏋氫妇璁惧澶辫触锛岄敊璇爜锛歿result}");
-                    Debug.WriteLine("鏋氫妇璁惧澶辫触锛�");
-                }
-            }
-            catch (Exception ex)
-            { 
-                // 璁板綍閿欒鏃ュ織
-                System.Diagnostics.Debug.WriteLine($"鑾峰彇鐩告満鍒楄〃澶辫触锛歿ex.Message}");
-                throw;
-            }
-            
-            return cameraList;
-        }
-        
-        /// <summary>
-        /// 鍒濆鍖栫浉鏈鸿澶�
-        /// </summary>
-        /// <param name="SN">鐩告満搴忓垪鍙�</param>
-        /// <param name="Handle">绐楀彛鍙ユ焺锛堝彲閫夛級</param>
-        /// <returns>鍒濆鍖栨槸鍚︽垚鍔�</returns>
-        public override bool InitDevice(string SN, object Handle = null)
-        {
-            try
-            {
-                // 纭繚褰诲簳鍏抽棴鍜屾竻鐞�
-                if (_camera != null)
-                {
-                    if (_camera.IMV_IsOpen())
-                    {
-                        _camera.IMV_Close();
-                    }
-                    
-                    if (_handleCreated)
-                    {
-                        _camera.IMV_DestroyHandle();
-                        _handleCreated = false;
-                    }
-                }
-                
-                // 鏋氫妇璁惧骞跺尮閰峉N
-                List<string> cameraList = GetListEnum();
-                int cameraIndex = -1;
-                
-                for (int i = 0; i < cameraList.Count; i++)
-                {
-                    if (cameraList[i].Contains(SN))
-                    {
-                        cameraIndex = i;
-                        break;
-                    }
-                }
-                
-                if (cameraIndex == -1)
-                {
-                    throw new Exception($"鏈壘鍒板簭鍒楀彿涓� {SN} 鐨勭浉鏈�");
-                }
-                
-                // 鍒涘缓璁惧鍙ユ焺
-                int result = _camera.IMV_CreateHandle(IMVDefine.IMV_ECreateHandleMode.modeByIndex, cameraIndex);
-                if (result != IMVDefine.IMV_OK)
-                {
-                    throw new Exception($"鍒涘缓璁惧鍙ユ焺澶辫触锛岄敊璇爜锛歿result}");
-                }
-                _handleCreated = true;
-                
-                // 鎵撳紑璁惧
-                result = _camera.IMV_Open();
-                if (result != IMVDefine.IMV_OK)
-                {
-                    throw new Exception($"鎵撳紑鐩告満澶辫触锛岄敊璇爜锛歿result}");
-                }
-                
-                // 璁剧疆璁惧灞炴��
-                this.SN = SN;
-                isGrabbing = false;
-                
-                // 璁剧疆缂撳瓨涓暟涓�8
-                _camera.IMV_SetBufferCount(8);
-                
-                return true;
-            }
-            catch (Exception ex)
-            {
-                System.Diagnostics.Debug.WriteLine($"鍒濆鍖栫浉鏈哄け璐ワ細{ex.Message}");
-                return false;
-            }
-        }
-        
-        /// <summary>
-        /// 鍏抽棴鐩告満璁惧
-        /// </summary>
-        /// <returns>鍏抽棴鏄惁鎴愬姛</returns>
-        public override bool CloseDevice()
-        {
-            try
-            {
-                if (_camera == null)
-                    return true;
-                
-                // 鍋滄閲囬泦
-                if (_camera.IMV_IsGrabbing())
-                {
-                    StopGrabbing();
-                }
-                
-                // 鍏抽棴璁惧
-                if (_camera.IMV_IsOpen())
-                {
-                    int result = _camera.IMV_Close();
-                    if (result != IMVDefine.IMV_OK)
-                    {
-                        System.Diagnostics.Debug.WriteLine($"鍏抽棴鐩告満澶辫触锛岄敊璇爜锛歿result}");
-                    }
-                }
-
-                // 閿�姣佸彞鏌�
-                if (_handleCreated)
-                {
-                    _camera.IMV_DestroyHandle();
-                    _handleCreated = false;
-                }
-                
-                // 閲婃斁璧勬簮
-                _isGrabbing = false;
-                isGrabbing = false;
-                
-                // 娓呯悊甯х紦瀛�
-                lock (_frameLock)
-                {
-                    foreach (var frame in _frameList)
-                    {
-                        var tempFrame = frame; // 鍒涘缓涓存椂鍙橀噺
-                        _camera.IMV_ReleaseFrame(ref tempFrame);
-                    }
-                    _frameList.Clear();
-                }
-                
-                return true;
-            }
-            catch (Exception ex)
-            {
-                System.Diagnostics.Debug.WriteLine($"鍏抽棴鐩告満澶辫触锛歿ex.Message}");
-                return false;
-            }
-        }
-        
-        #endregion
-
-        #region 鍥惧儚閲囬泦鎿嶄綔
-        
-        /// <summary>
-        /// 寮�濮嬪浘鍍忛噰闆�
-        /// </summary>
-        /// <returns>閲囬泦鍚姩鏄惁鎴愬姛</returns>
-        public override bool StartGrabbing()
-        {
-            try
-            {
-                if (_camera == null || !_camera.IMV_IsOpen())
-                {
-                    throw new Exception("鐩告満鏈墦寮�");
-                }
-                
-                // 鍋滄鐜版湁閲囬泦
-                if (_isGrabbing)
-                {
-                    StopGrabbing();
-                }
-                
-                // 鍚姩閲囬泦
-                int result = _camera.IMV_StartGrabbing();
-                if (result != IMVDefine.IMV_OK)
-                {
-                    throw new Exception($"鍚姩閲囬泦澶辫触锛岄敊璇爜锛歿result}");
-                }
-                
-                _isGrabbing = true;
-                isGrabbing = true;
-                
-                // 鍚姩閲囬泦绾跨▼
-                _threadRunning = true;
-                _grabThread = new Thread(GrabThreadProc);
-                _grabThread.IsBackground = true;
-                _grabThread.Start();
-                
-                return true;
-            }
-            catch (Exception ex)
-            {
-                System.Diagnostics.Debug.WriteLine($"鍚姩閲囬泦澶辫触锛歿ex.Message}");
-                _isGrabbing = false;
-                isGrabbing = false;
-                return false;
-            }
-        }
-        
-        /// <summary>
-        /// 鍋滄鍥惧儚閲囬泦
-        /// </summary>
-        /// <returns>鍋滄鏄惁鎴愬姛</returns>
-        public override bool StopGrabbing()
-        {
-            try
-            {
-                if (_camera == null || !_isGrabbing)
-                    return true;
-                
-                // 鍋滄绾跨▼
-                _threadRunning = false;
-                if (_grabThread != null && _grabThread.IsAlive)
-                {
-                    _grabThread.Join(1000);
-                    _grabThread = null;
-                }
-                
-                // 鍋滄閲囬泦
-                int result = _camera.IMV_StopGrabbing();
-                if (result != IMVDefine.IMV_OK)
-                {
-                    System.Diagnostics.Debug.WriteLine($"鍋滄閲囬泦澶辫触锛岄敊璇爜锛歿result}");
-                }
-                
-                _isGrabbing = false;
-                isGrabbing = false;
-                
-                // 娓呯悊缂撳瓨
-                lock (_frameLock)
-                {
-                    foreach (var frame in _frameList)
-                    {
-                        var tempFrame = frame; // 鍒涘缓涓存椂鍙橀噺
-                        _camera.IMV_ReleaseFrame(ref tempFrame);
-                    }
-                    _frameList.Clear();
-                }
-                
-                return true;
-            }
-            catch (Exception ex)
-            {
-                System.Diagnostics.Debug.WriteLine($"鍋滄閲囬泦澶辫触锛歿ex.Message}");
-                return false;
-            }
-        }
-        
-        /// <summary>
-        /// 鎵ц杞Е鍙�
-        /// </summary>
-        /// <returns>瑙﹀彂鏄惁鎴愬姛</returns>
-        public override bool SoftTrigger()
-        {
-            try
-            {
-                if (_camera == null || !_camera.IMV_IsOpen())
-                {
-                    throw new Exception("鐩告満鏈墦寮�");
-                }
-                
-                int result = _camera.IMV_ExecuteCommandFeature("TriggerSoftware");
-                return result == IMVDefine.IMV_OK;
-            }
-            catch (Exception ex)
-            {
-                System.Diagnostics.Debug.WriteLine($"杞Е鍙戝け璐ワ細{ex.Message}");
-                return false;
-            }
-        }
-        
-        #endregion
-
-        #region 鍙傛暟璁剧疆鍜岃幏鍙�
-        
-        /// <summary>
-        /// 璁剧疆瑙﹀彂妯″紡
-        /// </summary>
-        /// <param name="mode">瑙﹀彂妯″紡</param>
-        /// <param name="source">瑙﹀彂婧�</param>
-        /// <returns>璁剧疆鏄惁鎴愬姛</returns>
-        public override bool SetTriggerMode(TriggerMode mode, TriggerSource source = TriggerSource.Line0)
-        {
-            try
-            {
-                if (_camera == null || !_camera.IMV_IsOpen())
-                {
-                    throw new Exception("鐩告満鏈墦寮�");
-                }
-                
-                // 璁剧疆瑙﹀彂妯″紡
-                string triggerMode = mode == TriggerMode.On ? "On" : "Off";
-                int result = _camera.IMV_SetEnumFeatureSymbol("TriggerMode", triggerMode);
-                if (result != IMVDefine.IMV_OK)
-                {
-                    throw new Exception($"璁剧疆瑙﹀彂妯″紡澶辫触锛岄敊璇爜锛歿result}");
-                }
-                
-                // 璁剧疆瑙﹀彂婧�
-                if (mode == TriggerMode.On)
-                {
-                    string triggerSource = GetTriggerSourceString(source);
-                    result = _camera.IMV_SetEnumFeatureSymbol("TriggerSource", triggerSource);
-                    if (result != IMVDefine.IMV_OK)
-                    {
-                        throw new Exception($"璁剧疆瑙﹀彂婧愬け璐ワ紝閿欒鐮侊細{result}");
-                    }
-                }
-                
-                return true;
-            }
-            catch (Exception ex)
-            {
-                System.Diagnostics.Debug.WriteLine($"璁剧疆瑙﹀彂妯″紡澶辫触锛歿ex.Message}");
-                return false;
-            }
-        }
-        
-        /// <summary>
-        /// 鑾峰彇瑙﹀彂妯″紡
-        /// </summary>
-        /// <param name="mode">瑙﹀彂妯″紡</param>
-        /// <param name="source">瑙﹀彂婧�</param>
-        /// <returns>鑾峰彇鏄惁鎴愬姛</returns>
-        public override bool GetTriggerMode(out TriggerMode mode, out TriggerSource source)
-        {
-            mode = TriggerMode.Off;
-            source = TriggerSource.Software;
-            
-            try
-            {
-                if (_camera == null || !_camera.IMV_IsOpen())
-                {
-                    throw new Exception("鐩告満鏈墦寮�");
-                }
-                
-                // 鑾峰彇瑙﹀彂妯″紡
-                IMVDefine.IMV_String triggerMode = new IMVDefine.IMV_String();
-                int result = _camera.IMV_GetEnumFeatureSymbol("TriggerMode", ref triggerMode);
-                if (result == IMVDefine.IMV_OK)
-                {
-                    mode = triggerMode.str == "On" ? TriggerMode.On : TriggerMode.Off;
-                }
-                
-                // 鑾峰彇瑙﹀彂婧�
-                IMVDefine.IMV_String triggerSource = new IMVDefine.IMV_String();
-                result = _camera.IMV_GetEnumFeatureSymbol("TriggerSource", ref triggerSource);
-                if (result == IMVDefine.IMV_OK)
-                {
-                    source = GetTriggerSourceFromString(triggerSource.str);
-                }
-                
-                return true;
-            }
-            catch (Exception ex)
-            {
-                System.Diagnostics.Debug.WriteLine($"鑾峰彇瑙﹀彂妯″紡澶辫触锛歿ex.Message}");
-                return false;
-            }
-        }
-        
-        /// <summary>
-        /// 璁剧疆鏇濆厜鏃堕棿
-        /// </summary>
-        /// <param name="value">鏇濆厜鏃堕棿锛堝井绉掞級</param>
-        /// <returns>璁剧疆鏄惁鎴愬姛</returns>
-        public override bool SetExpouseTime(double value)
-        {
-            try
-            {
-                if (_camera == null || !_camera.IMV_IsOpen())
-                {
-                    throw new Exception("鐩告満鏈墦寮�");
-                }
-                
-                // 楠岃瘉鏇濆厜鏃堕棿鑼冨洿
-                double minExp = 0, maxExp = 0;
-                int result = _camera.IMV_GetDoubleFeatureMin("ExposureTime", ref minExp);
-                if (result != IMVDefine.IMV_OK)
-                {
-                    throw new Exception($"鑾峰彇鏇濆厜鏃堕棿鏈�灏忓�煎け璐ワ紝閿欒鐮侊細{result}");
-                }
-                
-                result = _camera.IMV_GetDoubleFeatureMax("ExposureTime", ref maxExp);
-                if (result != IMVDefine.IMV_OK)
-                {
-                    throw new Exception($"鑾峰彇鏇濆厜鏃堕棿鏈�澶у�煎け璐ワ紝閿欒鐮侊細{result}");
-                }
-                
-                if (value < minExp || value > maxExp)
-                {
-                    throw new Exception($"鏇濆厜鏃堕棿瓒呭嚭鑼冨洿锛屾湁鏁堣寖鍥达細{minExp} - {maxExp}");
-                }
-                
-                // 璁剧疆鏇濆厜鏃堕棿
-                result = _camera.IMV_SetDoubleFeatureValue("ExposureTime", value);
-                if (result != IMVDefine.IMV_OK)
-                {
-                    throw new Exception($"璁剧疆鏇濆厜鏃堕棿澶辫触锛岄敊璇爜锛歿result}");
-                }
-                
-                return true;
-            }
-            catch (Exception ex)
-            {
-                System.Diagnostics.Debug.WriteLine($"璁剧疆鏇濆厜鏃堕棿澶辫触锛歿ex.Message}");
-                return false;
-            }
-        }
-        
-        /// <summary>
-        /// 鑾峰彇鏇濆厜鏃堕棿
-        /// </summary>
-        /// <param name="value">鏇濆厜鏃堕棿</param>
-        /// <returns>鑾峰彇鏄惁鎴愬姛</returns>
-        public override bool GetExpouseTime(out double value)
-        {
-            value = 0;
-            
-            try
-            {
-                if (_camera == null || !_camera.IMV_IsOpen())
-                {
-                    throw new Exception("鐩告満鏈墦寮�");
-                }
-                
-                int result = _camera.IMV_GetDoubleFeatureValue("ExposureTime", ref value);
-                return result == IMVDefine.IMV_OK;
-            }
-            catch (Exception ex)
-            {
-                System.Diagnostics.Debug.WriteLine($"鑾峰彇鏇濆厜鏃堕棿澶辫触锛歿ex.Message}");
-                return false;
-            }
-        }
-        
-        /// <summary>
-        /// 璁剧疆澧炵泭
-        /// </summary>
-        /// <param name="gain">澧炵泭鍊�</param>
-        /// <returns>璁剧疆鏄惁鎴愬姛</returns>
-        public override bool SetGain(double gain)
-        {
-            try
-            {
-                if (_camera == null || !_camera.IMV_IsOpen())
-                {
-                    throw new Exception("鐩告満鏈墦寮�");
-                }
-                
-                string gainFeature = _camera.IMV_FeatureIsValid("Gain") ? "Gain" : "GainRaw";
-                
-                // 楠岃瘉澧炵泭鑼冨洿
-                double minGain = 0, maxGain = 0;
-                int result = _camera.IMV_GetDoubleFeatureMin(gainFeature, ref minGain);
-                if (result != IMVDefine.IMV_OK)
-                {
-                    throw new Exception($"鑾峰彇澧炵泭鏈�灏忓�煎け璐ワ紝閿欒鐮侊細{result}");
-                }
-                
-                result = _camera.IMV_GetDoubleFeatureMax(gainFeature, ref maxGain);
-                if (result != IMVDefine.IMV_OK)
-                {
-                    throw new Exception($"鑾峰彇澧炵泭鏈�澶у�煎け璐ワ紝閿欒鐮侊細{result}");
-                }
-                
-                if (gain < minGain) gain = minGain;
-                if (gain > maxGain) gain = maxGain;
-                
-                // 璁剧疆澧炵泭
-                result = _camera.IMV_SetDoubleFeatureValue(gainFeature, gain);
-                if (result != IMVDefine.IMV_OK)
-                {
-                    throw new Exception($"璁剧疆澧炵泭澶辫触锛岄敊璇爜锛歿result}");
-                }
-                
-                return true;
-            }
-            catch (Exception ex)
-            {
-                System.Diagnostics.Debug.WriteLine($"璁剧疆澧炵泭澶辫触锛歿ex.Message}");
-                return false;
-            }
-        }
-        
-        /// <summary>
-        /// 鑾峰彇澧炵泭鍊�
-        /// </summary>
-        /// <param name="gain">澧炵泭鍊�</param>
-        /// <returns>鑾峰彇鏄惁鎴愬姛</returns>
-        public override bool GetGain(out double gain)
-        {
-            gain = 0;
-            
-            try
-            {
-                if (_camera == null || !_camera.IMV_IsOpen())
-                {
-                    throw new Exception("鐩告満鏈墦寮�");
-                }
-                
-                string gainFeature = _camera.IMV_FeatureIsValid("Gain") ? "Gain" : "GainRaw";
-                int result = _camera.IMV_GetDoubleFeatureValue(gainFeature, ref gain);
-                return result == IMVDefine.IMV_OK;
-            }
-            catch (Exception ex)
-            {
-                System.Diagnostics.Debug.WriteLine($"鑾峰彇澧炵泭澶辫触锛歿ex.Message}");
-                return false;
-            }
-        }
-        
-        /// <summary>
-        /// 璁剧疆瑙﹀彂鏋佹��
-        /// </summary>
-        /// <param name="polarity">瑙﹀彂鏋佹��</param>
-        /// <returns>鏄惁鎴愬姛</returns>
-        public override bool SetTriggerPolarity(TriggerPolarity polarity)
-        {
-            try
-            {
-                if (_camera == null || !_camera.IMV_IsOpen()) return false;
-                
-                string activation = (polarity == TriggerPolarity.RisingEdge || polarity == TriggerPolarity.HighLevel) 
-                    ? "RisingEdge" : "FallingEdge";
-                
-                int result = _camera.IMV_SetEnumFeatureSymbol("TriggerActivation", activation);
-                return result == IMVDefine.IMV_OK;
-            }
-            catch (Exception ex)
-            {
-                System.Diagnostics.Debug.WriteLine($"璁剧疆瑙﹀彂鏋佹�уけ璐ワ細{ex.Message}");
-                return false;
-            }
-        }
-
-        /// <summary>
-        /// 鑾峰彇瑙﹀彂鏋佹��
-        /// </summary>
-        /// <param name="polarity">瑙﹀彂鏋佹��</param>
-        /// <returns>鏄惁鎴愬姛</returns>
-        public override bool GetTriggerPolarity(out TriggerPolarity polarity)
-        {
-            polarity = TriggerPolarity.RisingEdge;
-            try
-            {
-                if (_camera == null || !_camera.IMV_IsOpen()) return false;
-                
-                IMVDefine.IMV_String activation = new IMVDefine.IMV_String();
-                int result = _camera.IMV_GetEnumFeatureSymbol("TriggerActivation", ref activation);
-                if (result == IMVDefine.IMV_OK)
-                {
-                    polarity = activation.str == "RisingEdge" ? TriggerPolarity.RisingEdge : TriggerPolarity.FallingEdge;
-                    return true;
-                }
-                return false;
-            }
-            catch (Exception ex)
-            {
-                System.Diagnostics.Debug.WriteLine($"鑾峰彇瑙﹀彂鏋佹�уけ璐ワ細{ex.Message}");
-                return false;
-            }
-        }
-
-        /// <summary>
-        /// 璁剧疆瑙﹀彂婊ゆ尝鏃堕棿 (us)
-        /// </summary>
-        public override bool SetTriggerFliter(double flitertime)
-        {
-            try
-            {
-                if (_camera == null || !_camera.IMV_IsOpen()) return false;
-                
-                // 鍗庣澘鐩告満閫氬父浣跨敤 LineDebouncerTime 鎺у埗婊ゆ尝
-                if (_camera.IMV_FeatureIsValid("LineDebouncerTime"))
-                {
-                    int result = _camera.IMV_SetDoubleFeatureValue("LineDebouncerTime", flitertime);
-                    return result == IMVDefine.IMV_OK;
-                }
-                return false;
-            }
-            catch (Exception ex)
-            {
-                System.Diagnostics.Debug.WriteLine($"璁剧疆瑙﹀彂婊ゆ尝澶辫触锛歿ex.Message}");
-                return false;
-            }
-        }
-
-        /// <summary>
-        /// 鑾峰彇瑙﹀彂婊ゆ尝鏃堕棿 (us)
-        /// </summary>
-        public override bool GetTriggerFliter(out double flitertime)
-        {
-            flitertime = 0;
-            try
-            {
-                if (_camera == null || !_camera.IMV_IsOpen()) return false;
-                
-                if (_camera.IMV_FeatureIsValid("LineDebouncerTime"))
-                {
-                    int result = _camera.IMV_GetDoubleFeatureValue("LineDebouncerTime", ref flitertime);
-                    return result == IMVDefine.IMV_OK;
-                }
-                return false;
-            }
-            catch (Exception ex)
-            {
-                System.Diagnostics.Debug.WriteLine($"鑾峰彇瑙﹀彂婊ゆ尝澶辫触锛歿ex.Message}");
-                return false;
-            }
-        }
-
-        /// <summary>
-        /// 璁剧疆瑙﹀彂寤舵椂 (us)
-        /// </summary>
-        public override bool SetTriggerDelay(double delay)
-        {
-            try
-            {
-                if (_camera == null || !_camera.IMV_IsOpen()) return false;
-                
-                if (_camera.IMV_FeatureIsValid("TriggerDelay"))
-                {
-                    int result = _camera.IMV_SetDoubleFeatureValue("TriggerDelay", delay);
-                    return result == IMVDefine.IMV_OK;
-                }
-                return false;
-            }
-            catch (Exception ex)
-            {
-                System.Diagnostics.Debug.WriteLine($"璁剧疆瑙﹀彂寤舵椂澶辫触锛歿ex.Message}");
-                return false;
-            }
-        }
-
-        /// <summary>
-        /// 鑾峰彇瑙﹀彂寤舵椂 (us)
-        /// </summary>
-        public override bool GetTriggerDelay(out double delay)
-        {
-            delay = 0;
-            try
-            {
-                if (_camera == null || !_camera.IMV_IsOpen()) return false;
-                
-                if (_camera.IMV_FeatureIsValid("TriggerDelay"))
-                {
-                    int result = _camera.IMV_GetDoubleFeatureValue("TriggerDelay", ref delay);
-                    return result == IMVDefine.IMV_OK;
-                }
-                return false;
-            }
-            catch (Exception ex)
-            {
-                System.Diagnostics.Debug.WriteLine($"鑾峰彇瑙﹀彂寤舵椂澶辫触锛歿ex.Message}");
-                return false;
-            }
-        }
-
-        /// <summary>
-        /// 璁剧疆淇″彿绾挎ā寮�
-        /// </summary>
-        public override bool SetLineMode(IOLines line, LineMode mode)
-        {
-            try
-            {
-                if (_camera == null || !_camera.IMV_IsOpen()) return false;
-                
-                // 閫夋嫨绾胯矾
-                int result = _camera.IMV_SetEnumFeatureSymbol("LineSelector", line.ToString());
-                if (result != IMVDefine.IMV_OK) return false;
-                
-                // 璁剧疆妯″紡
-                string lineMode = mode == LineMode.Input ? "Input" : "Output";
-                result = _camera.IMV_SetEnumFeatureSymbol("LineMode", lineMode);
-                return result == IMVDefine.IMV_OK;
-            }
-            catch (Exception ex)
-            {
-                System.Diagnostics.Debug.WriteLine($"璁剧疆淇″彿绾挎ā寮忓け璐ワ細{ex.Message}");
-                return false;
-            }
-        }
-
-        /// <summary>
-        /// 璁剧疆淇″彿绾跨數骞崇姸鎬�
-        /// </summary>
-        public override bool SetLineStatus(IOLines line, LineStatus linestatus)
-        {
-            try
-            {
-                if (_camera == null || !_camera.IMV_IsOpen()) return false;
-                
-                // 浠呭杈撳嚭绾胯矾鏈夋晥
-                int result = _camera.IMV_SetEnumFeatureSymbol("LineSelector", line.ToString());
-                if (result != IMVDefine.IMV_OK) return false;
-                
-                bool status = linestatus == LineStatus.Hight;
-                result = _camera.IMV_SetBoolFeatureValue("UserOutputValue", status);
-                return result == IMVDefine.IMV_OK;
-            }
-            catch (Exception ex)
-            {
-                System.Diagnostics.Debug.WriteLine($"璁剧疆淇″彿绾跨姸鎬佸け璐ワ細{ex.Message}");
-                return false;
-            }
-        }
-
-        /// <summary>
-        /// 鑾峰彇淇″彿绾跨數骞崇姸鎬�
-        /// </summary>
-        public override bool GetLineStatus(IOLines line, out LineStatus lineStatus)
-        {
-            lineStatus = LineStatus.Low;
-            try
-            {
-                if (_camera == null || !_camera.IMV_IsOpen()) return false;
-                
-                int result = _camera.IMV_SetEnumFeatureSymbol("LineSelector", line.ToString());
-                if (result != IMVDefine.IMV_OK) return false;
-                
-                bool status = false;
-                result = _camera.IMV_GetBoolFeatureValue("LineStatus", ref status);
-                if (result == IMVDefine.IMV_OK)
-                {
-                    lineStatus = status ? LineStatus.Hight : LineStatus.Low;
-                    return true;
-                }
-                return false;
-            }
-            catch (Exception ex)
-            {
-                System.Diagnostics.Debug.WriteLine($"鑾峰彇淇″彿绾跨姸鎬佸け璐ワ細{ex.Message}");
-                return false;
-            }
-        }
-
-        /// <summary>
-        /// 鑷姩鐧藉钩琛�
-        /// </summary>
-        public override bool AutoBalanceWhite()
-        {
-            try
-            {
-                if (_camera == null || !_camera.IMV_IsOpen()) return false;
-                
-                if (_camera.IMV_FeatureIsValid("BalanceWhiteAuto"))
-                {
-                    int result = _camera.IMV_SetEnumFeatureSymbol("BalanceWhiteAuto", "Once");
-                    return result == IMVDefine.IMV_OK;
-                }
-                return false;
-            }
-            catch (Exception ex)
-            {
-                System.Diagnostics.Debug.WriteLine($"鑷姩鐧藉钩琛″け璐ワ細{ex.Message}");
-                return false;
-            }
-        }
-
-        #endregion
-
-        #region 閲囬泦鍜岃浆鎹㈣緟鍔╂柟娉�
-
-        /// <summary>
-        /// 鍥惧儚閲囬泦绾跨▼澶勭悊鍑芥暟
-        /// </summary>
-        private void GrabThreadProc()
-        {
-            while (_threadRunning)
-            {
-                IMVDefine.IMV_Frame frame = new IMVDefine.IMV_Frame();
-                try
-                {
-                    // 鑾峰彇鍥惧儚甯�
-                    int result = _camera.IMV_GetFrame(ref frame, 1000);
-
-                    if (result == IMVDefine.IMV_OK)
-                    {
-                        // 澶勭悊鍥惧儚甯�
-                        ProcessFrame(frame);
-                    }
-                    else
-                    {
-                        // 鍗充娇鑾峰彇澶辫触锛屼篃灏濊瘯閲婃斁甯э紝闃叉SDK鍐呴儴缂撳瓨娉勯湶
-                        // 娉ㄦ剰锛歠rame鏄瘡娆℃柊寤虹殑锛屽鏋淕etFrame娌″~鍏咃紝杩欓噷閲婃斁搴旇鏄畨鍏ㄧ殑锛堣SDK瀹炵幇鑰屽畾锛�
-                        var tempFrame = frame;
-                        _camera.IMV_ReleaseFrame(ref tempFrame);
-
-                        if ((uint)result != 0x80000001 && result != -119 && result != -102) // 瓒呮椂閿欒浠g爜
-                        {
-                            // 闈炶秴鏃堕敊璇�
-                            System.Diagnostics.Debug.WriteLine($"鑾峰彇鍥惧儚甯уけ璐ワ紝閿欒鐮侊細{result}");
-                            Thread.Sleep(10); // 鍑洪敊鏃剁◢浣滅瓑寰�
-                        }
-                    }
-                }
-                catch (Exception ex)
-                {
-                    System.Diagnostics.Debug.WriteLine($"閲囬泦绾跨▼寮傚父锛歿ex.Message}");
-                    Thread.Sleep(10);
-                }
-
-                Thread.Sleep(1);
-            }
-        }
-
-        /// <summary>
-        /// 澶勭悊鍥惧儚甯�
-        /// </summary>
-        /// <param name="frame">鍥惧儚甯�</param>
-        private void ProcessFrame(IMVDefine.IMV_Frame frame)
-        {
-            try
-            {
-                // 灏嗗浘鍍忔暟鎹浆鎹负Bitmap
-                Bitmap bitmap = ConvertFrameToBitmap(frame);
-
-                if (bitmap != null)
-                {
-                    // 瑙﹀彂鍥惧儚閲囬泦浜嬩欢
-                    CameraEventArgs args = new CameraEventArgs(SN, bitmap);
-                    ImageGrabbed?.Invoke(this, args);
-
-                    // 鏇存柊鍥炶皟鍥惧儚
-                    CallBackImg = bitmap;
-                }
-            }
-            catch (Exception ex)
-            {
-                System.Diagnostics.Debug.WriteLine($"澶勭悊鍥惧儚甯уけ璐ワ細{ex.Message}");
-            }
-            finally
-            {
-                // 纭繚鏃犺濡備綍閮介噴鏀惧抚锛岄槻姝㈢紦瀛樺崰婊�
-                var tempFrame = frame;
-                _camera.IMV_ReleaseFrame(ref tempFrame);
-            }
-        }
-
-        /// <summary>
-        /// 灏嗗浘鍍忓抚杞崲涓築itmap
-        /// </summary>
-        /// <param name="frame">鍥惧儚甯�</param>
-        /// <returns>Bitmap瀵硅薄</returns>
-        private Bitmap ConvertFrameToBitmap(IMVDefine.IMV_Frame frame)
-        {
-            try
-            {
-                Bitmap bitmap = null;
-
-                switch (frame.frameInfo.pixelFormat)
-                {
-                    case IMVDefine.IMV_EPixelType.gvspPixelMono8:
-                        bitmap = CreateMono8Bitmap(frame);
-                        break;
-                    case IMVDefine.IMV_EPixelType.gvspPixelBGR8:
-                        bitmap = CreateBgr8Bitmap(frame);
-                        break;
-                    default:
-                        // 鍏朵粬鏍煎紡闇�瑕佽浆鎹�
-                        bitmap = ConvertToBGR8(frame);
-                        break;
-                }
-
-                return bitmap;
-            }
-            catch (Exception ex)
-            {
-                System.Diagnostics.Debug.WriteLine($"鍥惧儚鏍煎紡杞崲澶辫触锛歿ex.Message}");
-                return null;
-            }
-        }
-
-        /// <summary>
-        /// 鍒涘缓Mono8鏍煎紡Bitmap
-        /// </summary>
-        private Bitmap CreateMono8Bitmap(IMVDefine.IMV_Frame frame)
-        {
-            Bitmap bitmap = new Bitmap((int)frame.frameInfo.width, (int)frame.frameInfo.height, PixelFormat.Format8bppIndexed);
-
-            // 璁剧疆鐏板害璋冭壊鏉�
-            ColorPalette palette = bitmap.Palette;
-            for (int i = 0; i < 256; i++)
-            {
-                palette.Entries[i] = Color.FromArgb(i, i, i);
-            }
-            bitmap.Palette = palette;
-
-            // 澶嶅埗鍥惧儚鏁版嵁
-            BitmapData bmpData = bitmap.LockBits(
-                new Rectangle(0, 0, bitmap.Width, bitmap.Height),
-                ImageLockMode.WriteOnly,
-                bitmap.PixelFormat);
-
-            // 浣跨敤CopyMemory API杩涜鍐呭瓨澶嶅埗
-            CopyMemory(bmpData.Scan0, frame.pData, (uint)Math.Min(frame.frameInfo.size, (uint)(bmpData.Stride * bitmap.Height)));
-
-            bitmap.UnlockBits(bmpData);
-            return bitmap;
-        }
-
-        /// <summary>
-        /// 鍒涘缓BGR8鏍煎紡Bitmap
-        /// </summary>
-        private Bitmap CreateBgr8Bitmap(IMVDefine.IMV_Frame frame)
-        {
-            Bitmap bitmap = new Bitmap((int)frame.frameInfo.width, (int)frame.frameInfo.height, PixelFormat.Format24bppRgb);
-
-            BitmapData bmpData = bitmap.LockBits(
-                new Rectangle(0, 0, bitmap.Width, bitmap.Height),
-                ImageLockMode.WriteOnly,
-                bitmap.PixelFormat);
-
-            // 浣跨敤CopyMemory API杩涜鍐呭瓨澶嶅埗
-            CopyMemory(bmpData.Scan0, frame.pData, (uint)Math.Min(frame.frameInfo.size, (uint)(bmpData.Stride * bitmap.Height)));
-
-            bitmap.UnlockBits(bmpData);
-            return bitmap;
-        }
-
-        /// <summary>
-        /// 杞崲涓築GR8鏍煎紡
-        /// </summary>
-        private Bitmap ConvertToBGR8(IMVDefine.IMV_Frame frame)
-        {
-            IMVDefine.IMV_PixelConvertParam convertParam = new IMVDefine.IMV_PixelConvertParam
-            {
-                nWidth = frame.frameInfo.width,
-                nHeight = frame.frameInfo.height,
-                ePixelFormat = frame.frameInfo.pixelFormat,
-                pSrcData = frame.pData,
-                nSrcDataLen = frame.frameInfo.size,
-                nPaddingX = frame.frameInfo.paddingX,
-                nPaddingY = frame.frameInfo.paddingY,
-                eBayerDemosaic = IMVDefine.IMV_EBayerDemosaic.demosaicBilinear,
-                eDstPixelFormat = IMVDefine.IMV_EPixelType.gvspPixelBGR8,
-                nDstBufSize = frame.frameInfo.width * frame.frameInfo.height * 3
-            };
-
-            IntPtr dstBuffer = Marshal.AllocHGlobal((int)convertParam.nDstBufSize);
-            convertParam.pDstBuf = dstBuffer;
-
-            try
-            {
-                int result = _camera.IMV_PixelConvert(ref convertParam);
-                if (result == IMVDefine.IMV_OK)
-                {
-                    return CreateBgr8BitmapFromBuffer(dstBuffer, frame.frameInfo.width, frame.frameInfo.height);
-                }
-                return null;
-            }
-            finally
-            {
-                Marshal.FreeHGlobal(dstBuffer);
-            }
-        }
-
-        /// <summary>
-        /// 浠庣紦鍐插尯鍒涘缓BGR8 Bitmap
-        /// </summary>
-        private Bitmap CreateBgr8BitmapFromBuffer(IntPtr buffer, uint width, uint height)
-        {
-            Bitmap bitmap = new Bitmap((int)width, (int)height, PixelFormat.Format24bppRgb);
-
-            BitmapData bmpData = bitmap.LockBits(
-                new Rectangle(0, 0, bitmap.Width, bitmap.Height),
-                ImageLockMode.WriteOnly,
-                bitmap.PixelFormat);
-
-            // 浣跨敤CopyMemory API杩涜瀹夊叏鐨勫唴瀛樺鍒�
-            CopyMemory(bmpData.Scan0, buffer, (uint)(width * height * 3));
-
-            bitmap.UnlockBits(bmpData);
-            return bitmap;
-        }
-
-        /// <summary>
-        /// 灏嗚Е鍙戞簮鏋氫妇杞崲涓哄瓧绗︿覆
-        /// </summary>
-        private string GetTriggerSourceString(TriggerSource source)
-        {
-            return source switch
-            {
-                TriggerSource.Software => "Software",
-                TriggerSource.Line0 => "Line0",
-                TriggerSource.Line1 => "Line1",
-                TriggerSource.Line2 => "Line2",
-                TriggerSource.Line3 => "Line3",
-                TriggerSource.Line4 => "Line4",
-                TriggerSource.Line5 => "Line5",
-                _ => "Software"
-            };
-        }
-
-        /// <summary>
-        /// 灏嗗瓧绗︿覆杞崲涓鸿Е鍙戞簮鏋氫妇
-        /// </summary>
-        private TriggerSource GetTriggerSourceFromString(string source)
-        {
-            return source switch
-            {
-                "Software" => TriggerSource.Software,
-                "Line0" => TriggerSource.Line0,
-                "Line1" => TriggerSource.Line1,
-                "Line2" => TriggerSource.Line2,
-                "Line3" => TriggerSource.Line3,
-                "Line4" => TriggerSource.Line4,
-                "Line5" => TriggerSource.Line5,
-                _ => TriggerSource.Software
-            };
-        }
-
-        #endregion
-
-
-        #region IDisposable瀹炵幇
-        
-        private bool _disposed = false;
-        
-        protected virtual void Dispose(bool disposing)
-        {
-            if (!_disposed)
-            {
-                if (disposing)
-                {
-                    // 閲婃斁鎵樼璧勬簮
-                }
-                
-                // 閲婃斁闈炴墭绠¤祫婧�
-                CloseDevice();
-                
-                _disposed = true;
-            }
-        }
-        
-        public override void Dispose()
-        {
-            Dispose(true);
-            GC.SuppressFinalize(this);
-        }
-        
-        #endregion
-    }
-}
\ No newline at end of file

--
Gitblit v1.9.3