Files
HawkeyeVision/VisionBuilder.UI.IOCommander/Modules/IOCommanderProgramModule.cs
2025-07-19 15:57:59 +02:00

55 lines
1.5 KiB
C#

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