public ThunderBolt(string portName, AngleUnits au, AltitudeUnits tu, OutputPort activityLed)
        {
            _activityLed = activityLed;
            PacketQueue = new FixedSizedQueue(10);

            PacketProcessing = new Thread(new ThreadStart(worker_thread));

            position = new Position(au, tu);
            last_position = new Position(au, tu);
            m_port = new SerialPort(portName, 9600, Parity.None, 8, StopBits.One);
            m_port.DataReceived += new SerialDataReceivedEventHandler(m_port_DataReceived);
            m_port.ErrorReceived += new SerialErrorReceivedEventHandler(m_port_ErrorReceived);
            for (int i = 0; i < 32; i++)
                Satellites[i] = new SatInfo();
        }
        private void raise_position_change()
        {
            if (last_position != null || position.Equals(last_position) == false)
                if (PositionChanged != null)
                    PositionChanged(this, new EventArgs()); // raise Position Changed event

            last_position = position;
        }