新聞中心

        EEPW首頁 > 測試測量 > 設計應用 > LABVIEW編程技巧——如何比較系統時間

        LABVIEW編程技巧——如何比較系統時間

        作者: 時間:2017-02-27 來源:網絡 收藏

          如何比較當前時間是否在22:00:00和05:00:00之間?從字面上看05:00:00應該是第二天凌晨。有人的比較方法是把時間上下限和當前時間轉換為字符串,然后進行比較,下面是他的程序框圖,因為在邏輯上存在問題,所以引起了熱烈的討論。

          獲取系統時間使得時間在22:00:00之后到5:00:00之前燈亮,但是其他時間都對的,為什么在0:00:00~2:00:00之間就不對呢?

          似乎是4:59:59那里的冒號是使用了中文輸入法的冒號,而那個節點輸出的時候是使用英文輸入法下的冒號的,所以比較時就出錯了。

          不是的,那個只要時間小于2比如說1:10:50,因為它的第一個數字比2小,輸出就不對

          后面還有一些相關的回復就不摘錄了,討論到后來一位朋友提出了意見“感覺這個思路不是很好”

          我個人認為這位朋友的看法是對的,我們知道字符串是逐個字符比較的,它實際上比較的是字符的ASCII值?!?”和“22”進行字符串比較,那么5>22,因為5>2,這對數字比較來說是不符合邏輯的。

          Labview中的時間本身是數值,任何編程語言都會定義一個0時刻,當前時間為從那個0時刻開始后經過的秒數。LV作為面向工程實踐的編程語言,有關時間操作函數非常豐富,因此使用“數值”比較更容易理解、不容易發生錯誤。

          我們知道,目前LV有三種不同的方式表示時間,三者之間可以自由轉換:

          1、直接利用秒,自0時刻開始經歷過的秒數。

          上圖所示的就是LabVIEW定義的0時刻時間,這個時間是時區相關的。

          2、時間標識符,時間標識符可能是在LV8.0之后才出現的,是LV專門為時間操作提供的新的控件,如上圖所示。其時間精度比直接使用秒數要高。

          3、時間簇表示。時間簇表示是我們最為常用的時間表示法,簇的數據結構如下圖所示:

          回過頭來看看大家所提的問題,他的目的是要看看當前系統時間是否在上上下限范圍之內。當前系統時間很容易獲得,問題是如何獲取上下限的問題??纯聪旅娴某绦蚩驁D。

          上面的程序框圖中,有兩個重要的技巧,如紅色箭頭所示。

          1、年、月、日、小時可以是相對時間,沒有限制,我們不用考慮24小時,31天等等,LV會自動進行轉換。上圖中22+7=29,超過24小時后,LV自動調整天數。

          2、判斷范圍并強制轉換函數可以直接使用時間標識符作為輸入參數。

          我們知道,時間標識符可以直接轉換為秒數,更為重要的是時間標識符可以直接和數值進行加減運算,沒有數值單位時默認為秒,因此上面的程序框圖可以簡化為:

          我曾經介紹過時間標識符可以直接攜帶單位進行加減運算,因此上述程序框圖可以簡化為:

          注意紅色箭頭部分,h表示小時,這樣就不需要乘以3600,轉換為秒了,對于時間比較非常方便。



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 霸州市| 化州市| 彭泽县| 班玛县| 贺兰县| 花莲县| 平武县| 太白县| 苏尼特左旗| 彭山县| 青河县| 定襄县| 古田县| 汝州市| 湘潭县| 商城县| 兰西县| 扎兰屯市| 明光市| 兴隆县| 张掖市| 丰顺县| 高安市| 河北省| 新龙县| 衡水市| 丘北县| 彰武县| 织金县| 敦化市| 石泉县| 平度市| 宁南县| 元氏县| 吉首市| 张家界市| 南郑县| 安西县| 奇台县| 鄂托克旗| 栖霞市|