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 System.Windows.Data;
using System.Windows.Input;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.Window;
namespace CCDCountWpf.WpfPage
{
///
/// SettingPage.xaml 的交互逻辑
///
public partial class SettingPage : Page
{
public SettingPage()
{
InitializeComponent();
DataContext = ShowMessageBus.ShowBinding;
}
private void Page_Loaded(object sender, RoutedEventArgs e)
{
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 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;
string ThisItemSN = CamSelectConBox.SelectedValue.ToString();
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.ImageHeight = MessageBus.NowSettingLoadMainThread.cameraConfig.Height.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.ImageHeight = "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 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)
{
if(string.IsNullOrEmpty(KeLiW_TBX.Text)||string.IsNullOrEmpty(KeLiL_TBX.Text))
{
MessageBox.Show("请输入标准颗粒的宽高");
return;
}
int KeliW = Convert.ToInt32(KeLiW_TBX.Text);
int KeliL = Convert.ToInt32(KeLiL_TBX.Text);
var paravalue = MessageBus.NowSettingLoadMainThread.ParameterTrain(KeliW, KeliL);
if(paravalue!=null)
{
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)).ToString();
ShowMessageBus.ShowBinding.MIN_OBJECT_LENGTH = ((int)(paravalue.MinLength)).ToString();
}
else
{
MessageBox.Show("Train Error");
}
}
private void TextBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
TextBox textBox = sender as TextBox;
if (textBox != null)
{
// 强制更新源数据
BindingExpression bindingExpression = textBox.GetBindingExpression(TextBox.TextProperty);
bindingExpression.UpdateSource();
}
}
}
}
}