請問如何加速一個迴圈的速度

小弟現在用一張UEI的daq卡 他的sample rate可以到達500k

可是我要用來做及時控制....發現一個while迴圈都是以ms為單位

有什麼方法可以讓他抓值.運算.送值這樣的動作到達百kHZ級??

我才剛接觸labview....所以還不太會用

我目前用while loop讓訊號一個迴圈進來和送值.當中的運算也在一個迴圈內

不知道有沒有建議較好的寫法  謝謝摟 ^^

經驗上是這樣的...因為LabVIEW效能上會比一般語言來得差一點, 這時候可能卡的Driver寫得好壞就很重要了! for LV的driver若寫得不是很好就容易有達不到最高規格的情形, 另一方面你可以將抓值與運算分開兩個執行緒來做, 不過處理的速度與運算複雜度與電腦等級也有相關, 以目前intel 支援HT的技術來說, 應該是改善許多吧..所以再多CPU來處理即時的多續程式上是會有顯著上的差異吧!不過單一執行緒中, 若以全速執行(不Delay), 你將看到CPU總是保持在full load....

[QUOTE=巴拉巴拉豆]有什麼方法可以讓他抓值.運算.送值這樣的動作到達百kHZ級??[/QUOTE]

我覺得因為牽涉到根儀器溝通,所以速度方面取決於儀器本身,電腦的計算速度比儀器資料的讀取快很多,所以還不太需要擔心電腦的速 度。Driver寫的好壞很重要,但是以NI的DAQ來說,Driver是由NI公司寫的,所以我們也沒有辦法(也沒有能力)自 解寫DAQ的Driver。

如果你需要做到這麼快速的資料寫入&寫出,應該藉助硬體的幫忙。如果只有軟體,可能做不到每一個迴圈僅花0.1ms左右。

 

應該這麼說....我是拿LABVIEW來做光碟機的伺服控制

所以我是在光碟機上取樣訊號  然後經過DAQ卡  再進到LV

同樣的....訊號在LV內處理完後再經DAQ回到光碟機上

當然DAQ的速度是夠....只是不知道有沒有什麼比較好的寫法來處理

Benjamin大大有提到硬體來幫忙,不知道有沒有什麼可以參考的資料??

謝謝摟 ^^

我個人認為應該可以把讀取的值全放在緩衝區,程式再從緩衝區抓取

詳細部分在精華區有說明