無解-程式DELAY超嚴重

請教各位大大,原始程式:OSAnalysis.llb,OOIDRV32.zip...這是8.2版本滴

1.我的程式一直會有delay現象,我有試著把部份判別的vi拿掉,丟一個constant的序號給它,但似乎沒改善??我之前有試過一次可以,但沒存到檔(殘念)...後來怎麼試都不行!!OSAnalysis-TEST1.llb

2.另外,我發現一個很奇怪的現象,我明明用這個程式在8.2版本執行可以抓得到我儀器的序號,但是相同程式到8.5執行時卻讀不到儀器序號,這是為什麼??

先檢查執行過程中 CPU 是不是跑100%

如果是的話在每個whlie loop加上Wait Until Next ms Multiple Function設定至少10以上

再來是檢查 dll設定是否有錯

每次開好像都要設定

Ding0040158.5022337963

我試了..但還是不行,

![](upload://eEfCsudjWCTbqt5jrMJYvz8FPHi.jpeg)

我有逐一確認過set與get的vi,確認都有回傳值,我在front panel也有看到顯示結果,但是顯示時還是會delay個10秒以上,

程式在跑的過程中CPU有跑100%嗎?

可以嘗試用上面的小燈泡跑跑看 檢查在那個部分跑特別久

如覺得小燈泡太慢可以設立了一個step 在適當的地方寫入值

就可以從front panel 觀察那一個step 停留比較久

再設立斷點 配合 小燈泡 跟 針角 就可以找到問題點

1.cpu才32%...沒有100%

2.我用燈泡看...執行時都沒有特別慢的地方,馬上就可以stop,但是run狀態下,就是會delay,很奇怪!!

32%那應該沒有卡住的地方

由於你有Call 外部的dll 可能會比較慢

有測過 每call 一次需要多少時間嗎?

還有"#" 的次數到後面是多少呢?

1.每call一次,不會超過2sec

2.#的部份,我最後只丟"1",確保每次while loop執行,n只會執行一次,但還是沒改善,其餘我能儘量改為constant的...我都改了,最後改到只call 2個外部vi,但還是一樣!!!

call一次不會超過2sec ??? 事實上2Sec 很久

且你把for loop 寫在 while loop 裡面 # 的次數即使是1 還是無限次在Run

最好測出while loop 執行依次需要多少時間

將Wait Until Next ms Multiple Function改成大於那個時間

不然你就先改成3000 試試看!!

 

 

唉~還是不行耶…還是會delay

設成3000 多少都有些delay

問題是delay的時間是否有縮短

還有測試 while loop 執行一次的時間到底是多少??

call dll 超過 1sec 我是覺得有點離譜   確定這個dll 沒有問題嗎?

嗯...我再試試...感謝您的幫忙

dll部份確實沒問題,我有用step確認每個vi確實有讀到其設定值

![](upload://huH8dCSExavHdChqOuTYfk6CGYO.jpeg)

目前看起來,應該不是LABVIEW程式執行造成的延遲現象,各個VI執行都不超過1SEC

另外,NI 工程師提供的小工具,提供給大家參考

TOOLS->PROFILE->PERFORMANCE AND MEMORY選項,可以條列出各個VI及副屬VI的執行時間與記憶體大小,就可找出是那個程式執行時間過長或佔記憶體