線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1242
推到 Plurk!
推到 Facebook!

發送多個串埠指令,如何僅會取回第一次的數據?

尚未結案
mathewzhao
中階會員


發表:121
回覆:164
積分:67
註冊:2003-04-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-06-15 17:00:24 IP:61.185.xxx.xxx 未訂閱
各位先進好! 我在使用一個RS232元件時發現一個問題,在第一次從串埠 BUFFER取出數據後,以後再取數據時,一發出取數據指令,還沒加引數,程式就自動取出結果,且都是第一次的內容。 我監測串埠時發現,在我第一次以後再發出取數據指令時,串埠實際上沒有取回任何結果。 因此,一開始我想是在我程式的內部存有第一次取回的內容,沒清除,所以老是取會相同的內容,但反反覆復的檢查後,發現不是這個原因 後來我想是不是在串埠 BUFFER有內容沒清除,因此在每次發出取數據指令前,先關閉串埠端口,然後再打開。但依然存在這個問題。 最後我想是不是這個RS232元件的原因,但是我現在不知道如何確定是不是這個RS232元件引起這個問
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-06-15 17:21:07 IP:202.39.xxx.xxx 未訂閱
您是用哪一種元件?怎麼取出 Buffer 內的資料?    --- 每個人都是一本書
mathewzhao
中階會員


發表:121
回覆:164
積分:67
註冊:2003-04-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-06-16 09:01:39 IP:61.150.xxx.xxx 未訂閱
感謝hagar 前輩得回應! 我用的元件是由文魁資訊股份有限公司出版,范逸之先生、陳立元先生所著《Delphi 與 RS─232串列通訊控制》一書隨書附帶的串埠元件。 讀取Buffer的資料: ‧‧‧ FcommError:Dword; szInputBuffer:array[0‧‧InputBuffersize-1] of char; FInputData:string; ‧‧‧‧ property InputLen:DWORD read FInputLen write FInputLen; ‧‧‧‧ Procedure TComm‧ReadProcess; var nBytesRead: DWORD; dwCommError: DWORD; CS: TCOMSTAT; i,ReadLen: DWORD; begin //使用ClearCommError得知有多少的數據在BUFFER中 //並得知錯誤種類 ClearCommError(hComm,dwCommError,@CS); //取得狀態 FCommError:=dwCommError; //錯誤數值 if cs‧cbInQue <>0 then //若BUFFER 有數據,則讀取 begin if InputLen=0 then //指定讀取的數據數 ReadLen:=cs‧cbInQue else ReadLen:=InputLen; if cs‧cbInQue > sizeof(szInputBuffer) then PurgeComm(hComm, PURGE_RXCLEAR) // 清除COM 數據 else begin //讀取數據 if ReadFile(hComm, szInputBuffer,ReadLen,nBytesRead,nil) then // 接收COM 的數據 begin //取出數據 FInputData:=Copy(szInputBuffer,1,ReadLen); //設置byte array 長度 SetLength(FInputByteData,ReadLen); //將數據搬到 array 中 for i:=0 to ReadLen-1 do FInputByteData[i]:=ord(szInputBuffer[i]); end; //ReadFile Loop end;//else Loop end; //cs‧binQue Loop end;
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-06-16 20:24:05 IP:202.39.xxx.xxx 未訂閱
您貼的是 TComm 元件中的一個 procedure 看不懂您的問題.    --- 每個人都是一本書
系統時間:2024-04-25 21:05:37
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!