Files
laatzen/Common/ProductionUiCordonel/MultiModeChild.xaml.cs
T

138 lines
3.8 KiB
C#

using ProductionUiCordonel.Model;
using System;
using System.IO.Ports;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Threading;
namespace ProductionUiCordonel
{
/// <summary>
/// Interaktionslogik für MultiModeChild.xaml
/// </summary>
public partial class MultiModeChild : Window, IDisposable
{
public IMultiModeChildViewModel ViewModel;
public Boolean UseDefaultPos { get; internal set; } = true;
public event EventHandler PosChanged;
public MultiModeChild(IMultiModeChildViewModel viewModel)
{
InitializeComponent();
ViewModel = viewModel;
this.DataContext = ViewModel;
if (ViewModel is PressureMultiModeViewModel pressureModel)
{
PressureControl.setViewModel(pressureModel);
this.Left = 0;
this.Top = 250;
this.Height = SystemParameters.PrimaryScreenHeight - 300;
this.Width = SystemParameters.PrimaryScreenWidth / 2;
}
if (ViewModel is PickingMultiModeViewModel pickingModel)
{
PickingControl.setViewModel(pickingModel);
this.Left = SystemParameters.VirtualScreenLeft;
this.Top = SystemParameters.VirtualScreenTop;
this.Height = SystemParameters.VirtualScreenHeight;
this.Width = SystemParameters.VirtualScreenWidth - SystemParameters.PrimaryScreenWidth;
}
if (ViewModel is MarriageMultiModeViewModel marriageModel)
{
MarriageControl.setViewModel(marriageModel);
this.Left = SystemParameters.PrimaryScreenWidth / 2;
this.Top = 250;
this.Height = SystemParameters.PrimaryScreenHeight - 300;
this.Width = SystemParameters.PrimaryScreenWidth / 2;
}
}
internal void StartTextInputListener(String port, CancellationToken cancellation)
{
if (port == null)
{
return;
}
var task = new Task(() =>
{
var a = new SerialPort(port);
a.Open();
a.NewLine = "\r";
while (true)
{
if (cancellation.IsCancellationRequested)
{
break;
}
else
{
var resText = a.ReadLine();
this.Dispatcher.Invoke(DispatcherPriority.Normal,
new Action(() =>
{
ViewModel.InputText(resText);
}
));
}
}
}, cancellation);
task.Start();
}
internal void InputText(String text)
{
ViewModel.InputText(text);
}
private void BtnPresueFailed_Click(Object sender, RoutedEventArgs e)
{
}
private void TxtPresurePcbId_TextChanged(Object sender, TextChangedEventArgs e)
{
}
private void PressureControl_OnBarcodeInput(Object sender, Event.StringArgs e)
{
InputText(e.Content);
}
public void Dispose()
{
ViewModel.Dispose();
}
private void Button_Click(Object sender, RoutedEventArgs e)
{
if (sender is Button btn)
{
btn.Content = $"POS L{this.Left},T{this.Top },H{this.Height},W{this.Width}";
}
}
private void Button_Click_1(Object sender, RoutedEventArgs e)
{
PosChanged?.Invoke(this, EventArgs.Empty);
}
}
}