You probably think we're holding out on you, but we aren't.
Reading GPS data in your program from a GPS device requires the following steps (function definitions are on MSDN, you need to P/Invoke the native functions):
<1>Connect to the serial port (ie COM port) using native function CreateFile
<2>Configure the port for timeouts and COM junk using more native functions (GetCommState, SetCommState, GetCommTimeouts, SetCommTimeouts, etc).
<3>Use native function ReadFile to fill a buffer with data from the serial port (ie from the GPS device).
<4>Take that binary data and convert it into ASCII characters using the Bitconverter Class.
<5>The characters make up the NMEA data, parse the GPS info you want out of it.
<6>Close the connection to the port using native function CloseHandle. Make sure to do this since you are using resources that are not managed by the compact framework.
Here's an MSDN article that tells how to connect to the serial port using VB.net. As you can see from the article it's non trivial. Good luck. Consider using the smart device framework from opennet. Like ctacke said, it takes care of most of this for you.