為什麼這篇rs232資料讀取鄉民發文收入到精華區:因為在rs232資料讀取這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者bn01134053 (如沐春風進入語音)看板C_and_CPP標題[問題] RS232讀取問題...
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 )
( 未必需要依照此格式,文章條理清楚即可 )
遇到的問題: (題意請描述清楚)
1.我看了Serial Communications in Win32的文章對於RS232讀取資料有個疑問
下面是該文章關於READING的程式碼。其中ReadFile(hComm, lpBuf, READ_BUF_SIZE
, &dwRead, &osReader)) 的lpBuf為讀取到的字串,READ_BUF_SIZE為字串的
位元,那麼我可以假設lpBuf為char lpBuf[1024],READ_BUF_SIZE的位置直接
寫1024嗎?
2.另外一個問題是我還須要額外設定讓資料儲存的位置以便接收由終端機傳來的
字串嗎?
3.我DEBUG的結果說 HandleASuccessfulRead(lpBuf, dwRead)並未辨識,
HandleASuccessfulRead()函數是WIN32 API的函數嗎?
希望得到的正確結果:
我不太瞭解由終端機傳來的資料是不是儲存在lpBuf
程式跑出來的錯誤結果:
開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
VC++
有問題的code: (請善用置底文標色功能)
DWORD dwRead;
BOOL fWaitingOnRead = FALSE;
OVERLAPPED osReader = {0};
// Create the overlapped event. Must be closed before exiting
// to avoid a handle leak.
osReader.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
if (osReader.hEvent == NULL)
// Error creating overlapped event; abort.
if (!fWaitingOnRead) {
// Issue read operation.
if (!ReadFile(hComm, lpBuf, READ_BUF_SIZE, &dwRead, &osReader)) {
if (GetLastError() != ERROR_IO_PENDING) // read not delayed?
// Error in communications; report it.
else
fWaitingOnRead = TRUE;
}
else {
// read completed immediately
HandleASuccessfulRead(lpBuf, dwRead);
}
}
補充說明:
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.230.126.120