private void in_port_Read(IPort sender, byte[] data)
        {
            engine.ProcessReceivedData(data);
            IGPSFix fix = engine.MostRecentGPSFix;

            IGPSSatelliteVehicle[] vehicles = engine.MostRecentSatelliteData;
            if ((fix != null) && (NewGPSFix != null))
            {
                NewGPSFix(this, fix);
            }
            if ((vehicles != null) && (NewGPSSatelliteData != null))
            {
                NewGPSSatelliteData(this, vehicles);
            }
            if (out_port != null)
            {
                out_port.Write(data);
            }
            if (log_input)
            {
                application.LogMessage(this, Encoding.ASCII.GetString(data, 0, data.Length));
            }
        }