123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563 |
- using CCDCount.DLL;
- using CCDCount.MODEL.CameraClass;
- using CCDCount.MODEL.ConfigModel;
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.IO;
- using System.Linq;
- using System.Text;
- using System.Threading;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace CCDCount.Forms
- {
- public partial class SettingForm : Form
- {
- int Nowindex = -1;
- List<MainThreadClass> LoadLsMainThread = null;
- List<MainThreadClass> NowLoadLsMianThread = new List<MainThreadClass>();
- MainThreadClass LoadMainThread = null;
- (CameraConfig CameraConfigValue, ShuLiConfigClass ShuLiConfigValue) NowLoadConfig = (null, null);
- //从外部加载的信息
- List<(CameraConfig CameraConfigValue, ShuLiConfigClass ShuLiConfigValue)> LoadConfigs =
- new List<(CameraConfig CameraConfigValue, ShuLiConfigClass ShuLiConfigValue)>();
- //将要保存的信息
- List<(CameraConfig CameraConfigValue, ShuLiConfigClass ShuLiConfigValue)> Configs =
- new List<(CameraConfig CameraConfigValue, ShuLiConfigClass ShuLiConfigValue)>();
- CameraClass CameraClass = new CameraClass();
- public SettingForm(List<MainThreadClass> lsMainThread)
- {
- InitializeComponent();
- LoadLsMainThread = lsMainThread;
- }
- /// <summary>
- /// 保存参数
- /// </summary>
- public void SaveConfig()
- {
- if (!Directory.Exists(".\\Config\\")) Directory.CreateDirectory(".\\Config\\");
- {
- XmlStorage.SerializeToXml(Configs, ".\\Config\\CCDCountConfig.xml");
- }
- }
- private void SettingForm_Load(object sender, EventArgs e)
- {
- CameraConfig cameraConfig = null;
- ShuLiConfigClass shuLiConfig = null;
- for (int i = 0; i < LoadLsMainThread.Count; i++)
- {
- LoadLsMainThread[i].GetConfigValue(out cameraConfig, out shuLiConfig);
- LoadConfigs.Add((cameraConfig,shuLiConfig));
- }
- InitIdentifyCountCobBox();
- InitCameraCobox();
- radioButton1.Checked = true;
- }
- private void InitIdentifyCountCobBox()
- {
- IdentifyCountCobBox.Items.Clear();
- for (int i = 1; i <= 4; i++)
- {
- IdentifyCountCobBox.Items.Add(i);
- }
- IdentifyCountCobBox.SelectedIndex = 0;
- }
- private void InitCameraCobox()
- {
- List<CameraInfoClass> CameraInfoList = new List<CameraInfoClass>();
- CameraClass.GetCameraList(out CameraInfoList);
- if (CameraInfoList.Count > 0)
- {
- CameraConbox.Items.Clear();
- CameraConbox.Items.Add("请选择相机");
- foreach (var item in CameraInfoList)
- {
- CameraConbox.Items.Add(item.DeviceName + "_" + item.DeviceSN);
- }
- CameraConbox.SelectedIndex = 0;
- }
- }
- private void IdentifyCountCobBox_SelectedIndexChanged(object sender, EventArgs e)
- {
- TabPanel.Controls.Clear();
- Configs.Clear();
- NowLoadLsMianThread.Clear();
- string ButtonText = string.Empty;
- for (int i = 1; i <= (int)IdentifyCountCobBox.SelectedItem; i++)
- {
- ButtonText = "数粒" + i;
- //创建一个按钮,加载与此相机绑定的配置
- if (i <= LoadConfigs.Count())
- {
- string camername = LoadConfigs[i - 1].CameraConfigValue.CameraName;
- if(camername == string.Empty) camername = "数粒" + i;
- ButtonText = camername;
- //重新的CameraNo排序
- LoadConfigs[i-1].CameraConfigValue.CamerNo = i-1;
- //将从外加载的配置文件复制进当前加载的配置文件
- Configs.Add(LoadConfigs[i-1]);
- }
- //没有与此相机绑定的配置文件,创建一个配置实例
- else
- {
- Configs.Add((
- new CameraConfig()
- {
- CamerNo = i-1
- },
- new ShuLiConfigClass()
- ));
- }
- if (i <= LoadLsMainThread.Count())
- {
- NowLoadLsMianThread.Add(LoadLsMainThread[i-1]);
- }
- else
- {
- NowLoadLsMianThread.Add(new MainThreadClass(
- Configs[i - 1].ShuLiConfigValue,
- Configs[i - 1].CameraConfigValue
- ));
- }
- Button button = new Button()
- {
- Text = ButtonText,
- Name = string.Format("ShuLiConfigBtn_{0}", i-1),
- Size = new Size(120, TabPanel.Height - 1),
- Location = new Point(120 * (i - 1), 0)
- };
- if(i <= Configs.Count())
- {
- button.Click += ShuLiConfigBtn_Click;
- }
- TabPanel.Controls.Add(button);
- }
- }
- private void ShuLiConfigBtn_Click(object sender, EventArgs e)
- {
- string buttonName = string.Empty;
- if (sender is Button thisbutton)
- {
- buttonName = thisbutton.Name;
- }
- if (buttonName != string.Empty)
- {
- Nowindex = Convert.ToInt32(buttonName.Split('_')[1]);
- }
- if (Nowindex < Configs.Count() && Nowindex != -1)
- {
- LoadMainThread = NowLoadLsMianThread[Nowindex];
- NowLoadConfig = Configs[Nowindex];
- LoadConfigToForm(Configs[Nowindex]);
- }
- }
- private void LoadConfigToForm((CameraConfig,ShuLiConfigClass) LoadConfig)
- {
- if(LoadMainThread != null)
- {
- //判断是否已经绑定相机
- if(LoadMainThread.ThisCameraSN!=string.Empty)
- {
- //相机选择框尝试选择绑定的相机
- CameraConbox.SelectedItem = LoadMainThread.ThisCameraDevice + "_" + LoadMainThread.ThisCameraSN;
- }
- if(CameraConbox.SelectedItem.ToString()!=string.Empty&&CameraConbox.SelectedItem.ToString()!= "请选择相机")
- {
- ExposureTimeTbx.Text = NowLoadConfig.CameraConfigValue.ExposureTimeValue.ToString();
- AcquistionLineRateLabTbx.Text = NowLoadConfig.CameraConfigValue.AcquistionLineRateValue.ToString();
- ImageWidthTbx.Text = NowLoadConfig.CameraConfigValue.Width.ToString();
- ImageHeightTbx.Text = NowLoadConfig.CameraConfigValue.Height.ToString();
- CamUserNameTbx.Text = NowLoadConfig.CameraConfigValue.CameraName;
- CamOffsetXTbx.Text = NowLoadConfig.CameraConfigValue.OffsetX.ToString();
- }
- RegionThresholdTbx.Text = NowLoadConfig.ShuLiConfigValue.RegionThreshold.ToString();
- ChannelTbx.Text = NowLoadConfig.ShuLiConfigValue.Channel.ToString();
- NoiseFilterTbx.Text = NowLoadConfig.ShuLiConfigValue.NoiseFilter_Threshold.ToString();
- //切换识别模式
- switch(NowLoadConfig.ShuLiConfigValue.PandingCode)
- {
- case -1:
- radioButton1.Checked = true;
- break;
- case 0:
- radioButton2.Checked = true;
- break;
- case 1:
- radioButton3.Checked = true;
- break;
- case 2:
- radioButton4.Checked = true;
- break;
- }
- }
- }
- private void SaveAllConfig_Click(object sender, EventArgs e)
- {
- SaveConfig();
- }
- private void radioButton1_CheckedChanged(object sender, EventArgs e)
- {
- if(radioButton1.Checked)
- {
- PanDuanParaPanel.Controls.Clear();
- PanDuanParaPanel.Height = 10;
- if(NowLoadConfig == (null,null)) return;
- NowLoadConfig.ShuLiConfigValue.PandingCode = -1;
- Configs[Nowindex] = NowLoadConfig;
- }
- }
- private void radioButton2_CheckedChanged(object sender, EventArgs e)
- {
- if (radioButton2.Checked)
- {
- PanDuanParaPanel.Controls.Clear();
- PanDuanParaPanel.Height = 150;
- if (NowLoadConfig == (null, null)) return;
- Label label5 = new Label()
- {
- Text = "合格粒宽范围:",
- Location = new Point(10, 10),
- AutoSize = true
- };
- PanDuanParaPanel.Controls.Add(label5);
- TextBox textBox1 = new TextBox()
- {
- Location = new Point(10, 30),
- Name = "MIN_OBJECT_WIDTH_TBX",
- Width = 50,
- Text = NowLoadConfig.ShuLiConfigValue.MIN_OBJECT_WIDTH.ToString(),
- };
- PanDuanParaPanel.Controls.Add(textBox1);
- Label label2 = new Label()
- {
- Text = "-",
- Location = new Point(75, 35),
- AutoSize = true
- };
- PanDuanParaPanel.Controls.Add(label2);
- TextBox textBox2 = new TextBox()
- {
- Name = "MAX_OBJECT_WIDTH_TBX",
- Location = new Point(100, 30),
- Width = 50,
- Text = NowLoadConfig.ShuLiConfigValue.MAX_OBJECT_WIDTH.ToString(),
- };
- PanDuanParaPanel.Controls.Add(textBox2);
- Label label3 = new Label()
- {
- Text = "合格粒高范围:",
- Location = new Point(10, 60),
- AutoSize = true
- };
- PanDuanParaPanel.Controls.Add(label3);
- TextBox textBox3 = new TextBox()
- {
- Location = new Point(10, 80),
- Name = "MIN_OBJECT_HEIGHT_TBX",
- Width = 50,
- Text = NowLoadConfig.ShuLiConfigValue.MIN_OBJECT_HEIGHT.ToString(),
- };
- PanDuanParaPanel.Controls.Add(textBox3);
- Label label4 = new Label()
- {
- Text = "-",
- Location = new Point(75, 85),
- AutoSize = true
- };
- PanDuanParaPanel.Controls.Add(label4);
- TextBox textBox4 = new TextBox()
- {
- Location = new Point(100, 80),
- Name = "MAX_OBJECT_HEIGHT_TBX",
- Width = 50,
- Text = NowLoadConfig.ShuLiConfigValue.MAX_OBJECT_HEIGHT.ToString(),
- };
- PanDuanParaPanel.Controls.Add(textBox4);
- NowLoadConfig.ShuLiConfigValue.PandingCode = 1;
- Configs[Nowindex] = NowLoadConfig;
- }
- }
- private void radioButton3_CheckedChanged(object sender, EventArgs e)
- {
- if (radioButton3.Checked)
- {
- PanDuanParaPanel.Controls.Clear();
- PanDuanParaPanel.Height = 100;
- if (NowLoadConfig == (null, null)) return;
- Label label5 = new Label()
- {
- Text = "合格粒面积范围:",
- Location = new Point(10, 10),
- AutoSize = true
- };
- PanDuanParaPanel.Controls.Add(label5);
- TextBox textBox1 = new TextBox()
- {
- Location = new Point(100, 30),
- Name = "MaxArea_TBX",
- Width = 50,
- Text = NowLoadConfig.ShuLiConfigValue.MaxArea.ToString(),
- };
- PanDuanParaPanel.Controls.Add(textBox1);
- Label label2 = new Label()
- {
- Text = "-",
- Location = new Point(75, 35),
- AutoSize = true
- };
- PanDuanParaPanel.Controls.Add(label2);
- TextBox textBox2 = new TextBox()
- {
- Name = "MinArea_TBX",
- Location = new Point(10, 30),
- Width = 50,
- Text = NowLoadConfig.ShuLiConfigValue.MinArea.ToString(),
- };
- PanDuanParaPanel.Controls.Add(textBox2);
- NowLoadConfig.ShuLiConfigValue.PandingCode = 2;
- Configs[Nowindex] = NowLoadConfig;
- }
- }
- private void radioButton4_CheckedChanged(object sender, EventArgs e)
- {
- if (radioButton4.Checked)
- {
- PanDuanParaPanel.Controls.Clear();
- PanDuanParaPanel.Height = 160;
- if (NowLoadConfig == (null, null)) return;
- Label label5 = new Label()
- {
- Text = "合格粒宽范围:",
- Location = new Point(10, 10),
- AutoSize = true
- };
- PanDuanParaPanel.Controls.Add(label5);
- TextBox textBox1 = new TextBox()
- {
- Location = new Point(10, 30),
- Name = "MIN_OBJECT_WIDTH_TBX",
- Width = 50,
- Text = NowLoadConfig.ShuLiConfigValue.MIN_OBJECT_WIDTH.ToString(),
- };
- PanDuanParaPanel.Controls.Add(textBox1);
- Label label2 = new Label()
- {
- Text = "-",
- Location = new Point(75, 35),
- AutoSize = true
- };
- PanDuanParaPanel.Controls.Add(label2);
- TextBox textBox2 = new TextBox()
- {
- Name = "MAX_OBJECT_WIDTH_TBX",
- Location = new Point(100, 30),
- Width = 50,
- Text = NowLoadConfig.ShuLiConfigValue.MAX_OBJECT_WIDTH.ToString(),
- };
- PanDuanParaPanel.Controls.Add(textBox2);
- Label label3 = new Label()
- {
- Text = "合格粒高范围:",
- Location = new Point(10, 60),
- AutoSize = true
- };
- PanDuanParaPanel.Controls.Add(label3);
- TextBox textBox3 = new TextBox()
- {
- Location = new Point(10, 80),
- Name = "MIN_OBJECT_HEIGHT_TBX",
- Width = 50,
- Text = NowLoadConfig.ShuLiConfigValue.MIN_OBJECT_HEIGHT.ToString(),
- };
- PanDuanParaPanel.Controls.Add(textBox3);
- Label label4 = new Label()
- {
- Text = "-",
- Location = new Point(75, 85),
- AutoSize = true
- };
- PanDuanParaPanel.Controls.Add(label4);
- TextBox textBox4 = new TextBox()
- {
- Location = new Point(100, 80),
- Name = "MAX_OBJECT_HEIGHT_TBX",
- Width = 50,
- Text = NowLoadConfig.ShuLiConfigValue.MAX_OBJECT_HEIGHT.ToString(),
- };
- PanDuanParaPanel.Controls.Add(textBox4);
- Label label6 = new Label()
- {
- Text = "合格粒面积范围:",
- Location = new Point(10, 110),
- AutoSize = true
- };
- PanDuanParaPanel.Controls.Add(label6);
- TextBox textBox5 = new TextBox()
- {
- Location = new Point(10, 130),
- Name = "MinArea_TBX",
- Width = 50,
- Text = NowLoadConfig.ShuLiConfigValue.MinArea.ToString(),
- };
- PanDuanParaPanel.Controls.Add(textBox5);
- Label label7 = new Label()
- {
- Text = "-",
- Location = new Point(75, 135),
- AutoSize = true
- };
- PanDuanParaPanel.Controls.Add(label7);
- TextBox textBox6 = new TextBox()
- {
- Name = "MaxArea_TBX",
- Location = new Point(100, 130),
- Width = 50,
- Text = NowLoadConfig.ShuLiConfigValue.MaxArea.ToString(),
- };
- PanDuanParaPanel.Controls.Add(textBox6);
- NowLoadConfig.ShuLiConfigValue.PandingCode = 3;
- Configs[Nowindex] = NowLoadConfig;
- }
- }
- private void CameraConbox_SelectedIndexChanged(object sender, EventArgs e)
- {
- string ThisItemSN = CameraConbox.SelectedItem.ToString();
- if(LoadMainThread == null || ThisItemSN == LoadMainThread.ThisCameraDevice + "_" + LoadMainThread.ThisCameraSN) return;
- if (ThisItemSN != string.Empty && ThisItemSN != "请选择相机")
- {
- try
- {
- ThisItemSN = ThisItemSN.Split('_')[1];
- }
- catch (Exception)
- {
- ThisItemSN = string.Empty;
- }
- if (ThisItemSN == string.Empty) return;
- if (LoadMainThread.CameraRunStatic)
- {
- var confirmResult = MessageBox.Show("检测到正在识别,切换相机需要关闭识别,是否继续切换",
- "切换确认", MessageBoxButtons.YesNo);
- if (confirmResult == DialogResult.No)
- {
- CameraConbox.SelectedItem = LoadMainThread.ThisCameraDevice + "_" + LoadMainThread.ThisCameraSN;
- return;
- }
- LoadMainThread.StopMianThread();
- }
- if (LoadMainThread.ReLoadCamera(ThisItemSN))
- {
- LoadMainThread.GetCameraConfig(out CameraConfig CameraConfig);
- if (CameraConfig != null)
- {
- ExposureTimeTbx.Text = CameraConfig.ExposureTimeValue.ToString();
- NowLoadConfig.CameraConfigValue.ExposureTimeValue = CameraConfig.ExposureTimeValue;
- AcquistionLineRateLabTbx.Text = CameraConfig.AcquistionLineRateValue.ToString();
- NowLoadConfig.CameraConfigValue.AcquistionLineRateValue = CameraConfig.AcquistionLineRateValue;
- ImageWidthTbx.Text = CameraConfig.Width.ToString();
- NowLoadConfig.CameraConfigValue.Width = CameraConfig.Width;
- ImageHeightTbx.Text = CameraConfig.Height.ToString();
- NowLoadConfig.CameraConfigValue.Height = CameraConfig.Height;
- CamUserNameTbx.Text = CameraConfig.CameraName;
- NowLoadConfig.CameraConfigValue.CameraName = CameraConfig.CameraName;
- CamOffsetXTbx.Text = CameraConfig.OffsetX.ToString();
- NowLoadConfig.CameraConfigValue.OffsetX = CameraConfig.OffsetX;
- NowLoadConfig.CameraConfigValue.CameraSNNum = CameraConfig.CameraSNNum;
- NowLoadConfig.CameraConfigValue.CameraName = CameraConfig.CameraName;
- NowLoadConfig.CameraConfigValue.DeviceName = CameraConfig.DeviceName;
- NowLoadConfig.ShuLiConfigValue.CameraSN = CameraConfig.CameraSNNum;
- Configs[Nowindex] = NowLoadConfig;
- }
- }
- else
- {
- MessageBox.Show("切换相机失败!");
- CameraConbox.SelectedItem = LoadMainThread.ThisCameraDevice + "_" + LoadMainThread.ThisCameraSN;
- return;
- }
- }
- else
- {
- if (LoadMainThread.CameraRunStatic)
- {
- var confirmResult = MessageBox.Show("检测到正在识别,切换相机需要关闭识别,是否继续切换",
- "切换确认", MessageBoxButtons.YesNo);
- if (confirmResult == DialogResult.No)
- {
- CameraConbox.SelectedItem = LoadMainThread.ThisCameraDevice + "_" + LoadMainThread.ThisCameraSN;
- return;
- }
- LoadMainThread.StopMianThread();
- }
- else
- {
- LoadMainThread.DisposeCamera();
- }
- ExposureTimeTbx.Text = string.Empty;
- NowLoadConfig.CameraConfigValue.ExposureTimeValue = 0;
- AcquistionLineRateLabTbx.Text = string.Empty;
- NowLoadConfig.CameraConfigValue.AcquistionLineRateValue = 0;
- ImageWidthTbx.Text = string.Empty;
- NowLoadConfig.CameraConfigValue.Width = 0;
- ImageHeightTbx.Text = string.Empty;
- NowLoadConfig.CameraConfigValue.Height = 0;
- CamUserNameTbx.Text = string.Empty;
- NowLoadConfig.CameraConfigValue.CameraName = string.Empty;
- CamOffsetXTbx.Text = string.Empty;
- NowLoadConfig.CameraConfigValue.OffsetX = 0;
- NowLoadConfig.CameraConfigValue.CameraSNNum = string.Empty;
- NowLoadConfig.CameraConfigValue.CameraName = string.Empty;
- NowLoadConfig.CameraConfigValue.DeviceName = string.Empty;
- NowLoadConfig.ShuLiConfigValue.CameraSN = string.Empty;
- Configs[Nowindex] = NowLoadConfig;
- }
- }
- }
- }
|