每分鐘第30秒擷取資料一次如何寫?

各位大大您好

我想要做的是每分鐘擷取一次資料(或執行某事情),而且是在指定的第n秒的時候(所以使用ELAPSED TIME是不行的)

我目前可以做得到的寫法是這樣:每分鐘執行一次.vi (這個程式是比對到每分鐘第0秒時執行一次,每100ms檢查一次系統時間,用2009的版本寫的)

但是這樣的方式十分耗損系統效能,有一顆cpu簡直是卯起來狂奔

怎麼樣用EVENT來完成這樣的事情呢?或是有其他節省系統效能的做法

PS. 我另外一個想達到的是,除了能夠每分鐘第30秒抓取一次之外,另外還有一個"馬上抓"按鍵也可以讓程式不用等到第三十秒就執行,像是這樣一樣,但我也希望能夠一起改成event的方式

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

 

 

感謝各位大大的耐心閱讀。

Apshmaster40363.7003587963

可以將程式轉成8.6版嗎?

你所說的30秒抓取一次是指絕對時間嗎? (如1分1秒開始執行,希望在30秒紀錄還是希望在第31秒時紀錄?)

既然希望每30秒紀錄一次100ms可以改成1000ms,還是說有其他用途?

Hi,參考一下這個連結是否對你有幫助

此連結內容為:定時記錄及儲存資料
或許你可以修正成每固定秒數下擷取資料
http://it360.tw/forum/forum_posts.asp?TID=12295&KW=%A9w%AE%C9%B0O%BF%FD

 

[QUOTE=Ding00]

可以將程式轉成8.6版嗎?

你所說的30秒抓取一次是指絕對時間嗎? (如1分1秒開始執行,希望在30秒紀錄還是希望在第31秒時紀錄?)

既然希望每30秒紀錄一次100ms可以改成1000ms,還是說有其他用途?

[/QUOTE]

 

您好,我已經轉好檔如附件每分鐘抓一次8.6版.vi

我的意思是依照系統時間,也就是電腦的時鐘的每分鐘第三十秒

如果改成1000ms正好是一秒,可能會錯過我指定的秒數

我有改過讓它變成每個迴圈700~800ms,可行,但對系統的負擔仍然不小

感謝您的回復

[QUOTE=elvistu]

Hi,參考一下這個連結是否對你有幫助

此連結內容為:定時記錄及儲存資料
或許你可以修正成每固定秒數下擷取資料
http://it360.tw/forum/forum_posts.asp?TID=12295&KW=%A9w%AE%C9%B0O%BF%FD

[/QUOTE]

您好,您所附給我的連結我看過了

它上面的只是定時記錄(定間隔)

而我除了要避免掉累計時間差,而且還要對應在系統時間(就是電腦顯示的時間)

的每分鐘指定秒,所以有些不同

謝謝您的回覆

改成event模式 8.6_v1.vi 但不知有沒有比較有效率?試試看吧!

[QUOTE=Ding00]

改成event模式 8.6_v1.vi 但不知有沒有比較有效率?試試看吧!

[/QUOTE]

非常感謝您的協助

用你的方式確實減少了非常多的cpu time

系統減少了非常多的loading。

 

如果您有時間的話,我還有一個小疑問,就是關於count的那個boolean

我原本是想要將要執行的程式也寫在一個event裡面,然後觸發的條件是count的value change

但這個程式卻不會被觸發成功。我後來只好將這個要進行的程式製作成子VI放到跟count同一個迴圈裡就可以跑了,只是說顯示的畫面就會變成跳出另一個視窗來表示。不曉得能不能整合到同一個VI裡,謝謝

Event Structure 有個特性 所有Evnet都要手動才能觸發(Timeout例外)

意思就是說一定要經由鍵盤或者是滑鼠操作才會觸發!!

另外就是為什麼不把你要做的事情寫在Do Something的Case內呢?

是因為不想寫兩次嗎? 那改成這樣試試看8.6_v2.vi

[QUOTE=Ding00]

Event Structure 有個特性 所有Evnet都要手動才能觸發(Timeout例外)

意思就是說一定要經由鍵盤或者是滑鼠操作才會觸發!!

另外就是為什麼不把你要做的事情寫在Do Something的Case內呢?

是因為不想寫兩次嗎? 那改成這樣試試看8.6_v2.vi

[/QUOTE]

大感謝~~

這個方式確實替我解決了所有的問題,也讓我對event的功能有更深刻的了解了

非常感謝您

當初我不是不想要寫兩次,而是因為indicator的顯示因素,不過後來想一想可能用區域變數也能解決這個問題,而您現在提出的方法更棒了,大大您真是太厲害了~~