关于串口编程速度的问题,代码贴出来请大家指教,分不够在加
h3w4 2005-09-08 10:08:04 我测了一下,时间主要花在以下两个子函数中。。。
DWORD WINAPI MainWorkerFunc( LPVOID lpPara )
{
UNREFERENCED_PARAMETER(lpPara);
if ( SetSerialPara() == FALSE )
return 1;
if ( EnterListenMode() == FALSE )
return 1;
while ( 1 )
{
if ( WaitInput() == FALSE )
break;
if ( ReciveCommand() == FALSE )
break;
if ( ProcessData() == FALSE )
break;
if ( SendResponse() == FALSE )
break;
};
CloseHandle( _hComm );
_hComm = NULL;
return 0;
}
BOOL WaitInput()
{
if ( !PurgeComm ( _hComm , PURGE_TXCLEAR ) )
return FALSE;
if ( !SetCommMask(_hComm, EV_RXCHAR) )
return FALSE;
DWORD dwFlag=0;
_overlapped.Internal = _overlapped.InternalHigh = _overlapped.Offset = _overlapped.OffsetHigh = 0;
if ( WaitCommEvent( _hComm, &dwFlag, &_overlapped ))
{
return TRUE;
}
return FALSE;;
}
BOOL ReciveCommand()
{
DWORD bytesRecved;
DWORD time = GetTickCount();
memset ( _bufferRead, 0, _buffer_SizeIn );
ReadFile( _hComm, _bufferRead, _buffer_SizeIn, &bytesRecved, NULL );
if ( bytesRecved == 0 )
return FALSE;
if ( PurgeComm ( _hComm , PURGE_RXCLEAR ) )
return TRUE;
}