Exemplo n.º 1
0
        public MainPageViewModel()
        {
            Application.Current.MainWindow.Loaded += MainWindow_Loaded;

            refreshtimer.Interval = TimeSpan.FromMilliseconds(100);
            refreshtimer.Tick    += Refreshtimer_Tick;

            ReportInput  = new ObservableCollection <ReportByte>();
            ReportOutput = new ObservableCollection <ReportByte>();

            IsConnected        = false;
            IsConnectByPIDVID  = false;
            SendByOutputReport = true;

            UpdateAvalibleDevices();

            Сommand_Connect = new RelayCommand((p) =>
            {
                USB.OnSpecifiedDeviceRemoved += Usb_OnSpecifiedDeviceRemoved;
                USB.OnDataRecieved           += Usb_OnDataRecieved;
                if (IsConnectByPIDVID)
                {
                    IsConnected = USB.Open(DeviceVID, DevicePID);
                }
                else
                {
                    IsConnected = USB.Open(SelectedDevice);
                }

                if (IsConnected)
                {
                    RaisePropertyChanged("USB");
                    for (UInt16 i = 0; i < USB.SpecifiedDevice.InputReportLength; i++)
                    {
                        ReportInput.Add(new ReportByte()
                        {
                            Color = Brushes.Black, Data = 0x00
                        });
                    }
                    UpdateOutputReport();
                }
            }, (p) => (SelectedDevice != null && !IsConnected));

            Сommand_Disconnect = new RelayCommand((p) =>
            {
                IsConnected = false;
                ReportInput.Clear();
                ReportOutput.Clear();
                USB.OnSpecifiedDeviceRemoved -= Usb_OnSpecifiedDeviceRemoved;
                USB.OnDataRecieved           -= Usb_OnDataRecieved;
                USB.Close();
            }, (p) => IsConnected);

            Сommand_WriteReport = new RelayCommand((p) =>
            {
                SendReportToDevice();
            }, (p) => IsConnected);
        }