以最後決定用純API函數實現串口讀寫。
先從網上搜索相關代碼(關鍵字:C# API 串口),發現網上相關的資料大約來源於一個版本,那就是所謂的msdn提供的樣例代碼(msdn的具體出處,我沒有考證),其它的代碼大都是它的變種。
其實這個示例代碼是有問題的,也就是說DCB結構體聲明的有問題,雖然該代碼可以正常通信,不過如果你設置了奇偶校驗的話,你會發現奇偶校驗無效。
VC中的DCB結構聲明如下:
typedef struct _DCB {
DWord DCBlength; /* sizeof(DCB) */
DWord BaudRate; /* Baudrate at which running */
DWord fBinary: 1; /* Binary Mode (skip EOF check) */
DWord fParity: 1; /* Enable parity checking */
DWord fOutxCtsFlow:1; /* CTS handshaking on output */
DWord fOutxDsrFlow:1; /* DSR handshaking on output */
DWord fDtrControl:2; /* DTR Flow control */
DWord fDsrSensitivity:1; /* DSR Sensitivity */
DWord fTXContinueOnXoff: 1; /* Continue TX when Xoff sent */
DWord fOutX: 1; /* Enable output X-ON/X-OFF */
DWord fInX: 1; /* Enable input X-ON/X-OFF */
DWord fErrorChar: 1; /* Enable Err Replacement */
DWord fNull: 1; /* Enable Null stripping */
DWord fRtsControl:2; /* Rts Flow control */
DWord fAbortOnError:1; /* Abort all */