最近在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);