精通串口的朋友看过来,100分激情放送
根据和硬件的通信格式,我需要切换校验方式,现在的问题是,在win2000下,当切换校验方式时,需要500ms的延时(500ms是在调试的时候得出的最小延时值,否则,有数据丢失),现在的问题是,为什么会需要这种延时呢?而且,延时太长,系统不能忍受。我该怎么办?
附相关代码:
WritedNumber = WriteData( (const char*)testsend,7 + i );
Sleep(500);//这里需要延时。为什么???
dcb.Parity=3;
if(!SetCommState(m_Com,&dcb))
{
ErrorCode=0x02;
::CloseHandle(m_Com);
return FALSE;
}
testsend[0]=0xfd;
WritedNumber = WriteData( (const char*)testsend,1 );
Sleep(500);////这里需要延时,为什么???
dcb.Parity=4;
if(!SetCommState(m_Com,&dcb))
{
ErrorCode=0x02;
::CloseHandle(m_Com);
return FALSE;
}
其中:WriteData为自己写的一个向串口写数据的函数(采用重叠机制)。