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

關於程式delay or sleep問題

答題得分者是:cmf
braveheart
一般會員


發表:35
回覆:62
積分:24
註冊:2003-05-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-09-01 23:01:25 IP:61.71.xxx.xxx 未訂閱
不好意思..請問各位先進..因我參考相關文章..不過還是不行.. 
 CapturedImage->SaveToFile("1.bmp");
       Image1->Picture->Assign(CapturedImage);
       Sleep(200);
       Application->ProcessMessages();
       CapturedImage->SaveToFile("2.bmp");
       Image2->Picture->Assign(CapturedImage);
程式還是會先delay再執行..之後享用無線迴圈執行用while do.. 不過剛剛學程式...所以不太會用.. 不支先進可否有解決方法....
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-09-01 23:12:07 IP:61.221.xxx.xxx 未訂閱
引言: 不好意思..請問各位先進..因我參考相關文章..不過還是不行..
 CapturedImage->SaveToFile("1.bmp");
       Image1->Picture->Assign(CapturedImage);
       Sleep(200);
       Application->ProcessMessages();
       CapturedImage->SaveToFile("2.bmp");
       Image2->Picture->Assign(CapturedImage);
程式還是會先delay再執行..之後享用無線迴圈執行用while do.. 不過剛剛學程式...所以不太會用.. 不支先進可否有解決方法....
braveheart 你好: 如果要 delay 比較久的時間,最好改成這樣子 (比較不像沒有回應) 請參考以下的範例程式碼 (總共會 class="code"> CapturedImage->SaveToFile("1.bmp"); Image1->Picture->Assign(CapturedImage); int i=0; while(i<20) { Sleep(100); Application->ProcessMessages(); i ; } CapturedImage->SaveToFile("2.bmp"); Image2->Picture->Assign(CapturedImage); -- Enjoy Researching & Developing -- 發表人 - RaynorPao 於 2003/09/01 23:13:34
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
braveheart
一般會員


發表:35
回覆:62
積分:24
註冊:2003-05-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-09-01 23:42:07 IP:61.71.xxx.xxx 未訂閱
先進您好...程式執行感覺是先顯示image1再顯示image2....內容好像是一樣 
CapturedImage->SaveToFile("1.bmp");
  Image1->Picture->Assign(CapturedImage);
  int i=0;
    while(i<90)
     {
         Sleep(100);
         Application->ProcessMessages();
         i  ;
      }      CapturedImage->SaveToFile("2.bmp");
  Image2->Picture->Assign(CapturedImage);
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-09-01 23:49:25 IP:61.221.xxx.xxx 未訂閱
引言: 先進您好...程式執行感覺是先顯示image1再顯示image2....內容好像是一樣
CapturedImage->SaveToFile("1.bmp");
  Image1->Picture->Assign(CapturedImage);
  int i=0;
    while(i<90)
     {
         Sleep(100);
         Application->ProcessMessages();
         i  ;
      }      CapturedImage->SaveToFile("2.bmp");
  Image2->Picture->Assign(CapturedImage);
braveheart 你好:
(1)請問?? 你想要達到的目的為何呢?? 好像一直都沒有說出來喔??
   是想要先顯示  >
(>>    -- 
        
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
braveheart
一般會員


發表:35
回覆:62
積分:24
註冊:2003-05-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-09-02 00:09:50 IP:61.71.xxx.xxx 未訂閱
不好意思..先進..真是相當抱歉  
CapturedImage->SaveToFile("1.bmp");
  Image2->Picture->Assign(CapturedImage); 
這功能是先將camera的image存成1.bmp再將其顯示出來..因為這不能在其它事件中呼叫其指令..所以要在這void __fastcall TCamera_Main::capBitmapGrabbed(TCapturedBitmap *CapturedImage)事件才能呼叫.. 我的目的是想要在間隔短時間後再執行相同指令
CapturedImage->SaveToFile("2.bmp");
  Image1->Picture->Assign(CapturedImage); 
存成2.bmp....然後再作差直影像等等處理...其1.bmp和2.bmp內容是不一樣... 感謝先進指導..謝謝先進
JerryKuo
版主


發表:42
回覆:571
積分:322
註冊:2003-03-10

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-09-02 09:46:43 IP:61.230.xxx.xxx 未訂閱
引言: 不好意思..先進..真是相當抱歉
CapturedImage->SaveToFile("1.bmp");
  Image2->Picture->Assign(CapturedImage); 
這功能是先將camera的image存成1.bmp再將其顯示出來..因為這不能在其它事件中呼叫其指令..所以要在這void __fastcall TCamera_Main::capBitmapGrabbed(TCapturedBitmap *CapturedImage)事件才能呼叫.. 我的目的是想要在間隔短時間後再執行相同指令
CapturedImage->SaveToFile("2.bmp");
  Image1->Picture->Assign(CapturedImage); 
存成2.bmp....然後再作差直影像等等處理...其1.bmp和2.bmp內容是不一樣... 感謝先進指導..謝謝先進
你好: 不知道有沒有人這樣做,下面是用c語言寫的,參考看看
#include      time_t     timeCurr;  // Current Time   
 time_t     timePrev;  // Previous Time     time(&timePrev);      // get previous time 
 time(&timeCurr);      // get current time    while ()  
{
    if((timeCurr - timePrev) >= 200) //200毫秒
    {
          Process Captured Image...
          timePrev = timeCurr;
    }
    else
    {
          Undo....
          or Break out if you want.....
    }
}
參考就好,bcb裡應該有更好用的物件,也請大家指教
braveheart
一般會員


發表:35
回覆:62
積分:24
註冊:2003-05-21

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-09-02 09:47:33 IP:61.71.xxx.xxx 未訂閱
恩..這兩種方法都試過...我想做的是程式先執行圖檔存根顯示的動作..過一段時間在做圖檔存取的動作..此時圖檔內容因該是要不一樣的..因這元件指令只能在相關事件中使用..所以想說用delay相關功能來做..不知可不可行...謝謝先進
braveheart
一般會員


發表:35
回覆:62
積分:24
註冊:2003-05-21

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-09-02 11:02:17 IP:61.71.xxx.xxx 未訂閱
我這兩都會重新抓圖..存成1.bmp 2.bmp.... 不知除了delay之外...還需作何處理嗎.....謝謝先進
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-09-02 13:24:44 IP:140.135.xxx.xxx 未訂閱
braveheart您好:   能否將您的目的再解釋一下,因為有點難理解   您是要將攝影機所擷取下來的影像做差量運算嗎?    順心 <>~我也是在學習的階段,回答的不好請您多多見諒與指教~
braveheart
一般會員


發表:35
回覆:62
積分:24
註冊:2003-05-21

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-09-02 13:58:18 IP:61.71.xxx.xxx 未訂閱
恩..是的先進..因為這CpaturedImage這指令不能在別的事件中呼叫..所以只能在所規定中的事件呼叫...所以想說用程式先抓一張圖當程式執行到delay or sleep時..程式再重新抓另一張圖...不知這想法可不可行....謝謝先進  
CapturedImage->SaveToFile("1.bmp");
  Image1->Picture->Assign(CapturedImage);
  DWORD tmrTemp = GetTickCount();
  while(true)
  {
    if((GetTickCount()-tmrTemp) > 5000)break;
    Application->ProcessMessages();
  }
  CapturedImage->SaveToFile("2.bmp");
  Image2->Picture->Assign(CapturedImage); 
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-09-02 14:21:08 IP:140.135.xxx.xxx 未訂閱
braveheart您好:   用兩個Timer,其中一個負責儲存1.bmp和2.bmp   另外一個Timer讀取並處理1.bmp和2.bmp    順心 <>~我也是在學習的階段,回答的不好請您多多見諒與指教~
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-09-02 14:26:39 IP:61.218.xxx.xxx 未訂閱
    __fastcall TFMain::TFMain(TComponent* Owner)
        : TForm(Owner)
{
 WaitGrab=False;
 imageIndex=0;
}    void __fastcall TFMain::TimerTimer(TObject *Sender)
{
 if (WaitGrab==False)
 {
  WaitGrab=True;
  cap->CaptureFrame();
 }  
}    void __fastcall TFMain::capBitmapGrabbed(TCapturedBitmap *CapturedImage)
{
 if (WaitGrab==True)
 {
  CapturedImage->SaveToFile(IntTostr(imageIndex) ".BMP");
  Image->Picture->Assign(CapturedImage);
  imageIndex  ;
  WaitGrab=False;
 }
}     
------
︿︿
braveheart
一般會員


發表:35
回覆:62
積分:24
註冊:2003-05-21

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-09-02 16:14:29 IP:61.71.xxx.xxx 未訂閱
相當感謝先進..觀摩先進程式....有一段不知先進寫這程式是如何想的.. 
__fastcall TFMain::TFMain(TComponent* Owner)
        : TForm(Owner)
{
 WaitGrab=False;
 imageIndex=0;
}
 
我已經將先進程式改成一次抓兩張..重複下去.... 請問若是
Graphic::Timage.... 
忘了要怎樣寫...像是這樣類事的程式..可以定義成extern嗎...謝謝先進
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-09-02 16:24:42 IP:61.218.xxx.xxx 未訂閱
"有一段不知先進寫這程式是如何想的.. " 不太懂你的意思是什麼? @@ "Graphic::Timage...." 還是看不懂你的意思是什麼? @@ "..可以定義成extern嗎" 真的看不懂? 煩請詳細說明 3q ^_^
------
︿︿
braveheart
一般會員


發表:35
回覆:62
積分:24
註冊:2003-05-21

發送簡訊給我
#15 引用回覆 回覆 發表時間:2003-09-02 17:07:49 IP:61.71.xxx.xxx 未訂閱
不好意思先進..我的表達能力不好...  
__fastcall TFMain::TFMain(TComponent* Owner)
        : TForm(Owner)
 
這代表意思是指..跟void _fastcall...有何不同 Graphics::TBitmap *Bmp1=new Graphics::TBitmap();這可以設成全域的嗎. 可以在別的事件中使用...非常感謝先進指教...謝謝
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#16 引用回覆 回覆 發表時間:2003-09-02 17:14:25 IP:61.218.xxx.xxx 未訂閱
這代表意思是指..跟void _fastcall...有何不同 ANS: 一樣 Graphics::TBitmap *Bmp1=new Graphics::TBitmap();這可以設成全域的嗎. 可以在別的事件中使用...非常感謝先進指教...謝謝 ANS:可以
------
︿︿
系統時間:2024-11-25 11:41:01
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!