UC Datalogger to GUI for dataprocessing

dataloggerhidmicrocontrollerpicusb

So I looked around electronics.stackexchange for this one and here is where I landed:
What type of USB Protocol for Datalogger

Basically, I would like to sample a voltage (specifically, from a photo diode through a trans-impedance amplifier) and send it to the PC. Though, I just don't want to send it to a hyper terminal, I want to graph it in my own GUI and do fun things like showing a FFT of the data. So I see two parts to this project; microcontroller and GUI.

Thing is, I am not sure where to start. The microcontrollers I have experience is with BASIC STAMP 2, PICAXE, and some Arduino. But I want to use something that would be more popular in industry. So I decided that I would perhaps go with the dsPIC series and learn it through mikroC's online book.

I was going to learn to use HID support on the dsPIC and send it to the PC (I know, easier said than done). I read info on the internet that CDC is better since it is not interrupted but I like the idea of not having to download drivers. With a quick google search, I see that other companies make HID dataloggers so it must be okay?

As for the GUI, I have basic academic experience with C++ and Java. I have used Java Swing to make some desktop GUI applications but they were fairly simple compared to what I want to do here. I am also not sure how to "read" the USB port for data to use as inputs for my GUI. I was thinking that I was going to use (well, once I learn it) C# since I read somewhere that it is fairly easy to grab data from a USB port for a program and show in a GUI. I was going to start with the GUI part and attempt to use dummy data like a mouse to make sure it works, maybe even use an actual datalogger for testing. Then muddle with the dsPIC part.

So I guess my bottom line question is am I approaching this the right way? Is what I proposing even possible?

Best Answer

If you are sending serial data to your computer over serial, USB or not, you just need to write computer programs that can parse the incoming messages. You can refer to books on compiler construction about how to write the parser and operating system manuals about how to interface to the serial interface.

If you need faster speeds, like full USB 2.0 480Mbps you can look into libusb (for OS X and Linux), IOKit (for OS X) and Windows DDK, as well as manual your microcontroller, about how to send raw USB packets that can take advantage of the full USB bus speeds.