Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }