public SerialPortParser()
        {
            _inputBuffer   = new byte[100];
            _bufferCounter = 0;
            _axSPortAx.CreateControl();
            _axSPortAx.OnRxChar          += AxSPortAx_OnRxChar;
            _axSPortAx.OnChangePortsList += _axSPortAx_OnChangePortsList;

            _parsedTemperatures = new BindableCollection <int?>();
            _parsedVoltages     = new BindableCollection <float?>();
            ParsedRpm           = 0;
            ParsedCompassValues = new CompassValues();
        }
        private void DecodeInput(string input)
        {
            var subStrings = input.Split(',');

            try
            {
                if (subStrings[0].Equals("Med1") && subStrings.Length >= VoltageCount + 1)
                {
                    _parsedVoltages.Clear();
                    for (var i = 1; i <= VoltageCount; i++)
                    {
                        _parsedVoltages.Add(float.Parse(subStrings[i]));
                    }
                    UpdateData(DataType.Voltages);
                }
                else if (subStrings[0].Equals("Med2") && subStrings.Length >= TemperatureCount + 1)
                {
                    _parsedTemperatures.Clear();
                    for (var i = 1; i <= TemperatureCount; i++)
                    {
                        _parsedTemperatures.Add((int)float.Parse(subStrings[i]));
                    }
                    UpdateData(DataType.Temperatures);
                }
                else if (subStrings[0].Equals("Med3") && subStrings.Length >= 7)
                {
                    //float temperature1, temperature2, temperature3;

                    //temperature1 = float.Parse(subStrings[1]);  //3
                    //temperature2 = float.Parse(subStrings[2]);  //1
                    //temperature3 = float.Parse(subStrings[3]);  //2

                    //motorDiagram1.setTemperatures(temperature1, temperature3, temperature2);

                    ParsedRpm = float.Parse(subStrings[4]);

                    ParsedAirSpeed = float.Parse(subStrings[5]);

                    //float mainGasVoltage, reserveGasVoltage;

                    //mainGasVoltage = float.Parse(subStrings[6]);
                    //reserveGasVoltage = float.Parse(subStrings[7]);

                    //fuelBar1.setLevelVoltages(mainGasVoltage, reserveGasVoltage);
                    UpdateData(DataType.EngineRpmFuel);
                }
                else if (subStrings[0].Equals("Med4") && subStrings.Length >= 5)
                {
                    //Med4,lat,NS,log,EW,alt,angulo
                    ParsedCompassValues = new CompassValues
                    {
                        Latitude    = float.Parse(subStrings[1]),
                        DirectionNs = char.Parse(subStrings[2]),
                        Longitude   = float.Parse(subStrings[3]),
                        DirectionEw = char.Parse(subStrings[4]),
                        Altitude    = float.Parse(subStrings[5]),
                        Orientation = float.Parse(subStrings[6])
                    };
                    UpdateData(DataType.Compass);
                }
            }
            catch (Exception)
            {
                // ignored
            }

            LogWriter.WriteDataToLog(input);
        }