最近在MSTAR2521平臺弄串口讀寫的時候,經常遇到WriteFile函數阻塞,不返回,後來發現是設置的寫超時不對,太長了。現在修改了寫超時,就可以了。
寫超時了其實也沒有關係,實際上WINCE系統的串口驅動是異步發送的,只是先返回給用戶層了,驅動還是會將數據異步慢慢地寫到串口中去。
COMMTIMEOUTS commTimeOut;
GetCommTimeouts(m_hBtCom, &commTimeOut);
commTimeOut.ReadIntervalTimeout = 200; //MAXWORD;
commTimeOut.ReadTotalTimeoutMultiplier = 0;
commTimeOut.ReadTotalTimeoutConstant =0;
commTimeOut.WriteTotalTimeoutMultiplier = 20;
commTimeOut.WriteTotalTimeoutConstant = 10;
SetCommTimeouts(m_hBtCom, &commTimeOut);