io commander
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
using VisionBuilder.UI.Common;
|
||||
using VisionBuilder.UI.Common.ViewModel;
|
||||
using VisionBuilder.UI.IOCommander.Settings;
|
||||
|
||||
namespace VisionBuilder.UI.IOCommander.Modules;
|
||||
|
||||
public class IOCommanderProgramModule: IVisionBuilderModule
|
||||
{
|
||||
private readonly IOCommanderSettings _settings;
|
||||
private readonly IOCommanderModule _mainModule;
|
||||
private readonly MainWindowVM _mainWindowVm;
|
||||
|
||||
public IOCommanderProgramModule(IOCommanderSettings settings, IOCommanderModule mainModule, MainWindowVM mainWindowVm)
|
||||
{
|
||||
_settings = settings;
|
||||
_mainModule = mainModule;
|
||||
_mainWindowVm = mainWindowVm;
|
||||
_mainWindowVm.ProgramStarted += _mainWindowVm_ProgramStarted;
|
||||
_mainWindowVm.ProgramClosed += _mainWindowVm_ProgramClosed;
|
||||
}
|
||||
|
||||
private void EmitEvent(EProcessingEvent @event)
|
||||
{
|
||||
var actions = _settings.GlobalEvents.First(x => x.Event == @event);
|
||||
foreach (var action in actions.Actions)
|
||||
{
|
||||
_mainModule.SetOutput(action.Pin,!action.Low);
|
||||
if (action.Pulse)
|
||||
{
|
||||
Task.Run(async () =>
|
||||
{
|
||||
await Task.Delay(_settings.PulseLength);
|
||||
_mainModule.SetOutput(action.Pin, action.Low);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void _mainWindowVm_ProgramClosed()
|
||||
{
|
||||
EmitEvent(EProcessingEvent.ProgramEnded);
|
||||
}
|
||||
|
||||
|
||||
private void _mainWindowVm_ProgramStarted()
|
||||
{
|
||||
EmitEvent(EProcessingEvent.ProgramStarted);
|
||||
}
|
||||
|
||||
public void InitializeModule()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user