LABVIEW的编程技巧之如何比较系统时间

2015-08-20 12:35:10来源: eefocus
日前在论坛上看到网友的一个帖子,内容是比较当前时间是否在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值。“5”和“22”进行字符串比较,那么5>22,因为5>2,这对数字比较来说是不符合逻辑的。

LV中的时间本身是数值,任何编程语言都会定义一个0时刻,当前时间为从那个0时刻开始后经过的秒数。LV作为面向工程实践的编程语言,有关时间操作函数非常丰富,因此使用“数值”比较更容易理解、不容易发生错误。

我们知道,目前LV有三种不同的方式表示时间,三者之间可以自由转换:

1、直接利用秒,自0时刻开始经历过的秒数。

上图所示的就是LV定义的0时刻时间,这个时间是时区相关的。

2、时间标识符,时间标识符可能是在LV8.0之后才出现的,是LV专门为时间操作提供的新的控件,如上图所示。其时间精度比直接使用秒数要高。

3、时间簇表示。时间簇表示是我们最为常用的时间表示法,簇的数据结构如下图所示:

 

回过头来看看网友所提的问题,他的目的是要看看当前系统时间是否在上上下限范围之内。当前系统时间很容易获得,问题是如何获取上下限的问题。看看下面的程序框图。

上面的程序框图中,有两个重要的技巧,如红色箭头所示。

1、年、月、日、小时可以是相对时间,没有限制,我们不用考虑24小时,31天等等,LV会自动进行转换。上图中22+7=29,超过24小时后,LV自动调整天数。

2、判断范围并强制转换函数可以直接使用时间标识符作为输入参数。

我们知道,时间标识符可以直接转换为秒数,更为重要的是时间标识符可以直接和数值进行加减运算,没有数值单位时默认为秒,因此上面的程序框图可以简化为:

我曾经介绍过时间标识符可以直接携带单位进行加减运算,因此上述程序框图可以简化为:


 

注意红色箭头部分,h表示小时,这样就不需要乘以3600,转换为秒了,对于时间比较非常方便。

关键字:LABVIEW  编程技巧  系统时间

编辑:什么鱼 引用地址:http://www.eeworld.com.cn/Test_and_measurement/2015/0820/article_12851.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
LABVIEW
编程技巧
系统时间

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved