最近做了一個有關串口通信的程序,在我們這邊怎麼測試都可以,但一交到客戶那邊就問題百出,不是普通COM口通信失敗,就是USB轉COM口通信失敗。通過LOG,我們知道原因所在,就是我們軟件對串口DCB流控制的設置,跟客戶的板子對DCB流控制設置不一致。而我們在無法獲知客戶DCB流控制設置的情況下,瞎改了一番DCB設置,結果是可想而知的。由參考得知如下經驗(vc代碼),希望和遇到同類問題的XDJM們一起分享。
VOID InitDCB(...)
{
dcb.BaudRate = m_dwBaudRate; // Band rate dcb.ByteSize = m_nByteSize; // Data bit, either 7 or 8 dcb.Parity = m_nParity; // Parity, must between 0 to 4 dcb.StopBits = m_nStopBits; // Stop bit must between 0 to 2 dcb.fBinary = TRUE; // Bianry must be TRUE in Win32 dcb.fDtrControl = DTR_CONTROL_ENABLE; dcb.fRtsControl = RTS_CONTROL_ENABLE; #endif
switch (stPortPara->Flow) { // Judge flow control case IdFlowX:
/*--------軟件流控制方式---------------
dcb.XoffLim = CommXoffLim; dcb.XoffChar = XOFF;
--------------------------------------*/
case IdFlowHard:
/*--------硬件流控制方式--------------- dcb.fRtsControl = RTS_CONTROL_HANDSHAKE; #endif
--------------------------------------*/ }
...........