请串口通讯高手帮忙
yjinf 2005-05-24 11:58:54 BOOL bWrite = pComPort->WriteCommBlock(ReadCmd,4);
Sleep(0);
if(bWrite)
{
WaitCommEvent( COMDEV( pComPort->m_pCOMInfo ), &dwEvtMask, NULL/*&ol*/ );
Sleep(0);
if ((dwEvtMask & EV_RXCHAR) == EV_RXCHAR)
{
do
{
if(nLength = pComPort->ReadCommBlock((LPSTR)abIn+nLength, MAXBLOCK))
{
dwReadSize += nLength;
}
}while(nLength > 0);
if(dwReadSize > 0)
pComPort->WriteDisdata(abIn,dwReadSize);
}
}
pComPort是串口通讯类的实例,这段代码放在一个while循环中,除非进程退出否则一直在运行。
因为我是在测试,所以串口是2、3接在一起,我往串口写入52 30 31 0D,共四个字节,读出来的应该也是这四个字节,但实际读出来的是52 30 31 0D 52 30 31 0D 共8个字节,数据好像被重复了一遍。如果我将读取数据延时改为Sleep(1),数据读取就正确了,但这样每秒读写的次数就减少了。我不明白为什么会读出双份的数据?