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

怎樣寫出較有效率的程式???

答題得分者是:syntax
helpme
一般會員


發表:3
回覆:4
積分:1
註冊:2007-10-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-10-19 00:42:04 IP:210.64.xxx.xxx 訂閱
我是自動控制的學生
最近老師出了一個難題
考倒了我這個愚蠢的笨學生
以往做外部的資料資料擷取
是用一片PCI介面卡來取得外部資料
程式是用Timer物件將外部資料取得後
將全域的變數資料更新
老師認為擷取資料後的處理速度太慢了
但是以前使用的開發軟體是VB
所以想改以BCB來撰寫程式
但是不知道怎樣才能寫出具有較即時性的程式
譬如我每10ms將外部的資料取得後能夠即刻的將其顯示在一個LABLE上面
重點在及時性以及取樣時間的準確性
因為VB的Timer物件的時間實在是誤差太多了
老師一直說C語言的效能比較好
希望各位前輩能夠教導我這個初學的菜鳥
謝謝!!
chronok
一般會員


發表:0
回覆:4
積分:0
註冊:2004-03-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-10-19 09:51:02 IP:61.219.xxx.xxx 訂閱
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-10-20 19:42:47 IP:61.64.xxx.xxx 訂閱
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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-10-23 23:06:28 IP:211.74.xxx.xxx 訂閱
 感謝您的教導
helpme
一般會員


發表:3
回覆:4
積分:1
註冊:2007-10-18

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-10-23 23:17:03 IP:211.74.xxx.xxx 訂閱
感謝syntax的指導!! 
1. 請問"多媒體計時器"該如何使用呢?
2. 怎樣才能將"程序與執行緒使用權設到最高"?
3. ""請替換 Windows Shell ,直接跑你的程式,不過,也就只成跑你的程式,所以程式中,要設一項叫出檔案總管的功能,以便不時之需,這樣 CPU 幾乎就全力在跑你的程式囉""該如何才能達成呢?
這樣是否可作多執行緒呢?
以上是否有範例可供學習呢?
願接受您的教導!!
謝謝!!
sonice@ms90.url.com.tw


===================引 用 syntax 文 章===================
GetTickCount 有只準確到 10ms
需要正準確,請使用多媒體計時器

然而若是需要更精準

請將程序與執行緒使用權,設到最高

若是,需要更加精準

請替換 Windows Shell ,直接跑你的程式,不過,也就只成跑你的程式,所以程式中,要設一項叫出檔案總管的功能,以便不時之需,這樣 CPU 幾乎就全力在跑你的程式囉
系統時間:2017-11-18 20:00:40
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!