public override void Load()
		{
            //set plugin directory
            if (PluginDirectory.ToLower().EndsWith("gpstracker"))
                m_sPluginDirectory = PluginDirectory;
            else
                m_sPluginDirectory = PluginDirectory + "\\plugins\\gpstracker";

            try
            {
                Directory.CreateDirectory(m_sPluginDirectory + "\\NMEAExport");
            }
            catch (Exception)
            {
            }

			gpsOverlay=null;
			pluginAddOverlay();

			//create new instance of gpstracker
			gpsTracker = new GpsTracker(this);
			// Add the GPSTracker plugin to the World Wind tool bar 
            m_MenuButton = new WindowsControlMenuButton("Gps Tracker", m_sPluginDirectory + "\\gpstracker.png", this.gpsTracker);
			Application.WorldWindow.MenuBar.AddToolsMenuButton( m_MenuButton );
			
			base.Load();
		}
		public override void Unload()
		{
			// Clean up
			gpsTracker.Close();
			
			//remove button...
			Application.WorldWindow.MenuBar.RemoveToolsMenuButton(m_MenuButton);

			pluginRemoveOverlay();

			m_MenuButton=null;
			gpsTracker=null;
			gpsOverlay=null;
			base.Unload ();
		}
		public GpsTrackerUDPTCP(GpsTracker gpsTracker)
		{
			m_GpsTracker=gpsTracker;
		}
		public GpsTrackerNMEA(GpsTracker gpsTracker)
		{
			m_GpsTracker=gpsTracker;
			m_Aprs = new GpsTrackerAPRS(gpsTracker);
			m_CSVParser = new CSVReader();
		}
		public GpsTrackerAPRS(GpsTracker gpsTracker)
		{
			m_GpsTracker=gpsTracker;
			//Ensure we load the APRS parser dll from the correct place
            LoadLibrary(GpsTrackerPlugin.m_sPluginDirectory + "\\APRS\\APRSParserDLL.GPSTracker");
		}
		public SerialPort(GpsTracker gpsTracker, int iIndex, uint iCOMPort, uint iBaudRate, byte byByteSize, byte byParity, byte byStopBits, uint iFlowControl)
		{
			m_iIndex=iIndex;
			m_iCOMPort=iCOMPort;
			m_iBaudRate=iBaudRate;	//BuadRate
			m_byByteSize=byByteSize; //ByteSize
			m_byParity=byParity;	//	0 -> no parity,  1 -> odd parity, 2 -> even parity,  3 -> mark parity , 4 -> space parity
			m_byStopBits=byStopBits; //	0 -> 1, 1 -> 1.5, 2 -> 2
			m_iFlowControl=iFlowControl; //0=none, 1=hardware, 2=xonxoff

			m_ThreadRx=null;
			m_hCOMPort=INVALID_HANDLE_VALUE;
			m_bClose=true;
			m_GpsTracker=gpsTracker;

			IsOpen=false;
		}
		public GpsBabel(GpsTracker gpsTracker)
		{
			m_GpsTracker=gpsTracker;
			//Ensure we load the GpsBabelLoader dll from the correct place
            LoadLibrary(GpsTrackerPlugin.m_sPluginDirectory + "\\GpsBabel\\GpsBabelLoader.gpstracker");
		}
		public GpsTrackerFile(GpsTracker gpsTracker)
		{
			m_GpsTracker=gpsTracker;
			m_GpsBabel=new GpsBabel(gpsTracker);
		}