diff --git a/Camera_connect/BaslerCamera.cs b/Camera_connect/BaslerCamera.cs index 41e1c7d..1327c86 100644 --- a/Camera_connect/BaslerCamera.cs +++ b/Camera_connect/BaslerCamera.cs @@ -17,6 +17,7 @@ namespace Camera_connect private readonly List allCameras = new List(); private readonly PixelDataConverter pxConvert = new PixelDataConverter(); private bool isGrabbing; + private bool isCameraOpen = false; public BaslerCamera(Main form) { @@ -27,6 +28,7 @@ namespace Camera_connect { var allCameraInfos = CameraFinder.Enumerate(); allCameras.Clear(); + if (isCameraOpen == true) return; foreach (var cameraInfo in allCameraInfos) { @@ -36,6 +38,7 @@ namespace Camera_connect camera.StreamGrabber.ImageGrabbed += StreamGrabber_ImageGrabbed; camera.Open(); allCameras.Add(camera); + isCameraOpen = true; ; } isGrabbing = true; @@ -92,6 +95,7 @@ namespace Camera_connect allCameras[0].StreamGrabber.Stop(); CameraImageEvent = null; // 解除訂閱事件,防止影像更新 isGrabbing = false; + isCameraOpen = false; } else { diff --git a/Camera_connect/Main.cs b/Camera_connect/Main.cs index 65a5f9b..c877a73 100644 --- a/Camera_connect/Main.cs +++ b/Camera_connect/Main.cs @@ -125,7 +125,6 @@ namespace Camera_connect } } - private void bt_OneShot_Click(object sender, EventArgs e) { try @@ -145,6 +144,7 @@ namespace Camera_connect } else if (selectedCamera == "Basler") { + if (isKeepShotting == true) return; if (Basler != null) { Basler.OneShot(); // 榸 @@ -164,7 +164,7 @@ namespace Camera_connect private void bt_KeepShot_Click(object sender, EventArgs e) { string? selectedCamera = comboBox1.SelectedItem?.ToString(); - + if (isKeepShotting == true) return; if (selectedCamera == "IDS") { // IDS ۾s޿ @@ -205,6 +205,7 @@ namespace Camera_connect } else if (selectedCamera == "Basler") { + if (Basler != null) { Basler.Stop();