public DryveStatus(string binaryStatus, DryveModeOfOperation opMode) { if (!Regex.IsMatch(binaryStatus, "^[01]{16}$")) { throw new Exception("Invalid dryveStatus"); } bool[] statusArray = binaryStatus.Select(c => c == '1').ToArray(); _modeOfOperation = opMode; _binaryStatus = binaryStatus; ReadySwitchOn = statusArray[15]; IsOn = statusArray[14]; IsOpEnabled = statusArray[13]; Fault = statusArray[12]; VoltageEnabled = statusArray[11]; QuickStop = statusArray[10]; SwitchOnDiabled = statusArray[9]; Warning = statusArray[8]; MotorEnabled = statusArray[6]; TargetReached = statusArray[5]; InternalLimitActive = statusArray[4]; SetpointApplied = opMode == DryveModeOfOperation.Mode_ProfilePosition ? (bool?)statusArray[3] : null; IsMoving = opMode == DryveModeOfOperation.Mode_ProfileVelocity ? (bool?)!statusArray[3] : null; HomingAttained = opMode == DryveModeOfOperation.Mode_Homing ? (bool?)statusArray[3] : null; }
public DryveModeOfOperation GetModeOfOperation() { byte[] result = SendAndReceive(DryveObject.ModesOfOperationDisplay); string modeVal = ParseReadData(result, ResultFormat.Integer); DryveModeOfOperation modeOfOperation = ModeDict.FirstOrDefault(x => x.Value == short.Parse(modeVal)).Key; return(modeOfOperation); }
public DryveStatus GetStatus() { DryveModeOfOperation modeOfOperation = GetModeOfOperation(); byte[] result = SendAndReceive(DryveObject.Statusword); DryveStatus dryveStatus = new DryveStatus(ParseReadData(result), modeOfOperation); return(dryveStatus); }
public byte[] SetModeOfOperation(DryveModeOfOperation modeOfOperation) { short modeByte = ModeDict[modeOfOperation]; byte[] modeBytes = new byte[1] { (byte)modeByte }; var result = SendAndReceive(messageType: DryveObject.ModesOfOperation, accessType: ObjectAccess.Write, dataValue: modeBytes); return(result); }
public void SetModeOfOperation(DryveModeOfOperation modeName) { var result = _msgHandler.SetModeOfOperation(modeName); }