public override MotorBaseResponse Decode(OriginalBytes obytes) { if (obytes.Data.Length != 164) { return(null); } byte commandCode = obytes.Data[6]; byte additionalCode = obytes.Data[7]; MotorC40Response m40r = new MotorC40Response(commandCode, additionalCode); if (m40r.AdditionCode == 0xAA) { //读回应 m40r.CommandCode = obytes.Data[6]; m40r.AdditionCode = obytes.Data[7]; Array.Copy(obytes.Data, 8, m40r.CodeArea.DataLength, 0, 2); m40r.CodeArea.Data = new byte[m40r.CodeArea.Length]; Array.Copy(obytes.Data, 10, m40r.CodeArea.Data, 0, m40r.CodeArea.Length); Array.Copy(obytes.Data, 10 + m40r.CodeArea.Length, m40r.CodeArea.CRC16Code, 0, 2); m40r.SystemFlowStatus = m40r.CodeArea.Data[0]; m40r.Motor1Switch = m40r.CodeArea.Data[1]; m40r.Motor1Status = m40r.CodeArea.Data[2]; m40r.Motor1completeSteps = ByteHelper.BytesToInt2(m40r.CodeArea.Data, 3); m40r.Motor1Steps = ByteHelper.BytesToInt2(m40r.CodeArea.Data, 7); m40r.Motor2Switch = m40r.CodeArea.Data[11]; m40r.Motor2Status = m40r.CodeArea.Data[12]; m40r.Motor2completeSteps = ByteHelper.BytesToInt2(m40r.CodeArea.Data, 13); m40r.Motor2Steps = ByteHelper.BytesToInt2(m40r.CodeArea.Data, 17); m40r.Voltage1 = ByteHelper.BytesToInt2(m40r.CodeArea.Data, 21); m40r.Voltage2 = ByteHelper.BytesToInt2(m40r.CodeArea.Data, 25); m40r.Temperature = ByteHelper.BytesToInt2(m40r.CodeArea.Data, 29); m40r.M1V1 = ByteHelper.BytesToInt2(m40r.CodeArea.Data, 33); m40r.M1V2 = ByteHelper.BytesToInt2(m40r.CodeArea.Data, 37); m40r.M2V1 = ByteHelper.BytesToInt2(m40r.CodeArea.Data, 41); m40r.M2V2 = ByteHelper.BytesToInt2(m40r.CodeArea.Data, 45); Array.Copy(m40r.CodeArea.Data, 100, m40r.ErrorAlarmCodes, 0, 50); } m40r.BasePackage = new CIIBasePackage(m40r.CodeArea, false); return(m40r); }
public override MotorBaseResponse Decode(OriginalBytes obytes) { byte commandCode = obytes.Data[6]; byte additionalCode = obytes.Data[7]; MotorC50Response m50r = new MotorC50Response(commandCode, additionalCode); if (m50r.AdditionCode == 0xAA) { //读回应 m50r.CommandCode = obytes.Data[6]; m50r.AdditionCode = obytes.Data[7]; Array.Copy(obytes.Data, 8, m50r.CodeArea.DataLength, 0, 2); m50r.CodeArea.Data = new byte[m50r.CodeArea.Length]; Array.Copy(obytes.Data, 10, m50r.CodeArea.Data, 0, m50r.CodeArea.Length); Array.Copy(obytes.Data, 10 + m50r.CodeArea.Length, m50r.CodeArea.CRC16Code, 0, 2); m50r.Selection = m50r.CodeArea.Data[0]; switch (Selection) { case 0xA0: m50r.Frequency = ByteHelper.BytesToInt2(m50r.CodeArea.Data, 1); m50r.MaxPulses = ByteHelper.BytesToInt2(m50r.CodeArea.Data, 5); break; case 0xA1: m50r.Frequency = ByteHelper.BytesToInt2(m50r.CodeArea.Data, 1); break; case 0xA2: m50r.MaxPulses = ByteHelper.BytesToInt2(m50r.CodeArea.Data, 1); break; } } else if (m50r.AdditionCode == 0x99) { //写回应 m50r.ResponseCode = m50r.CodeArea.Data[0]; } m50r.BasePackage = new CIIBasePackage(m50r.CodeArea, false); return(m50r); }
public override MotorBaseResponse Decode(OriginalBytes obytes) { byte commandCode = obytes.Data[6]; byte additionalCode = obytes.Data[7]; MotorC60Response m60r = new MotorC60Response(commandCode, additionalCode); if (m60r.AdditionCode == 0xAA) { //读回应 m60r.ControlSelection = obytes.Data[6]; m60r.AdditionCode = obytes.Data[7]; Array.Copy(obytes.Data, 8, m60r.CodeArea.DataLength, 0, 2); m60r.CodeArea.Data = new byte[m60r.CodeArea.Length]; Array.Copy(obytes.Data, 10, m60r.CodeArea.Data, 0, m60r.CodeArea.Length); Array.Copy(obytes.Data, 10 + m60r.CodeArea.Length, m60r.CodeArea.CRC16Code, 0, 2); switch (controlSelection) { case 0x00: m60r.ControlMode61 = m60r.CodeArea.Data[0]; m60r.Direction61 = m60r.CodeArea.Data[1]; m60r.TotalSteps61 = ByteHelper.BytesToInt2(m60r.CodeArea.Data, 2); m60r.ControlMode62 = m60r.CodeArea.Data[6]; m60r.Direction62 = m60r.CodeArea.Data[7]; m60r.TotalSteps62 = ByteHelper.BytesToInt2(m60r.CodeArea.Data, 8); m60r.ControlModeA1 = m60r.CodeArea.Data[12]; m60r.DirectionA1 = m60r.CodeArea.Data[13]; m60r.TotalStepsA1 = ByteHelper.BytesToInt2(m60r.CodeArea.Data, 14); m60r.ControlModeA2 = m60r.CodeArea.Data[18]; m60r.DirectionA2 = m60r.CodeArea.Data[19]; m60r.TotalStepsA2 = ByteHelper.BytesToInt2(m60r.CodeArea.Data, 20); break; case 0x60: m60r.ControlMode61 = m60r.CodeArea.Data[0]; m60r.Direction61 = m60r.CodeArea.Data[1]; m60r.TotalSteps61 = ByteHelper.BytesToInt2(m60r.CodeArea.Data, 2); m60r.ControlMode62 = m60r.CodeArea.Data[6]; m60r.Direction62 = m60r.CodeArea.Data[7]; m60r.TotalSteps62 = ByteHelper.BytesToInt2(m60r.CodeArea.Data, 8); break; case 0x61: m60r.ControlMode61 = m60r.CodeArea.Data[0]; m60r.Direction61 = m60r.CodeArea.Data[1]; m60r.TotalSteps61 = ByteHelper.BytesToInt2(m60r.CodeArea.Data, 2); break; case 0x62: m60r.ControlMode62 = m60r.CodeArea.Data[6]; m60r.Direction62 = m60r.CodeArea.Data[7]; m60r.TotalSteps62 = ByteHelper.BytesToInt2(m60r.CodeArea.Data, 8); break; case 0xA0: m60r.ControlModeA1 = m60r.CodeArea.Data[12]; m60r.DirectionA1 = m60r.CodeArea.Data[13]; m60r.TotalStepsA1 = ByteHelper.BytesToInt2(m60r.CodeArea.Data, 14); m60r.ControlModeA2 = m60r.CodeArea.Data[18]; m60r.DirectionA2 = m60r.CodeArea.Data[19]; m60r.TotalStepsA2 = ByteHelper.BytesToInt2(m60r.CodeArea.Data, 20); break; case 0xA1: m60r.ControlModeA1 = m60r.CodeArea.Data[12]; m60r.DirectionA1 = m60r.CodeArea.Data[13]; m60r.TotalStepsA1 = ByteHelper.BytesToInt2(m60r.CodeArea.Data, 14); break; case 0xA2: m60r.ControlModeA2 = m60r.CodeArea.Data[18]; m60r.DirectionA2 = m60r.CodeArea.Data[19]; m60r.TotalStepsA2 = ByteHelper.BytesToInt2(m60r.CodeArea.Data, 20); break; } } else if (m60r.AdditionCode == 0x99) { //写回应 m60r.ResponseCode = m60r.CodeArea.Data[0]; } m60r.BasePackage = new CIIBasePackage(m60r.CodeArea, false); return(m60r); }