I should have provided a link to the Maretron USB100: http://www.maretron.com/products/usb100.php. The USB100 can both talk and listen, but I am listening only. On my computer I can open a putty terminal and it just spits out NMEA sentences, although I do have to install a driver first. There are configuration commands that can be sent, but for my purposes, I only want to listen to the USB100, parse the sentences, and then send them out to my computer.
Although these are marine sensors, for my application they will be inside a Pelican case on a tripod on dry land.
The computer is a four year old pico-itx. It's a single core 1GHz cpu with 500Mb ram. I am also probably not doing the serial polling in the most efficient manner. My program is running a compiled LabVIEW VI (I know this is certainly not the most efficient language for this, but this is for work and I'm stuck with it). For each device I have a separate loop where it looks to see if there is anything on the appropriate port. If there is, it reads it in and parses it. If there isn't, it goes on. For my Leonardo with the GPS shield, all of the parsing happens on the Leonardo and I send a short pre-formatted data once per second, and all the computer has to do is stick it at the end of a log file. For the Maretron, there are 5 sentences that get sent (position, time, weather, etc.) and they are coming about every 100ms. I then have to loop through and parse each sentence to get out just what I need and discard the rest. So 80% of what's getting sent over the port is getting thrown away, and I have to do all of this without the benefit of multiple CPU threads. In between serial polls, there is another part of the program that is doing some CPU intensive calculations, and all of this has to occur at a 1Hz update rate. I was hoping to unload the NMEA wrangling and parsing onto the Leonardo. If I can do that and free up enough overhead on the pico-itx, I am hoping to add additional weather stations to my network.