|
我在WINCE开发一个串口 通信程序.
其主要代码(读串口的代码) 如下:(在单独一个线程进行读操作)
//清空串口
PurgeComm(m_hComm, PURGE_RXCLEAR|PURGE_TXCLEAR);
// 清空缓冲,并检查串口是否打开。
ASSERT(m_hComm !=INVALID_HANDLE_VALUE);
SetCommMask (m_hComm, EV_RXCHAR|EV_CTS|EV_DSR);
if (WaitCommEvent(m_hComm,&evtMask,0))
{
SetCommMask (m_hComm, EV_RXCHAR|EV_CTS|EV_DSR );
//表示串口收到字符
if (evtMask & EV_RXCHAR)
{
ClearCommError(m_hComm,&dwReadErrors,&cmState);
willReadLen = cmState.cbInQue;
bReadData = ReadFile(m_hComm, prrr, willReadLen, &actualReadLen,0);
}
}
问题是: 当我用PC机给它的串口 发数据,进行测试. 当我每次发一个字节时候,WINCE程序可以正确读到,但是当我每次发多个字节的时候,WINCE程序就会死机,请问这是为什么呢;
跟超时设置有关吗?
我是这么设置的
CommTimeOuts.ReadIntervalTimeout = 10;
CommTimeOuts.ReadTotalTimeoutMultiplier = 10;
CommTimeOuts.ReadTotalTimeoutConstant = 500;
|
|