Comm ReadFile後 無法在sned資料 |
尚未結案
|
polom
一般會員 ![]() ![]() 發表:15 回覆:14 積分:15 註冊:2010-08-05 發送簡訊給我 |
各位前輩們:
小弟正在寫控制板的程式,遇到一個問題 控制板子上有24顆LED 我在第19顆下command時會收到不完整的訊息 再次對其他LED下command時就沒有反應了。 目前我的解決方式,收到這樣的錯誤訊息我就關閉COM PORT 重開 但不知是否有更好的方式呢? 感恩哦 下面是我讀寫的程式碼 write [code cpp] String temp ; char *SendData ; int ln ; unsigned long lrc, BS ; byte ch ; COMSTAT Commstat ; DWORD errors ; if (hComm == 0) return ; DynamicArray ByteData.Length = 5 ; ByteData[0] = StrToInt(Edit1->Text) ; ByteData[1] = StrToInt(Edit2->Text) ; ByteData[2] = StrToInt(Edit3->Text) ; ByteData[3] = StrToInt(Edit4->Text) ; ByteData[4] = StrToInt(Edit5->Text) ; for (int i=ByteData.Low; i<= ByteData.High;i ) { ch = ByteData[i]; ::WriteFile(hComm,&ch,1,&lrc,NULL); ClearCommError(hComm, &errors, &Commstat) ; } PurgeComm(hComm, PURGE_TXCLEAR) ; ReadRSData() ; ::ClearCommError(hComm, &dwError, &cs) ; /* if (cs.cbInQue > sizeof(inbuff)) { PurgeComm(hComm, PURGE_RXCLEAR) ; //清空緩衝區 return ; } */ ::ReadFile(hComm, inbuff, 1, &nBytesRead, NULL) ; tmpvalue = byte(inbuff[0]) ; ActionEven(tmpvalue) ; [/code] read [code cpp] String temp ; char inbuff[1] ; DWORD dwError, nBytesRead; COMSTAT cs ; byte tmpvalue = 0 ; ::ClearCommError(hComm, &dwError, &cs) ; /* if (cs.cbInQue > sizeof(inbuff)) { PurgeComm(hComm, PURGE_RXCLEAR) ; //清空緩衝區 return ; } */ ::ReadFile(hComm, inbuff, 1, &nBytesRead, NULL) ; tmpvalue = byte(inbuff[0]) ; ActionEven(tmpvalue) ; [/code] 編輯記錄
polom 重新編輯於 2011-02-21 20:10:06, 註解 無‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |