cpu使用率越來越高

我的程式有兩個while迴圈,一個是用rs232傳封包解碼並顯示再chart,一個是透過event掃描按鍵擷取訊號時間的迴圈

但現再出現一個問題是我的cpu會不斷增加,
我已經是過在迴圈中加delay但只是暫時的執行時間過一下子又會飆升,
我也試過使用time loop指定cpu再第一顆跟第三顆週期為1ms但結果上跟加delay一樣。
想請問有沒有人遇過這類問題或是有問題的方向

我有些印象,先前給你建議的時候,有一個東西我不知道,所以後來始終導致額外的CPU Loading


就是當時碰到Array送進Waveform Chart的時候,一定要先Transpose Array,才能按照習慣的方式送進去。
而Transpose Array這個VI,這個動作,其實會大量的吃資源

事實上,可以先Create一個Property Node,選擇Transpose Array。然後把True送給他。讓程式每次開始前都會送True。
設定後,這個元件就會自動依照轉置後的原則來吃資料了。



分辨方式,
[1] 用Diagram Disable Structure把程式區的Waveform Chart遮起來。看看會不會改善。
[2] 進一步把資料送進去前的資料轉置(Transpose Array) VI這一段遮起來,看看會不會改善。上面的建議就是針對這一個問題。

如果還是有問題,麻煩再貼出來。

[QUOTE=scott9330]我的程式有兩個while迴圈,一個是用rs232傳封包解碼並顯示再chart,一個是透過event掃描按鍵擷取訊號時間的迴圈

但現再出現一個問題是我的cpu會不斷增加,
我已經是過在迴圈中加delay但只是暫時的執行時間過一下子又會飆升,
我也試過使用time loop指定cpu再第一顆跟第三顆週期為1ms但結果上跟加delay一樣。
想請問有沒有人遇過這類問題或是有問題的方向
[/QUOTE]

請問可以直接看你的程式嗎? 這樣比較可以快速看看是哪邊出了問題 ^^

請直接上傳程式即可 

隨著使用時間越長,電腦效能越來越慢,通常原因是累積了太多(不必要的)資料在記憶體內。


可以開啟windows內建的「工作管理員」,去觀察記憶體的變化情形。

如果隨著程式的執行,記憶體的使用量一直上升,就要自細檢查程式是否有累積記憶體的部分,並予以優化。


Tips: LabVIEW的程式開發過程中,由於可以任意拉資料在Front Panel上面,所以往往會不知不覺地使用太多記憶體,這樣會讓OS的效能降低。
Benjamin43119.6759259259

抱歉這麼久才回各位,因為期末很多事,所以先擱下這個問題

目前的狀況是cpu會逐漸增加但大約在40%時又會跳回8%過一陣子又會增加

在顯示上會出現不穩定的狀,每次爬升的時間大約五分鐘左右

波形會在cpu使用率高時出現資料累積在一次送出的狀況

(視覺看起來像是停一下然後又便快顯示)

目前我的記憶體式沒有出現不斷增加的問題,通常維持在一定的量

嚐試方法-----------------------------------------------------------------------------------------------------------

我有嘗試在chart中的property node轉至陣列但結果沒有太大區別

(但值得一提的是在迴圈中的chart似乎會因為property傳輸的速度關悉造成有時需在下次執行才可轉致)

猜想問題------------------------------------------------------------------------------------------------------------

另外我也在猜想戶出現這個問題適queue累積所以我有試試把queue拿掉,但反而整體的速度都變慢

或是在進行串列傳輸時每次傳輸的數據大小不一所以我在想事不是這樣造成程式負擔的

下方式我的整個程式,為了整裡我將一些部分都轉成subvi所以會有點複雜

subvi有bigdicision301 將解碼完的資料分成四種輸出開始 暫停 ADC資料 GAIN資料

            bo8to401將兩個數字轉為二進制結合再轉為數字輸出

            check03 檢查碼比對 

            dicision203 判斷封包的CMD來改變每次收封包的大小及資料

主程式為swallow2901主要為使用最上方迴圈收封包解碼在用QUEUE傳道下方迴圈顯示,EVENT迴圈作用為按鍵掃描記錄時間。

在麻煩各位了

2.9subvi.7zswallow29.vi