You mentioned three different languages, not two: C++, C and C#.
The short answer is: it's up to you. It also highly depends on your knowledge and skills.
As to advantages and disadvantages: first, the answer could be too long to fit the format of
Quick Questions & Answers. Also, many items would be ambiguous: and advantage could appear as a disadvantage from a different point of view and visa versa. No, this question is not perfectly valid.
You cannot compare C# with C/C++ just as languages as the platforms are very different. There is a limited number system-specific problems that could not be solved in .NET. In this case, you can use native solution or a mixed solution: part of the work is written in, say, C, a part of it in .NET (C# or something else, does not really matter). This can be a case with USB which is not directly supported by the libraries bundled with .NET. RS-232 is fully supported, please see
System.IO.Ports.SerialPort
,
http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx[
^].
I would personally try to do as much as possible using C#, as this language not so archaic as C++, provides much better support of the programmer's work and invite less bugs; and interoperability with different platform is not a problem for me. Besides, CodeProject provides a number of ready-to-use USB solutions:
http://www.codeproject.com/search.aspx?q=USB&doctypeid=1[
^].
For someone else, the choice can different.
—SA