示例#1
0
        private void ParseData(Device ParseFor, byte[] Payload)
        {
            JointTelemetry tel     = Telemetry[ParseFor];
            CANPacket      canPack = (CANPacket)Payload[0];

            switch (canPack)
            {
            case CANPacket.TELEMETRY:
                int Voltage = BitConverter.ToInt16(Payload.Take(3).ToArray(), 1);
                int Current = BitConverter.ToInt16(Payload, 3);
                tel.Voltage = Voltage;
                tel.Current = Current;
                break;

            case CANPacket.STATUS:
                // Basically doesn't exist as of now
                break;

            case CANPacket.ENCODER_CNT:
                int EncoderCount = BitConverter.ToInt32(Payload, 1);
                tel.Encoder = EncoderCount;
                break;

            case CANPacket.ERROR_MSG:
                int Error = BitConverter.ToInt16(Payload, 0) & 0xFF;
                tel.ErrorCode = Error;
                break;

            case CANPacket.MODEL_NUM:
                tel.ModelNumber = BitConverter.ToInt16(Payload, 0) & 0xFF;
                break;

            case CANPacket.SERVO:
                tel.ServoPos = BitConverter.ToInt16(Payload, 0) & 0xFF;
                break;

            case CANPacket.LASER:
                // Does not exist yet
                break;
            }
            UpdateGUI?.Invoke();
            Telemetry[ParseFor] = tel;
        }