C3032
2026-01-08 116ed6b584bbdb40c5b65e7cb57e039b6ae57800
LB_VisionProcesses/Cameras/2DCameraForm.cs
@@ -1,6 +1,8 @@
using HalconDotNet;
using LB_SmartVisionCameraDevice.PHM6000;
using LB_VisionControl;
using LB_VisionProcesses.Cameras.HRCameras;
using LB_VisionProcesses.Cameras.LBCameras;
using MVSDK_Net;
using Newtonsoft.Json.Linq;
using OpenCvSharp;
@@ -164,7 +166,7 @@
                        camera = new HRCamera();
                        break;
                    case CameraBrand.LBCamera:
                        //camera = new LBCamera();
                        camera = new LBCamera();
                        break;
                    default:
                        Debug.WriteLine("未知品牌");
@@ -240,7 +242,7 @@
                switch (brand)
                {
                    case CameraBrand.LBCamera:
                        //camera = new LBCamera();
                        camera = new LBCamera();
                        break;
                    case CameraBrand.HRCamera:
                        camera = new HRCamera();
@@ -313,7 +315,19 @@
                PropertyGrid pg = new PropertyGrid();
                pg.Dock = DockStyle.Fill;
                pg.SelectedObject = new CameraAdvancedSettings(camera);
                if (camera is LBCamera phmCamera)
                {
                    pg.SelectedObject = phmCamera.GetSensorConfig();
                    pg.PropertyValueChanged += (s, ev) =>
                    {
                        phmCamera.UpdateSensorConfig((PHM6000SensorConfig)pg.SelectedObject);
                    };
                }
                else
                {
                    pg.SelectedObject = new CameraAdvancedSettings(camera);
                }
                editForm.Controls.Add(pg);
                editForm.ShowDialog();
@@ -376,21 +390,20 @@
            if (e.Bitmap == null)
                return;
            lock (e.Bitmap)
            {
                if (this.InvokeRequired) // 检查是否需要在UI线程上调用
                lock (e.Bitmap)
                {
                    this.Invoke(new Action(() =>
                    if (this.InvokeRequired) // 检查是否需要在UI线程上调用
                    {
                        this.Invoke(new Action(() =>
                        {
                            onlinePictureBox.Image = e.Bitmap;
                        })); // 递归调用自身,但这次在UI线程上
                    }
                    else
                    {
                        onlinePictureBox.Image = e.Bitmap;
                    })); // 递归调用自身,但这次在UI线程上
                    }
                }
                else
                {
                    onlinePictureBox.Image = e.Bitmap;
                }
            }
            total.iImageCount++;
            try
            {
@@ -489,8 +502,11 @@
                    Task.Factory.StartNew(() =>
                    {
                        camera.StopGrabbing();
                        camera.SetTriggerMode(TriggerMode.On, TriggerSource.Software);
                        camera.StartGrabbing();
                        if (brand != CameraBrand.LBCamera)
                        {
                            camera.SetTriggerMode(TriggerMode.On, TriggerSource.Software);
                            camera.StartGrabbing();
                        }
                    });
                }