While you could always do all the work yourself by using pinvoke down to CreateFile and ReadFile from the Win32 API, why make it hard on yourself? A quick search on MSDN turned up two libraries that you may want to consider. The first is John Hind's MSDN Magazine article, "Use P/Invoke to Develop a .NET Base Class Library for Serial Device Communications" ( http://msdn.microsoft.com/msdnmag/issues/02/10/netserialcomm/). The second is DualBrain's .NET layer that matches the MSCOMM32.OCX api if you're used to that. ( http://www.gotdotnet.com/community/workspaces/workspace.aspx?ID=0A680784-1D84-4E0A-8A62-9DCBCF79E1FB).
This was first published in June 2004