This is very usual project for an automation engineer like me. I have more than 10 years of experience with data communication protocols, and different hardware. (My programming skills are C, C++, C#, .NET, Java, WPF, Silverlight, SQL, ASP.NET, C for PIC microcontrollers, PLC, SCADA... Protocols: USB, RS232, Ethernet, KNX, and many others...)