Animatroller.Framework.Expander.IOExpander.CommandReceived C# (CSharp) Method

CommandReceived() protected method

protected CommandReceived ( string data ) : void
data string
return void
        protected override void CommandReceived(string data)
        {
            var cmd = data[0];
            data = data.Substring(1).TrimStart(',');
            string[] parts = data.Split(',');

            switch (cmd)
            {
                case '#':
                    log.Info("ACK " + data);
                    break;
                case 'X':
                    log.Info("Init " + data);
                    break;
                case 'I':
                    // Input
                    if (parts.Length >= 2)
                    {
                        byte chn = byte.Parse(parts[0]);
                        byte val = byte.Parse(parts[1]);

                        log.Info("Input chn={0} val={1}", chn, val);
                        switch (chn)
                        {
                            case 1:
                                this.DigitalInputs[0].Trigger((val & 1) == 1);
                                break;
                            case 2:
                                this.DigitalInputs[1].Trigger((val & 1) == 1);
                                break;
                            case 3:
                                this.DigitalInputs[2].Trigger((val & 1) == 1);
                                break;
                        }
                    }
                    break;
                case 'M':
                    // Motor Controller
                    if (parts.Length >= 2)
                    {
                        byte chn = byte.Parse(parts[0]);
                        int? pos;
                        if (parts[1] != "X")
                        {
                            if (parts[1].StartsWith("S"))
                            {
                                pos = int.Parse(parts[1].Substring(1));
                                log.Info("MotorController chn={0} Starting at {1}", chn, pos);
                            }
                            else if (parts[1].StartsWith("E"))
                            {
                                pos = int.Parse(parts[1].Substring(1));
                                log.Info("MotorController chn={0} Ends at {1}", chn, pos);

                                if (chn == 1)
                                    this.Motor.Trigger(pos, pos == null);
                            }
                            else
                            {
                                pos = int.Parse(parts[1]);
                                log.Info("MotorController chn={0} val={1}", chn, pos);
                            }
                        }
                        else
                        {
                            // Motor failed
                            pos = null;
                            log.Info("MotorController chn={0} failed", chn);

                            if (chn == 1)
                                this.Motor.Trigger(pos, pos == null);
                        }

                    }
                    break;
                default:
                    log.Info("Unknown data: " + data);
                    break;
            }
        }