全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:4193
推到 Plurk!
推到 Facebook!

Timer與QueryPerformanceFrequency的使用?

尚未結案
enu
中階會員


發表:36
回覆:93
積分:55
註冊:2003-10-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-05-31 14:34:43 IP:163.27.xxx.xxx 未訂閱
各位先進好,小弟根據站內文章和自己的實作發現Timer和QueryPerformanceFrequency做出的計時器是有差別的;現在遇上一個問題,假如小弟將滑鼠由A點移動到B點,可以使用QueryPerformanceFrequency的方式算出所花的時間,這時如果小弟透過Timer時間取樣,例如每0.1秒取樣一次,也就是每一秒會取出10個點,此時會發現所花的時間和取樣數不合了。 也就是假如由A點到B點用QueryPerformanceFrequency計時花了1.2多秒,理論上會收到12個點,可是在Timer收回來的點總數和這個都不相同。 不曉得各位先進可以提供什麼建議沒有?QueryPerformanceFrequency和QueryPerformanceCounter可以拿來每0.1秒記錄一次點座標嗎?懇請各位先進賜教了!謝謝!
justdo
高階會員


發表:2
回覆:359
積分:222
註冊:2004-08-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-05-31 22:41:59 IP:221.169.xxx.xxx 未訂閱
Timer的精確度較差,而用QueryPerformanceFrequency的方式精確度是最高的,但若要用來當Timer,會耗費較多的系統資源 印象中,有本「深入淺出Delphi」有探討這個東西,你可以找來看看 我是建議,若不要求很精確的話,其實用Timer就行了...
enu
中階會員


發表:36
回覆:93
積分:55
註冊:2003-10-22

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-01 02:38:25 IP:218.165.xxx.xxx 未訂閱
謝謝justdo大大,但因為老板要求精準,所以才想要棄Timer而就QueryPerformanceFrequency的方式;嗯!至少可以先看看您所提的那本書,謝謝! 希望還有大大可以指點一二,感恩呀!
Demo99
一般會員


發表:2
回覆:8
積分:2
註冊:2003-06-27

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-06-07 19:45:53 IP:59.112.xxx.xxx 未訂閱
用 QueryPerformanceFrequency 可以取得頻率(次/秒) 如此一來便可以知道每0.1秒是在第幾次的地方    類似以下的程式碼:    
TLargeInteger L;
TLargeInteger sTime, cTime;
int freq;
QueryPerformanceFrequency(&L);
freq = L.QuadPart/10;  //次/0.1秒    QueryPerformanceCounter(&sTime); //取得起始的計數值
int count = 0;    
while(1)
{
  QueryPerformanceCounter(&cTime); //取得目前的計數值
  if( int( (cTime.QuadPart-sTime.QuadPart)/freq ) == count )
  {
    dosomething();    //get mouse position?
    count  ;
    if(count >=120)   //12sec..
      break;
  }
} 
這樣應該就可以達到類似Timer的效果了
enu
中階會員


發表:36
回覆:93
積分:55
註冊:2003-10-22

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-06-20 09:57:42 IP:163.27.xxx.xxx 未訂閱
謝謝Demo99大大,This is a good suggestion. Thank you very much. 但是我測試的結果loading很重,是沒有當掉,不過也沒差多少了,不知道如何解了!
GeorgeKu
中階會員


發表:1
回覆:120
積分:74
註冊:2004-10-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-06-20 12:01:00 IP:61.228.xxx.xxx 未訂閱
enu, 你可以在while迴圈裡面加一個Sleep(1);這樣應該就不會顯示LOADING重了.
系統時間:2024-04-26 8:25:18
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!