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();
}
}
}