Since you don't have very much processing to do, I suggest using the Rx (Reactive) framework which is built on top of TPL-Dataflow. Rx gives you much more flexibility in terms of processing streams of data (think of it as Linq for event streams) whereas DataFlow is better suited for setting up data pipelines where you want fine control over concurrency.
Having recently faced a similar problem, connecting up a GPS reader, I would suggest the following architecture....
- Set up a standalone thread to interface to the instrument.
- You can expose new readings via an event handler from this thread.
- You can then use the Observable.FromEventPattern method to construct an Rx Observable stream
- Subscribers to this stream can mutate the raw data into any form they like; in fact different subscribers could mutate it into completely different forms if it suits their needs.
- Since you're ultimately ending up at the UI, you'll need to use ObserveOnDispatcher at the point a subscriber wants to interact with the UI.
For further details, I would strongly recommend this document... http://go.microsoft.com/fwlink/?LinkId=208528