Example #1
0
        void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            byte[] data = new byte[port.BytesToRead];
            port.Read(data, 0, data.Length);
            for (int i = 0; i < data.Length; i++)
            {
                inputBuffer.Write(data[i]);
            }

            if (inputBuffer.CommandReady())
            {
                byte[] command = inputBuffer.ReadCommand();
                if (command != null)
                {
                    switch (command[1])
                    {
                    case 0x4A:
                        if (command.Length > 10)
                        {
                            PositionReceived(command);
                        }
                        if (command.Length == 4)
                        {
                            CheckAcknowledge(command);
                        }
                        break;

                    case 0x54:
                        LocalisationResponse(command);
                        break;

                    case 0x49:
                        if (command.Length > 10)
                        {
                            ServoStateReceived(command);
                        }
                        if (command.Length == 4)
                        {
                            CheckAcknowledge(command);
                        }
                        break;

                    case 0x47:
                        if (command.Length == 4)
                        {
                            CheckAcknowledge(command);
                        }
                        break;

                    default:
                        Console.WriteLine("INVALID RESPONSE   " + command[1]);     // Throw exception? no.
                        break;
                    }
                }
            }
        }