public byte[] Read(int NumBytes) 
{
byte[] BufBytes;
byte[] OutBytes;
BufBytes = new byte[NumBytes];
if (hComm!=INVALID_HANDLE_VALUE) 
{
OVERLAPPED ovlCommPort = new OVERLAPPED();
int BytesRead=0;
bool tb =ReadFile(hComm,BufBytes,NumBytes,ref BytesRead,ref ovlCommPort);
OutBytes = new byte[BytesRead];
Array.Copy(BufBytes,OutBytes,BytesRead);

else 
{
throw(new ApplicationException("Comm Port Not Open"));
}
return OutBytes;
}ReadFile是个API函数
[DllImport("kernel32.dll")]
private static extern bool ReadFile(
int hFile,                // handle to file
byte[] lpBuffer,             // data buffer
int nNumberOfBytesToRead,  // number of bytes to read
ref int lpNumberOfBytesRead, // number of bytes read
ref OVERLAPPED lpOverlapped    // overlapped buffer
);