RS232設備緩衝過溢 |
尚未結案
|
yachu721
初階會員 發表:51 回覆:98 積分:44 註冊:2003-07-13 發送簡訊給我 |
請問大大
跟設備大量傳輸資料的時候
傳輸速率在4800的時候很穩定
但傳輸速率高於9600的時候卻會發生設備緩衝過溢的情況
我有使用XONXOFF軟體協定
有可能是什麼問題的
我使用的是SPCOMM元件
程式碼如下 以下是在接收的事件下
void __fastcall TFormMain::Comm1ReceiveData(TObject *Sender, Pointer Buffer, WORD BufferLength) { String bhu7 = (char *) Buffer; TStrings *sk=new TStringList; sk->Add(bhu7); String sd=sk->Text; if(sd.Length()<=3) { if(sd.Pos(char(17))!=0) ////xon { datatrans=true;////傳送程式之while迴圈為true Tdata();////進入傳送程式之while迴圈副程式 return; } if(sd.Pos(char(19))!=0) ////xoff { datatrans=false;////傳送程式之while迴圈為false Tdata();////進入傳送程式之while迴圈副程式 return; } } } |
yachu721
初階會員 發表:51 回覆:98 積分:44 註冊:2003-07-13 發送簡訊給我 |
|
DavidLo
高階會員 發表:17 回覆:225 積分:168 註冊:2004-07-21 發送簡訊給我 |
|
yachu721
初階會員 發表:51 回覆:98 積分:44 註冊:2003-07-13 發送簡訊給我 |
DavidLo大大您好
我確定設備(我要控制的設備)有回傳DC1(XON)及DC3(XOFF)來控制流量
我的方法是利用 類似如下
在接收的事件下 收到DC1(XON)
則使副程式中的while迴圈啟動
收到DC3(XOFF)
則使副程式中的while迴圈停止
bool datatrans=false;///全域變數決定XON或XOFF //----------------------------------- while(datatrans) { Application->ProcessMessages(); 傳送程式 }這種方法好嗎 還是要在迴圈中 每RUN一次就去偵測是否有資料近來 還是用多執行緒來寫會比較好呢 這跟COM的UART晶片Buffer有關嗎 發表人 - yachu721 於 2005/12/08 18:52:16 |
DavidLo
高階會員 發表:17 回覆:225 積分:168 註冊:2004-07-21 發送簡訊給我 |
|
yachu721
初階會員 發表:51 回覆:98 積分:44 註冊:2003-07-13 發送簡訊給我 |
|
DavidLo
高階會員 發表:17 回覆:225 積分:168 註冊:2004-07-21 發送簡訊給我 |
|
yachu721
初階會員 發表:51 回覆:98 積分:44 註冊:2003-07-13 發送簡訊給我 |
|
DavidLo
高階會員 發表:17 回覆:225 積分:168 註冊:2004-07-21 發送簡訊給我 |
|
yachu721
初階會員 發表:51 回覆:98 積分:44 註冊:2003-07-13 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |