高分求助!关于串口读写等待问题
小弟我遇到一个棘手的问题,请各位大虾帮忙。我在使用ReadFile从磁条读写器上读取数据的时候,如果是跟踪的话,就没有问题,如果直接运行程序,不跟踪的话,就会报读错误,我想可能是超时造成的,但是,不知道该在那里设置。我在端口设置的地方是这样设置的:
DCB set_dcb = {0};
COMMTIMEOUTS timeout;
DWORD tmp ;
GetCommState ( tty_fd , &sav_dcb );
timeout.ReadIntervalTimeout = 0xFFFFFFFF;
timeout.ReadTotalTimeoutMultiplier = 5;
timeout.ReadTotalTimeoutConstant = 500;
timeout.WriteTotalTimeoutMultiplier = 5;
timeout.WriteTotalTimeoutConstant = 5000;
if ( !SetCommTimeouts( tty_fd, &timeout) )
{
CloseHandle ( tty_fd );
tmp = GetLastError ();
return ( tmp );
}
set_dcb.DCBlength = sizeof(DCB);
set_dcb.BaudRate =9600;
set_dcb.ByteSize =8;
set_dcb.Parity =NOPARITY;
set_dcb.StopBits =ONESTOPBIT;
if(!SetCommState( tty_fd , &set_dcb))
{
CloseHandle( tty_fd );
tmp = GetLastError();
return ( tmp );
}
ReadFile 是如下调用的:
OVERLAPPED osReader = {0};
osReader.hEvent = CreateEvent ( NULL , TRUE , FALSE , NULL );
...
ReadFile(tty_fd, lpBuf, READ_BUF_SIZE , &dwRead, &osReader)
...
WaitForSingleObject ( osReader.hEvent , 100 );
我不知道是WaitForSingleObject的等待时间太短了,还是在端口设置的时候的读取时间太短了而造成的错误,请各位高手帮帮小弟!不胜感激!