forked from amkovkov/GranuSightSoftware2
56 lines
2.7 KiB
C#
56 lines
2.7 KiB
C#
using CommunityToolkit.Mvvm.ComponentModel;
|
|
using CommunityToolkit.Mvvm.Input;
|
|
|
|
using GSS2.Core.Hardware;
|
|
using GSS2.UI.Core.ViewModels;
|
|
|
|
namespace GSS2.Test.ViewModels;
|
|
|
|
public partial class MainViewModel : ViewModelBase
|
|
{
|
|
private readonly ILogger<MainViewModel> _logger;
|
|
private readonly CameraService _cameraService;
|
|
private readonly IlluminatorService _illuminatorService;
|
|
[ObservableProperty] private CameraViewModel _cameraViewModel;
|
|
[ObservableProperty] private ResourcesViewModel _resourcesViewModel;
|
|
[ObservableProperty] private OpenCvSharp.Mat? _image1;
|
|
[ObservableProperty] private OpenCvSharp.Mat? _image2;
|
|
[ObservableProperty] private OpenCvSharp.Mat? _image3;
|
|
[ObservableProperty] private OpenCvSharp.Mat? _image4;
|
|
[ObservableProperty] private IRelayCommand _buttonCaptureClick;
|
|
[ObservableProperty] private IRelayCommand _buttonUpClick;
|
|
[ObservableProperty] private IRelayCommand _buttonDownClick;
|
|
[ObservableProperty] private int _currentIndex;
|
|
[ObservableProperty] private bool _canScrollForward;
|
|
[ObservableProperty] private bool _canScrollBackward;
|
|
|
|
public MainViewModel(ILogger<MainViewModel> logger, CameraViewModel cameraViewModel, ResourcesViewModel resourcesViewModel, CameraService cameraService, IlluminatorService illuminatorService)
|
|
{
|
|
_logger = logger;
|
|
_cameraService = cameraService;
|
|
_illuminatorService = illuminatorService;
|
|
CameraViewModel = cameraViewModel;
|
|
ResourcesViewModel = resourcesViewModel;
|
|
ButtonCaptureClick = new RelayCommand(() =>
|
|
{
|
|
Task.Run(async () =>
|
|
{
|
|
_illuminatorService.TurnOn();
|
|
_illuminatorService.SetIntensity(1, 0, 0);
|
|
await _cameraService.CaptureImage(CancellationToken.None, 3).ContinueWith(image => Image1 = image.Result);
|
|
_illuminatorService.SetIntensity(0, 1, 1);
|
|
await _cameraService.CaptureImage(CancellationToken.None, 3).ContinueWith(image => Image2 = image.Result);
|
|
_illuminatorService.SetIntensity(0, 1, 0);
|
|
await _cameraService.CaptureImage(CancellationToken.None, 3).ContinueWith(image => Image3 = image.Result);
|
|
_illuminatorService.SetIntensity(0, 0, 1);
|
|
await _cameraService.CaptureImage(CancellationToken.None, 3).ContinueWith(image => Image4 = image.Result);
|
|
_illuminatorService.SetIntensity(0, 0, 0);
|
|
_illuminatorService.TurnOff();
|
|
});
|
|
});
|
|
ButtonUpClick = new RelayCommand(() => CurrentIndex--);
|
|
ButtonDownClick = new RelayCommand(() => CurrentIndex++);
|
|
|
|
_logger.LogInformation("{} initialized", nameof(MainViewModel));
|
|
}
|
|
} |