[語法] RS232裡面的一些函數(以查過很多資料)
目前 在學習RS232 所以就直接拿別人的CODE來看
但有幾行函數 網路上找很多資料 都還是沒辦法了解對方的表達意思
希望各位先進 能幫忙解答 非常感謝妳
主要是meset這行 跟 WaitForSingleObject 這二個
WaitForSingleObject 這不是應該要判斷回傳訊息嗎? 我看read 跟write都沒判斷
我查msdn WaitForSingleObject如果 回傳WAIT_OBJECT_0 在判斷GetOverlappedResult
之後回傳true然後data_counter++ 這是我的想法
可是網路上的code跟我想的都不一樣 但跑出來的結果又是正確的
有人能解說一下這邊的 read&write分別用 WaitForSingleObject 哪幾行說明嗎?
參考網址程式: http://www.edaboard.com/ftopic51410.html
msdn:http://msdn.microsoft.com/en-us/library/ms810467.aspx
CSerial::CSerial()
{
memset( &m_OverlappedRead, 0, sizeof( OVERLAPPED ) );//??作用?
memset( &m_OverlappedWrite, 0, sizeof( OVERLAPPED ) );//??作用?
}
BOOL CSerial::WriteCommByte( unsigned char ucByte )
{
BOOL bWriteStat;
DWORD dwBytesWritten;
bWriteStat = WriteFile( m_hIDComDev, (LPSTR) &ucByte, 1, &dwBytesWritten,
&m_OverlappedWrite );
if( !bWriteStat && ( GetLastError() == ERROR_IO_PENDING ){
if( WaitForSingleObject( m_OverlappedWrite.hEvent, 1000 ) )//這不是要判斷
dwBytesWritten = 0; //不懂 回傳的訊息
else
{
GetOverlappedResult( m_hIDComDev,&m_OverlappedWrite,&dwBytesWritten,FALSE);
m_OverlappedWrite.Offset += dwBytesWritten;
}
}
return( TRUE );
}
int CSerial::ReadData( void *buffer, int limit)
{
if( !m_bOpened || m_hIDComDev == NULL ) return( 0 );
BOOL bReadStatus;
DWORD dwBytesRead, dwErrorFlags;
COMSTAT ComStat;
ClearCommError( m_hIDComDev, &dwErrorFlags, &ComStat );
if( !ComStat.cbInQue ) return( 0 );
dwBytesRead = (DWORD) ComStat.cbInQue;
if( limit < (int) dwBytesRead ) dwBytesRead = (DWORD) limit;
bReadStatus = ReadFile( m_hIDComDev, buffer, dwBytesRead, &dwBytesRead,
&m_OverlappedRead );
if(!bReadStatus )
{
if( GetLastError() == ERROR_IO_PENDING )
{
WaitForSingleObject( m_OverlappedRead.hEvent, 2000 );//不懂
return( (int) dwBytesRead ); //不懂
}
return( 0 );
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.216.18.65
→
07/14 23:56, , 1F
07/14 23:56, 1F
※ 編輯: gg1122 來自: 61.216.18.65 (07/15 00:06)
→
07/14 23:59, , 2F
07/14 23:59, 2F
→
07/14 23:59, , 3F
07/14 23:59, 3F
→
07/15 00:40, , 4F
07/15 00:40, 4F
→
07/15 00:40, , 5F
07/15 00:40, 5F
→
07/15 00:41, , 6F
07/15 00:41, 6F
→
07/15 00:44, , 7F
07/15 00:44, 7F
→
07/15 00:45, , 8F
07/15 00:45, 8F
→
07/15 18:15, , 9F
07/15 18:15, 9F
→
07/15 18:15, , 10F
07/15 18:15, 10F
→
07/15 18:16, , 11F
07/15 18:16, 11F
→
07/15 18:17, , 12F
07/15 18:17, 12F
→
07/15 22:04, , 13F
07/15 22:04, 13F
→
07/15 22:06, , 14F
07/15 22:06, 14F
→
07/16 21:34, , 15F
07/16 21:34, 15F
→
07/16 21:35, , 16F
07/16 21:35, 16F