diff --git a/Camera_connect/BaslerCamera.cs b/Camera_connect/BaslerCamera.cs index 1327c86..5230e91 100644 --- a/Camera_connect/BaslerCamera.cs +++ b/Camera_connect/BaslerCamera.cs @@ -54,6 +54,7 @@ namespace Camera_connect } allCameras.Clear(); + isCameraOpen = false; isGrabbing = false; MessageBox.Show("相機已斷開連接"); } @@ -74,18 +75,18 @@ namespace Camera_connect public void KeepShot() { - if (isGrabbing && allCameras.Count > 0) - { - var camera = allCameras[0]; - camera.Parameters[PLCamera.AcquisitionMode].SetValue(PLCamera.AcquisitionMode.Continuous); - camera.StreamGrabber.Start(GrabStrategy.OneByOne, GrabLoop.ProvidedByStreamGrabber); - } - else + if (!isGrabbing || allCameras.Count == 0) { MessageBox.Show("請確保相機已連接!"); + return; } + + var camera = allCameras[0]; + camera.Parameters[PLCamera.AcquisitionMode].SetValue(PLCamera.AcquisitionMode.Continuous); + camera.StreamGrabber.Start(GrabStrategy.OneByOne, GrabLoop.ProvidedByStreamGrabber); } + public void Stop() { if (allCameras.Count > 0) @@ -94,8 +95,8 @@ namespace Camera_connect camera.StreamGrabber.Stop(); // 停止抓取 allCameras[0].StreamGrabber.Stop(); CameraImageEvent = null; // 解除訂閱事件,防止影像更新 - isGrabbing = false; - isCameraOpen = false; + isGrabbing = true; + } else { diff --git a/Camera_connect/Main.Designer.cs b/Camera_connect/Main.Designer.cs index 5392bdb..373efa0 100644 --- a/Camera_connect/Main.Designer.cs +++ b/Camera_connect/Main.Designer.cs @@ -28,58 +28,59 @@ /// private void InitializeComponent() { - bt_connect = new Button(); - bt_OneShot = new Button(); - bt_KeepShot = new Button(); - bt_Stop = new Button(); + Bt_connect = new Button(); + Bt_OneShot = new Button(); + Bt_KeepShot = new Button(); + Bt_Stop = new Button(); pictureBox1 = new PictureBox(); Label_status = new Label(); comboBox1 = new ComboBox(); camera_serialnumber = new TextBox(); label2 = new Label(); label3 = new Label(); + Bt_disconnect = new Button(); ((System.ComponentModel.ISupportInitialize)pictureBox1).BeginInit(); SuspendLayout(); // - // bt_connect + // Bt_connect // - bt_connect.Location = new Point(99, 75); - bt_connect.Name = "bt_connect"; - bt_connect.Size = new Size(116, 63); - bt_connect.TabIndex = 0; - bt_connect.Text = "相機連線"; - bt_connect.UseVisualStyleBackColor = true; - bt_connect.Click += bt_connect_Click; + Bt_connect.Location = new Point(99, 75); + Bt_connect.Name = "Bt_connect"; + Bt_connect.Size = new Size(116, 63); + Bt_connect.TabIndex = 0; + Bt_connect.Text = "相機連線"; + Bt_connect.UseVisualStyleBackColor = true; + Bt_connect.Click += Bt_connect_Click; // - // bt_OneShot + // Bt_OneShot // - bt_OneShot.Location = new Point(99, 242); - bt_OneShot.Name = "bt_OneShot"; - bt_OneShot.Size = new Size(116, 63); - bt_OneShot.TabIndex = 1; - bt_OneShot.Text = "單張擷取"; - bt_OneShot.UseVisualStyleBackColor = true; - bt_OneShot.Click += bt_OneShot_Click; + Bt_OneShot.Location = new Point(99, 242); + Bt_OneShot.Name = "Bt_OneShot"; + Bt_OneShot.Size = new Size(116, 63); + Bt_OneShot.TabIndex = 1; + Bt_OneShot.Text = "單張擷取"; + Bt_OneShot.UseVisualStyleBackColor = true; + Bt_OneShot.Click += Bt_OneShot_Click; // - // bt_KeepShot + // Bt_KeepShot // - bt_KeepShot.Location = new Point(243, 242); - bt_KeepShot.Name = "bt_KeepShot"; - bt_KeepShot.Size = new Size(116, 63); - bt_KeepShot.TabIndex = 2; - bt_KeepShot.Text = "連續取像"; - bt_KeepShot.UseVisualStyleBackColor = true; - bt_KeepShot.Click += bt_KeepShot_Click; + Bt_KeepShot.Location = new Point(243, 242); + Bt_KeepShot.Name = "Bt_KeepShot"; + Bt_KeepShot.Size = new Size(116, 63); + Bt_KeepShot.TabIndex = 2; + Bt_KeepShot.Text = "連續取像"; + Bt_KeepShot.UseVisualStyleBackColor = true; + Bt_KeepShot.Click += Bt_KeepShot_Click; // - // bt_Stop + // Bt_Stop // - bt_Stop.Location = new Point(385, 242); - bt_Stop.Name = "bt_Stop"; - bt_Stop.Size = new Size(116, 63); - bt_Stop.TabIndex = 3; - bt_Stop.Text = "停止"; - bt_Stop.UseVisualStyleBackColor = true; - bt_Stop.Click += bt_Stop_Click; + Bt_Stop.Location = new Point(385, 242); + Bt_Stop.Name = "Bt_Stop"; + Bt_Stop.Size = new Size(116, 63); + Bt_Stop.TabIndex = 3; + Bt_Stop.Text = "停止"; + Bt_Stop.UseVisualStyleBackColor = true; + Bt_Stop.Click += Bt_Stop_Click; // // pictureBox1 // @@ -102,7 +103,7 @@ // comboBox1.FormattingEnabled = true; comboBox1.Items.AddRange(new object[] { "Basler", "IDS" }); - comboBox1.Location = new Point(300, 75); + comboBox1.Location = new Point(424, 74); comboBox1.Name = "comboBox1"; comboBox1.Size = new Size(182, 31); comboBox1.TabIndex = 6; @@ -132,21 +133,32 @@ label3.TabIndex = 11; label3.Text = "相機序號"; // + // Bt_disconnect + // + Bt_disconnect.Location = new Point(263, 75); + Bt_disconnect.Name = "Bt_disconnect"; + Bt_disconnect.Size = new Size(116, 63); + Bt_disconnect.TabIndex = 12; + Bt_disconnect.Text = "中斷連線"; + Bt_disconnect.UseVisualStyleBackColor = true; + Bt_disconnect.Click += Bt_disconnect_Click; + // // Main // AutoScaleDimensions = new SizeF(11F, 23F); AutoScaleMode = AutoScaleMode.Font; ClientSize = new Size(1746, 1294); + Controls.Add(Bt_disconnect); Controls.Add(label3); Controls.Add(label2); Controls.Add(camera_serialnumber); Controls.Add(comboBox1); Controls.Add(Label_status); Controls.Add(pictureBox1); - Controls.Add(bt_Stop); - Controls.Add(bt_KeepShot); - Controls.Add(bt_OneShot); - Controls.Add(bt_connect); + Controls.Add(Bt_Stop); + Controls.Add(Bt_KeepShot); + Controls.Add(Bt_OneShot); + Controls.Add(Bt_connect); Name = "Main"; Text = "Form1"; ((System.ComponentModel.ISupportInitialize)pictureBox1).EndInit(); @@ -156,15 +168,16 @@ #endregion - private Button bt_connect; - private Button bt_OneShot; - private Button bt_KeepShot; - private Button bt_Stop; + private Button Bt_connect; + private Button Bt_OneShot; + private Button Bt_KeepShot; + private Button Bt_Stop; private PictureBox pictureBox1; private Label Label_status; private ComboBox comboBox1; private TextBox camera_serialnumber; private Label label2; private Label label3; + private Button Bt_disconnect; } } diff --git a/Camera_connect/Main.cs b/Camera_connect/Main.cs index c877a73..de6dcbb 100644 --- a/Camera_connect/Main.cs +++ b/Camera_connect/Main.cs @@ -29,7 +29,7 @@ namespace Camera_connect } //IDSլ۾Ǹ 4103372214 - private async void bt_connect_Click(object sender, EventArgs e) + private async void Bt_connect_Click(object sender, EventArgs e) { string? selectedCamera = comboBox1.SelectedItem?.ToString(); @@ -125,7 +125,7 @@ namespace Camera_connect } } - private void bt_OneShot_Click(object sender, EventArgs e) + private void Bt_OneShot_Click(object sender, EventArgs e) { try { @@ -161,7 +161,7 @@ namespace Camera_connect } } - private void bt_KeepShot_Click(object sender, EventArgs e) + private void Bt_KeepShot_Click(object sender, EventArgs e) { string? selectedCamera = comboBox1.SelectedItem?.ToString(); if (isKeepShotting == true) return; @@ -175,20 +175,17 @@ namespace Camera_connect // Basler ۾s޿ if (Basler != null) { - if (Basler != null) - { - Basler.KeepShot(); // Ұʳs - isKeepShotting = true; - } - else - { - MessageBox.Show("Хsu Basler ۾I", "suT", MessageBoxButtons.OK, MessageBoxIcon.Warning); - } + Basler.KeepShot(); + isKeepShotting = true; + } + else + { + MessageBox.Show("Хsu Basler ۾I", "suT", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } } - private void bt_Stop_Click(object sender, EventArgs e) + private void Bt_Stop_Click(object sender, EventArgs e) { if (!isKeepShotting) { @@ -208,9 +205,9 @@ namespace Camera_connect if (Basler != null) { - Basler.Stop(); - Basler.CameraImageEvent -= Camera_CameraImageEvent; - Label_status.Text = "baslers"; + Basler?.Stop(); + isKeepShotting = false; + Label_status.Text = "Baslers"; } } } @@ -256,14 +253,18 @@ namespace Camera_connect private void Camera_CameraImageEvent(Bitmap bmp) { - // s@ PictureBox1 - pictureBox1.BeginInvoke(new MethodInvoker(delegate + pictureBox1.Invoke((MethodInvoker)delegate { - Bitmap old = pictureBox1.Image as Bitmap; + Bitmap? old = pictureBox1.Image as Bitmap; pictureBox1.Image = bmp; - if (old != null) - old.Dispose(); - })); + old?.Dispose(); + }); + } + + private void Bt_disconnect_Click(object sender, EventArgs e) + { + Basler.Close(); + Label_status.Text = "۾_su"; } } }