/// <summary> /// Sets the FRCDigitalIOSignal at dioIndex. Should only be used to override robot IO. /// </summary> /// <param name="robot">FRCRobot object that is connected to the robot.</param> /// <param name="dioIndex">The index of the digital out signal to set.</param> public void SetDigitalOutSignal(FRCRobot robot, long dioIndex, bool dioValue) { try { FRCDigitalIOType dioType = (FRCDigitalIOType)robot.IOTypes[FREIOTypeConstants.frDOutType]; FRCDigitalIOSignal dioSignal = (FRCDigitalIOSignal)dioType.Signals[dioIndex]; dioSignal.Value = dioValue; } catch (Exception e) { } }
/// <summary> /// Получение списка сигналов и передача в список Signals /// </summary> /// <param name="robot">экземпляр подключения к роботу</param> /// <param name="ioTypeConstant">константа типа сигналов</param> /// <returns>возвращаемое значение-текущая задача</returns> private async Task GetSignalsIO(FRCRobot robot, FREIOTypeConstants ioTypeConstant) { Task task = new Task(() => { Application.Current.Dispatcher.BeginInvoke(new Action(() => { try { if (robot.IsConnected) { Signals.Clear(); switch (ioTypeConstant) { //DIN DOUT case FREIOTypeConstants.frDOutType: case FREIOTypeConstants.frDInType: FRCDigitalIOType dioTypeIn = (FRCDigitalIOType)robot.IOTypes[ioTypeConstant]; foreach (FRCDigitalIOSignal item in dioTypeIn.Signals) { Signals.Add(new IOSignals { NumberIO = item.LogicalNum, Status = item.Value, Comment = item.Comment, TypeConstants = ioTypeConstant }); } break; //UI UO case FREIOTypeConstants.frUOPInType: case FREIOTypeConstants.frUOPOutType: FRCUOPIOType TypeUO = (FRCUOPIOType)robot.IOTypes[ioTypeConstant]; foreach (FRCUOPIOSignal item in TypeUO.Signals) { Signals.Add(new IOSignals { NumberIO = item.LogicalNum, Status = item.Value, Comment = item.Comment, TypeConstants = ioTypeConstant }); } break; //SI SO case FREIOTypeConstants.frSOPInType: case FREIOTypeConstants.frSOPOutType: FRCSOPIOType TypeSO = (FRCSOPIOType)robot.IOTypes[ioTypeConstant]; foreach (FRCSOPIOSignal item in TypeSO.Signals) { Signals.Add(new IOSignals { NumberIO = item.LogicalNum, Status = item.Value, Comment = item.Comment, TypeConstants = ioTypeConstant }); } break; //FLAG case FREIOTypeConstants.frFlagType: FRCFlagType TypeFlag = (FRCFlagType)robot.IOTypes[ioTypeConstant]; foreach (FRCFlagSignal item in TypeFlag.Signals) { Signals.Add(new IOSignals { NumberIO = item.LogicalNum, Status = item.Value, Comment = item.Comment, TypeConstants = ioTypeConstant }); } break; //RO RI case FREIOTypeConstants.frRDOutType: case FREIOTypeConstants.frRDInType: FRCRobotIOType TypeRI = (FRCRobotIOType)robot.IOTypes[ioTypeConstant]; foreach (FRCRobotIOSignal item in TypeRI.Signals) { Signals.Add(new IOSignals { NumberIO = item.LogicalNum, Status = item.Value, Comment = item.Comment, TypeConstants = ioTypeConstant }); } break; } } } catch (Exception e) { MessageBox.Show(e.Message, "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); } })); }, TaskCreationOptions.LongRunning); task.Start(); await task; }