using CCDCount.DLL; using CCDCount.MODEL.CameraClass; using CCDCount.MODEL.ConfigModel; using System; using System.Collections.Generic; using System.IO; using System.Windows; using System.Windows.Controls; using static System.Windows.Forms.VisualStyles.VisualStyleElement.Window; namespace CCDCountWpf.WpfPage { /// /// SettingPage.xaml 的交互逻辑 /// public partial class SettingPage : Page { public SettingPage() { InitializeComponent(); DataContext = ShowMessageBus.ShowBinding; Cam1Btn_Click(null, null); InitFormationItems(); } private void Page_Loaded(object sender, RoutedEventArgs e) { CamNumCoBox.Items.Add("单相机"); CamNumCoBox.Items.Add("双相机"); CamNumCoBox.Items.Add("三相机"); CamNumCoBox.Items.Add("四相机"); CamNumCoBox.SelectedIndex = 0; if (MessageBus.NowSettingLoadMainThread != null) { CamSelectConBox.SelectedValue = MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum; if(MessageBus.NowSettingLoadMainThread.shuLiConfig.PandingCode == -1) { CheckModel1RadBtn.IsChecked = true; } else if(MessageBus.NowSettingLoadMainThread.shuLiConfig.PandingCode == 0) { CheckModel2RadBtn.IsChecked = true; } else if (MessageBus.NowSettingLoadMainThread.shuLiConfig.PandingCode == 1) { CheckModel3RadBtn.IsChecked = true; } else if (MessageBus.NowSettingLoadMainThread.shuLiConfig.PandingCode == 2) { CheckModel4RadBtn.IsChecked = true; } } else { CamSelectConBox.SelectedValue = ""; } } private void CamNumCoBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { if(CamNumCoBox.SelectedItem.ToString() == "单相机") { Cam1Btn.Visibility = Visibility.Visible; Cam2Btn.Visibility = Visibility.Collapsed; Cam3Btn.Visibility = Visibility.Collapsed; Cam4Btn.Visibility = Visibility.Collapsed; if(!(MessageBus.SeetingNowLoadInMaThreadsIndex>0&&MessageBus.SeetingNowLoadInMaThreadsIndex < 1)) { Cam1Btn_Click(null, null); } } else if(CamNumCoBox.SelectedItem.ToString() == "双相机") { Cam1Btn.Visibility = Visibility.Visible; Cam2Btn.Visibility = Visibility.Visible; Cam3Btn.Visibility = Visibility.Collapsed; Cam4Btn.Visibility = Visibility.Collapsed; if (!(MessageBus.SeetingNowLoadInMaThreadsIndex > 0 && MessageBus.SeetingNowLoadInMaThreadsIndex < 2)) { Cam1Btn_Click(null, null); } } else if(CamNumCoBox.SelectedItem.ToString() == "三相机") { Cam1Btn.Visibility = Visibility.Visible; Cam2Btn.Visibility = Visibility.Visible; Cam3Btn.Visibility = Visibility.Visible; Cam4Btn.Visibility = Visibility.Collapsed; if (!(MessageBus.SeetingNowLoadInMaThreadsIndex > 0 && MessageBus.SeetingNowLoadInMaThreadsIndex < 3)) { Cam1Btn_Click(null, null); } } else if(CamNumCoBox.SelectedItem.ToString() == "四相机") { Cam1Btn.Visibility = Visibility.Visible; Cam2Btn.Visibility = Visibility.Visible; Cam3Btn.Visibility = Visibility.Visible; Cam4Btn.Visibility = Visibility.Visible; } } private void Cam1Btn_Click(object sender, RoutedEventArgs e) { if (MessageBus.MainThreadS == null|| MessageBus.MainThreadS.Count<1|| MessageBus.MainThreadS[0] == null) return; MessageBus.SeetingNowLoadInMaThreadsIndex = 0; MessageBus.NowSettingLoadMainThread = MessageBus.MainThreadS[0]; } private void Cam2Btn_Click(object sender, RoutedEventArgs e) { //MessageBus.ShowBondage.ExposureTimeValue = "300"; MessageBox.Show($"NowThread.ETime:{MessageBus.NowSettingLoadMainThread.cameraConfig.ExposureTimeValue},Thread[0].ETime:{MessageBus.MainThreadS[0].cameraConfig.ExposureTimeValue}"); } private void CameraSettingBtn_Click(object sender, RoutedEventArgs e) { CameraSettingGrid.Visibility = Visibility.Visible; ShuLiSettingGrid.Visibility = Visibility.Collapsed; } private void ShuLiSettingBtn_Click(object sender, RoutedEventArgs e) { CameraSettingGrid.Visibility = Visibility.Collapsed; ShuLiSettingGrid.Visibility = Visibility.Visible; } private void CamListFlushBtn_Click(object sender, RoutedEventArgs e) { List CameraInfoList = new List(); MessageBus.CameraClass.GetCameraList(out CameraInfoList); if (CameraInfoList.Count > 0) { ShowMessageBus.ShowBinding.CameraItems.Clear(); ShowMessageBus.ShowBinding.CameraItems.Add(new CameraCoboxItem() { Name = "请选择相机", SNValue = "" }); foreach (var item in CameraInfoList) { ShowMessageBus.ShowBinding.CameraItems.Add(new CameraCoboxItem() { Name = item.DeviceName + "_" + item.DeviceSN, SNValue = item.DeviceSN }); } CamSelectConBox.SelectedValue = MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum; } } private void CamSelectConBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { if(ShowMessageBus.ShowBinding.CameraItems.Count == 0) return; string ThisItemSN = ShowMessageBus.ShowBinding.CameraSNNum; if (MessageBus.NowSettingLoadMainThread == null || ThisItemSN == MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum) return; if (ThisItemSN != string.Empty && ThisItemSN != null) { if (MessageBus.NowSettingLoadMainThread.CameraRunStatic) { var confirmResult = MessageBox.Show("检测到正在识别,切换相机需要关闭识别,是否继续切换", "切换确认", MessageBoxButton.YesNo); if (confirmResult == MessageBoxResult.No) { CamSelectConBox.SelectedValue = MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum; return; } MessageBus.NowSettingLoadMainThread.StopMianThread(); } if (MessageBus.NowSettingLoadMainThread.ReLoadCamera(ThisItemSN)) { MessageBus.NowSettingLoadMainThread.GetCameraConfig(); ShowMessageBus.ShowBinding.ImageWidth = MessageBus.NowSettingLoadMainThread.cameraConfig.Width.ToString(); ShowMessageBus.ShowBinding.CamUserName = MessageBus.NowSettingLoadMainThread.cameraConfig.CameraName; ShowMessageBus.ShowBinding.CamOffsetX = MessageBus.NowSettingLoadMainThread.cameraConfig.OffsetX.ToString(); ShowMessageBus.ShowBinding.ExposureTimeValue = MessageBus.NowSettingLoadMainThread.cameraConfig.ExposureTimeValue.ToString(); ShowMessageBus.ShowBinding.AcquistionLineRate = MessageBus.NowSettingLoadMainThread.cameraConfig.AcquistionLineRateValue.ToString(); ShowMessageBus.ShowBinding.CameraSNNum = ThisItemSN; } else { MessageBox.Show("切换相机失败!"); CamSelectConBox.SelectedItem = MessageBus.NowSettingLoadMainThread.cameraConfig.DeviceName + "_" + MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum; return; } } else { if (MessageBus.NowSettingLoadMainThread.CameraRunStatic) { var confirmResult = MessageBox.Show("检测到正在识别,切换相机需要关闭识别,是否继续切换", "切换确认", MessageBoxButton.YesNo); if (confirmResult == MessageBoxResult.No) { CamSelectConBox.SelectedValue = MessageBus.NowSettingLoadMainThread.cameraConfig.CameraSNNum; return; } MessageBus.NowSettingLoadMainThread.StopMianThread(); } else { MessageBus.NowSettingLoadMainThread.DisposeCamera(); } ShowMessageBus.ShowBinding.ImageWidth = "0"; ShowMessageBus.ShowBinding.CamUserName = string.Empty; ShowMessageBus.ShowBinding.CamOffsetX = "0"; ShowMessageBus.ShowBinding.ExposureTimeValue = "0"; ShowMessageBus.ShowBinding.AcquistionLineRate = "0"; ShowMessageBus.ShowBinding.CameraSNNum = null; } } private void CheckModel1RadBtn_Checked(object sender, RoutedEventArgs e) { ShowMessageBus.ShowBinding.PandingCode = "-1"; WHParaPanel.Visibility = Visibility.Collapsed; AreaParaPanel.Visibility = Visibility.Collapsed; } private void CheckModel2RadBtn_Checked(object sender, RoutedEventArgs e) { ShowMessageBus.ShowBinding.PandingCode = "0"; WHParaPanel.Visibility = Visibility.Visible; AreaParaPanel.Visibility = Visibility.Collapsed; } private void CheckModel3RadBtn_Checked(object sender, RoutedEventArgs e) { ShowMessageBus.ShowBinding.PandingCode = "1"; WHParaPanel.Visibility = Visibility.Collapsed; AreaParaPanel.Visibility = Visibility.Visible; } private void CheckModel4RadBtn_Checked(object sender, RoutedEventArgs e) { ShowMessageBus.ShowBinding.PandingCode = "2"; WHParaPanel.Visibility = Visibility.Visible; AreaParaPanel.Visibility = Visibility.Visible; } //private void SaveAllConfigBtn_Click(object sender, RoutedEventArgs e) //{ // List SaveConfig = new List(); // if(MessageBus.MainThreadS.Count <= 0) // { // return; // } // foreach (var item in MessageBus.MainThreadS) // { // SaveConfig.Add(new SaveConfigModel() // { // CameraConfig = item.cameraConfig, // ShuLiConfigClass = item.shuLiConfig // }); // } // if (!Directory.Exists(".\\Config\\")) Directory.CreateDirectory(".\\Config\\"); // { // XmlStorage.SerializeToXml(SaveConfig, ".\\Config\\CCDCountConfig.xml"); // } //} private void ReadFormulationBtn_Click(object sender, RoutedEventArgs e) { string folderPath = $"{AppDomain.CurrentDomain.BaseDirectory}Formulations\\{FormulationCoBox.SelectedItem}.xml"; if (!File.Exists(folderPath)) { MessageBox.Show("指定文件不存在,请选择一个正确的配方"); return; } try { FormulationConfigClass formulationConfigClass = null; formulationConfigClass = XmlStorage.DeserializeFromXml(folderPath); LoadFormulation(formulationConfigClass); MessageBus.NowSettingLoadMainThread.FormulationName = formulationConfigClass.FormulationName; MessageBus.NowSettingLoadMainThread.IsLoadFormulation = true; MessageBox.Show("加载成功"); } catch (Exception ex) { MessageBox.Show($"读取文件时出错:{ex.Message}"); } } /// /// 初始化配方列表 /// private void InitFormationItems() { string folderPath = $"{AppDomain.CurrentDomain.BaseDirectory}Formulations"; if (!Directory.Exists(folderPath)) { // 创建文件夹 Directory.CreateDirectory(folderPath); } try { // 获取文件列表(包含子目录) string[] files = Directory.GetFiles(folderPath, "*.*", SearchOption.AllDirectories); ShowMessageBus.ShowBinding.FormulationItems.Clear(); foreach (string file in files) { ShowMessageBus.ShowBinding.FormulationItems.Add(Path.GetFileNameWithoutExtension(file)); } if(ShowMessageBus.ShowBinding.FormulationName!=null&&ShowMessageBus.ShowBinding.FormulationName!=string.Empty) { try { FormulationCoBox.SelectedItem = ShowMessageBus.ShowBinding.FormulationName; } catch { } } } catch { } } private void SaveFormulationBtn_Click(object sender, RoutedEventArgs e) { if (string.IsNullOrEmpty(ShowMessageBus.ShowBinding.FormulationName)) { MessageBox.Show("请输入配方名称!"); return; } FormulationConfigClass formulationConfigClass = FormulationClass.InitFormulation( MessageBus.NowSettingLoadMainThread.cameraConfig, MessageBus.NowSettingLoadMainThread.shuLiConfig); formulationConfigClass.FormulationName = ShowMessageBus.ShowBinding.FormulationName; string folderPath = $"{AppDomain.CurrentDomain.BaseDirectory}Formulations"; string FilePath = folderPath + "\\" + ShowMessageBus.ShowBinding.FormulationName + ".xml"; if (File.Exists(FilePath)) { var confirmResult = MessageBox.Show("配方已存在,是否覆盖?", "保存确认", MessageBoxButton.YesNo); if (confirmResult == MessageBoxResult.No) { return; } } if (!Directory.Exists(folderPath)) Directory.CreateDirectory(folderPath); { XmlStorage.SerializeToXml(formulationConfigClass , FilePath); InitFormationItems(); MessageBus.NowSettingLoadMainThread.FormulationName = formulationConfigClass.FormulationName; MessageBus.NowSettingLoadMainThread.IsLoadFormulation = true; MessageBox.Show("保存成功"); } } /// /// 加载配方 /// /// private void LoadFormulation(FormulationConfigClass FormulationConfig) { ShowMessageBus.ShowBinding.AcquistionLineRate = FormulationConfig.AcquistionLineRateValue.ToString(); ShowMessageBus.ShowBinding.ExposureTimeValue = FormulationConfig.ExposureTimeValue.ToString(); ShowMessageBus.ShowBinding.Channel = FormulationConfig.Channel.ToString(); ShowMessageBus.ShowBinding.FormulationName = FormulationConfig.FormulationName; ShowMessageBus.ShowBinding.MAX_OBJECT_LENGTH = FormulationConfig.MAX_Object_LENGTH.ToString(); ShowMessageBus.ShowBinding.MIN_OBJECT_LENGTH = FormulationConfig.MIN_Object_LENGTH.ToString(); ShowMessageBus.ShowBinding.PandingCode = FormulationConfig.PandingCode.ToString(); ShowMessageBus.ShowBinding.RegionThreshold = FormulationConfig.RegionThreshold.ToString(); } private void ParametricTrainingBtn_Click(object sender, RoutedEventArgs e) { var paravalue = MessageBus.NowSettingLoadMainThread.ParameterTrain(); ShowMessageBus.ShowBinding.NoiseFilter = paravalue.NoiseFilterThreshold.ToString(); ShowMessageBus.ShowBinding.MaxArea = ((int)(paravalue.MaxArea*1.1)).ToString(); ShowMessageBus.ShowBinding.MinArea = ((int)(paravalue.MinArea*0.9)).ToString(); ShowMessageBus.ShowBinding.MAX_OBJECT_LENGTH = ((int)(paravalue.MaxLength*1.1)).ToString(); ShowMessageBus.ShowBinding.MIN_OBJECT_LENGTH = ((int)(paravalue.MinLength*0.9)).ToString(); } } }