在 05-11-2007 12:39 AM
於程式的內的block diagram內有一個"DAQmx Wait Until Done.vi"這個元件,有什麼功用,我不是很清楚,它的timeout(sec),我都不知道要怎麼設,我亂設17,可是好像也沒什麼差的感覺,它還是可以正常的於6.5536秒結束程式耶?實在,不知道那個元件在程式內的角色是什麼?都亂設的而已。
另外,我目前傳給您的這個vi檔的波形圖,無法即時看到波形在跑的即時狀況(必需等6.5536秒時間到時,才會整個輸出波形),現在若我要另外在做一個波形圖,可即時顯示電壓變化的波形,DAQmx有辦法做到嗎?
Wait Until Done.vi的作用是甚麼呢? |
在DAQmx中提供了兩個與任務是否完成有關的vi,一個是查詢任務是否完成vi——Is Task Done.vi,另一個是等待直到任務完成vi——Wait Until Done.vi 為什麼要設計這兩個vi呢?這是因為在調用Stop Task.vi時,任務可能還沒有結束。如果在任務還沒有結束時就調用Stop Task.vi來強制停止任務,那麼就可能出錯。 解決這個問題有兩種策略,一是每隔一定的時間去查詢任務的狀態,如果完成,就可以執行Stop Task vi;如果沒有完成,那麼就再查詢。在這種策略的需求下,NI的軟體工程師們就設計出了供用戶用於查詢任務是否完成的vi——Is Task Done.vi 第二種策略是,某些用戶不想去查詢,希望系統有一種類似中斷的機制,當任務未完成時,查詢工作被掛起;當任務完成時,查詢工作被啟動,然後繼續執行Stop Task.vi。 在這種策略的需求下,NI的軟體工程師們就設計出了等待任務是否完成的vi——Wait Until Done.vi Wait Until Done.vi 的好處是不需要一直去查詢,壞處是可能任務永遠不會完成,那麼查詢操作就一直被卦起,並阻塞後續的操作。由此,Wait Until Done.vi 又多出一個輸入參數——Timeout,超時標記,當等待一定時間後,發現等下去沒有什麼希望了,就利用超時機制回到執行過程中來,不要傻傻的等下去~~~ 若timeout設定為17秒,意思就是說這個DAQmx Wait Until Done.vi會等待DAQ完成工作才會進行後續的程式,以你的程式來說,目前只要執行6.5536秒就可以結束,但是如果DAQ沒有反映造成DAQmx Wait Until Done.vi一直等下去也不是辦法。所以你就設定了timeout值,意思就是說,最多等17秒,如果等待時間超過17秒,就視為錯誤,程式繼續進行,但是error out會出現錯誤。 |
在 06-10-2007 01:55 AM
Ancle:
如果我的任务是一个连续产生脉冲的任务。那末,程序运行后,该任务是一直执行的,没办法检查到任务结束的信息;也不可能用等待多少时间(无法确定这个时间)来结束任务。
使用“Stop Task.vi" 会报告错误吗?