timer計時問題 |
尚未結案
|
mikie0520
一般會員 ![]() ![]() 發表:2 回覆:1 積分:0 註冊:2017-06-29 發送簡訊給我 |
請問一下各位大大
小弟我的程式碼如下 void __fastcall TForm1::ReceiveClick(TObject *Sender){ Edit5->Text=5;//倒數5秒 Timer1->Interval=1000; //1秒更新1次 Timer1->Enabled=true;//開始計時 unsigned long lrc,BS,PC; COMSTAT cs; if (hComm==0) {ShowMessage("Please open the port");return;} //檢查Handle值 ClearCommError(hComm,&PC,&cs);//取得COM狀態 int iTimes=0; for(int i=0;i if(cs.cbInQue>0&&Edit5->Text=="0"){//時間到沒收完 Edit3->Text="fffe"; DLE_packing->Click(); Send->Click(); return; } } unsigned long ulRecDat=sizeof(pcReceData)/sizeof(BYTE); for(int i=0;i String caSrc=IntToHex(bDoc&0xff,2); Memo2->Text=Memo2->Text caSrc; } } Timer程式碼: void __fastcall TForm1::Timer1Timer(TObject *Sender) { int iDes=StrToInt(Edit5->Text); iDes--; Edit5->Text=IntToStr(iDes); if(iDes<=0){Timer1->Enabled=false;} } 會發生以下狀況: 在Memo2區塊顯示完收集的資料後 才會開始計時 目前是要做一個Timeout機制 在5秒內要收完所有資料 如果沒有就傳錯誤訊息給終端 傳輸方式是RS232 小弟我對於BCB完全是生手 對於這個問題 希望各位高手們 能夠指點一二 希望能知道 1.為什麼會發生這樣的狀況 2.如果要達成我的目的 有其他更好的方式嗎? 謝謝各位 |
mikie0520
一般會員 ![]() ![]() 發表:2 回覆:1 積分:0 註冊:2017-06-29 發送簡訊給我 |
上面那題改好了
把要做的事放在timer裡就行了 現在另一個問題是 我現在希望接收到1個資料後 立刻將Timer設為1並馬上觸發 可是照我的寫法 是接收到一筆資料並過了1秒後 才繼續接收資料 可以請各位版上大大指點嗎?3Q 小弟我對於BCB真的是新手 程式碼如下 unsigned long ulRecelrc; if(ReadFile(hComm,&pcReceData[iTimes],1,&ulRecelrc,NULL)){ BYTE bDoc=pcReceData[iTimes]; String caSrc=IntToHex(bDoc&0xff,2); Memo3->Text=Memo3->Text caSrc; iTimes ; Timer2->Enabled=false; Timer2->Interval=1000; Timer2->Enabled=true; } |
jcjroc
高階會員 ![]() ![]() ![]() ![]() 發表:21 回覆:279 積分:115 註冊:2002-09-18 發送簡訊給我 |
學生做專題???
如果不是,那你應該不常接觸Windows AP的開發.尤其是通訊這個領域應用. 通訊不是這樣幹的啦! 通訊的接收最好要在Thread中,並使用Wait的方式去等待資料,所有Timeout控制不會使用Timer 網路上有許多相關程式碼,多去看看吧!!! ===================引 用 mikie0520 文 章=================== 上面那題改好了 把要做的事放在timer裡就行了 現在另一個問題是 我現在希望接收到1個資料後 立刻將Timer設為1並馬上觸發 可是照我的寫法 是接收到一筆資料並過了1秒後 才繼續接收資料 可以請各位版上大大指點嗎?3Q 小弟我對於BCB真的是新手 程式碼如下 unsigned long ulRecelrc; if(ReadFile(hComm,&pcReceData[iTimes],1,&ulRecelrc,NULL)){ BYTE bDoc=pcReceData[iTimes]; String caSrc=IntToHex(bDoc&0xff,2); Memo3->Text=Memo3->Text caSrc; iTimes ; Timer2->Enabled=false; Timer2->Interval=1000; Timer2->Enabled=true; } |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |