As featured on...

You might also like NMEA/SiRF Compass.  The coolest skinnable compass, GPS info display, time synchronizer, plus GPS log and playback through XPort.

PayPal Donations Accepted.  Thank You! 

Version 1.22 -  4/08/08: Fixed a MULTIPLE_IRP_COMPLETE crash under Vista.
Version 1.21
-  3/07/08: No more XPortA.  Too much trouble.  Big fix with SERIAL_TIMEOUT parameters.  Now works with ShipPlotter.

How to use:
When starting XPort3, there will be no window if it's currently installed.  Just a tray icon (that's for rebooting without any annoying popups when it starts).  Double-Click on the tray icon to open the configuration dialog.  Scan for your GPS or set the input manually if you already know, and set the outputs to a few unused COM ports, then hit "Enable Ports" and it's ready to go.  You may now close the dialog.  XPort will continue to run in the task bar and will start when Windows starts (except under Windows Vista - See note below).

Just below the output ports is the log output.  Enable the check mark to start logging data from the GPS.

The device list at the bottom works much like DevCon, and is for devices that have trouble with hibernation.  Check only the devices you have trouble with.  XPort will stop the driver before hibernation, then start after resume, then retry any driver that fails to start a few seconds later. Use with caution.  Some devices may freeze XPort or fail to disable or enable.  Each device may add several seconds delay, so it may not be a good option to use. You can test each device by disabling/enabling in Device Manager.

How to uninstall:
      If XPort is running, uncheck "Enable Ports" and close the window, then delete the XPort.exe file.

Notes:

Download (by clicking this, you agree that you have at least glanced at the large complicated instructions above, and you will in no way redistribute, make money off of or use in any way other than for personal use)-> XPort.zip (24KB)

// Example code for sending data to XPort.  You would really want to slow this down.

   SendToXPort(1, NULL, 0); // Pause real GPS before sending
   for(;;)
   {
       Read( hFile, szString, 100, &dwLength );
       if( dwLength == 0) break;
       SendToXPort(2, szString, dwLength ); // Send NMEA data
   }
   SendToXPort(0, NULL, 0); // Unpause real GPS when done sending

void SendToXPort(ULONG ulMsg, char *pszData, ULONG ulLength)
{
     HWND hWnd = FindWindow( NULL, "XPortMsgWnd" );
     if( !hWnd ) return;
     COPYDATASTRUCT CD;
     CD.dwData = ulMsg;
     CD.lpData = pszData;
     CD.cbData = ulLength;
     SendMessage( hWnd, WM_COPYDATA, 0, (LPARAM)&CD );
}

Back to home site