From dbfde8706313c147a28b16bcc7e7fef158d930bb Mon Sep 17 00:00:00 2001 From: Roy Date: Sat, 10 Feb 2018 23:23:29 +0200 Subject: Implemented GPIO Controller. --- .../ViewModels/MachineTechViewVM.cs | 35 ++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels') diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs index 8ed8a4a80..21d2c50c2 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs @@ -116,6 +116,15 @@ namespace Tango.MachineStudio.Technician.ViewModels } } } + else if (item.GetType() == typeof(IOItem)) + { + IOItem ioItem = item as IOItem; + + if (ioItem.Port < data.GPIO.Count) + { + ioItem.EffectiveValue = data.GPIO[ioItem.Port]; + } + } else if (item.GetType() == typeof(MeterItem)) { MeterItem meterItem = item as MeterItem; @@ -260,6 +269,13 @@ namespace Tango.MachineStudio.Technician.ViewModels Elements.Add(editor); InitDispenserItem(dispenserItem); } + else if (SelectedTechItem is IOItem) + { + var ioItem = new IOItem(0); + IOElementEditor editor = new IOElementEditor(ioItem, bounds); + Elements.Add(editor); + InitIOItem(ioItem); + } } public void OnElementsRemoved(List elements) @@ -366,13 +382,13 @@ namespace Tango.MachineStudio.Technician.ViewModels { Code = item.TechMotor.Code }) - .Subscribe((response) => + .Subscribe((response) => { item.HomingMaximumProgress = response.Message.MaxProgress; item.HomingProgress = response.Message.Progress; - }, () => + }, () => { item.IsHoming = false; @@ -461,5 +477,20 @@ namespace Tango.MachineStudio.Technician.ViewModels } }; } + + private void InitIOItem(IOItem item) + { + item.ValueChanged += async (x, value) => + { + try + { + await MachineOperator.SetGPIOState(new SetGPIOStateRequest() { Port = item.Port, Value = value }); + } + catch (Exception ex) + { + //TODO: Show Exception. + } + }; + } } } -- cgit v1.3.1