怎樣寫出較有效率的程式??? |
答題得分者是:syntax
|
helpme
一般會員 發表:3 回覆:4 積分:1 註冊:2007-10-18 發送簡訊給我 |
我是自動控制的學生
最近老師出了一個難題 考倒了我這個愚蠢的笨學生 以往做外部的資料資料擷取 是用一片PCI介面卡來取得外部資料 程式是用Timer物件將外部資料取得後 將全域的變數資料更新 老師認為擷取資料後的處理速度太慢了 但是以前使用的開發軟體是VB 所以想改以BCB來撰寫程式 但是不知道怎樣才能寫出具有較即時性的程式 譬如我每10ms將外部的資料取得後能夠即刻的將其顯示在一個LABLE上面 重點在及時性以及取樣時間的準確性 因為VB的Timer物件的時間實在是誤差太多了 老師一直說C語言的效能比較好 希望各位前輩能夠教導我這個初學的菜鳥 謝謝!! |
chronok
一般會員 發表:0 回覆:4 積分:0 註冊:2004-03-03 發送簡訊給我 |
timer到50ms就開始不精準了
這樣的話應該是你要的 這是無窮迴圈,請小心使用 [code cpp] DWORD dwStartTime, dwStayTime; dwStayTime = 10; // 等待10ms do{ dwStartTime = GetTickCount(); do{ Application->ProcessMessages(); }while ( dwStayTime > (GetTickCount()-dwStartTime) ); // 取得外部的資料後即刻將其顯示在一個LABLE上面,寫在這 }while(true); [/code] |
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
GetTickCount 有只準確到 10ms
需要正準確,請使用多媒體計時器 然而若是需要更精準 請將程序與執行緒使用權,設到最高 若是,需要更加精準 請替換 Windows Shell ,直接跑你的程式,不過,也就只成跑你的程式,所以程式中,要設一項叫出檔案總管的功能,以便不時之需,這樣 CPU 幾乎就全力在跑你的程式囉 ===================引 用 chronok 文 章=================== timer到50ms就開始不精準了 這樣的話應該是你要的 這是無窮迴圈,請小心使用 [code cpp] DWORD dwStartTime, dwStayTime; dwStayTime = 10; // 等待10ms do{ dwStartTime = GetTickCount(); do{ Application->ProcessMessages(); }while ( dwStayTime > (GetTickCount()-dwStartTime) ); // 取得外部的資料後即刻將其顯示在一個LABLE上面,寫在這 }while(true); [/code] |
helpme
一般會員 發表:3 回覆:4 積分:1 註冊:2007-10-18 發送簡訊給我 |
|
helpme
一般會員 發表:3 回覆:4 積分:1 註冊:2007-10-18 發送簡訊給我 |
感謝syntax的指導!!
1. 請問"多媒體計時器"該如何使用呢? 2. 怎樣才能將"程序與執行緒使用權設到最高"? 3. ""請替換 Windows Shell ,直接跑你的程式,不過,也就只成跑你的程式,所以程式中,要設一項叫出檔案總管的功能,以便不時之需,這樣 CPU 幾乎就全力在跑你的程式囉""該如何才能達成呢? 這樣是否可作多執行緒呢? 以上是否有範例可供學習呢? 願接受您的教導!! 謝謝!! sonice@ms90.url.com.tw ===================引 用 syntax 文 章=================== GetTickCount 有只準確到 10ms 需要正準確,請使用多媒體計時器 然而若是需要更精準 請將程序與執行緒使用權,設到最高 若是,需要更加精準 請替換 Windows Shell ,直接跑你的程式,不過,也就只成跑你的程式,所以程式中,要設一項叫出檔案總管的功能,以便不時之需,這樣 CPU 幾乎就全力在跑你的程式囉 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |