组态王6.x工程报表2020年HTConvertTime()失效的问题解决

       组态王是国产的一款工控组态软件,物美价廉,使用方便。很多工控人士起步的时候,都会接触到。
 官方提供一些范例,供入门参考。当时间进入2020年,很多人会发现,组态王组态的报表查询,忽然不好用了,不能查询出2020.1.1之后的数据,给用户造成困惑。
       这严格意义上,并不算一个软件错误,因为官方范例中,对报表文件的介绍,是使用了一个HTConvertTime()函数,来计算当前时间查询历史数据。而这个函数的说明中,写明了这个函数只能在1970-2019年使用。
 很多工程师可能产生一种慌张的心理,其实不必,这问题有解决之道的。联系亚控,他们就会提供一个文件,替换你安装的程序,就可以完美解决问题。
        现在有了保底的操作,那我们看能否更进一步呢?仔细思考下,这个函数的说明,1970.1.1,有没有让各位想起什么?对了,就是格林威治时间嘛,组态王自己的格式把数据按天,分为不同的文件,存储在硬盘上,然后通过格林威治时间,进行管理。报表范例中,将时间定义的是LONG,实际上是从1970.1.1 00:00:00距今的秒数。按理说要到203几年才会长整型溢出。那为何时间到了2020.1.1之后就不好用了?显然是这个HTConvertTime()函数在搞事情,它的功能,也就是把当前时间,换算为格林威治时间。也因此,我们只要能自己写程序,转换下格林威治时间,就可以把原有的HTConvertTime()函数给替换掉,从而实现正常运行的功能。那剩下就简单了。
      组态王提供了自定义函数的机制,在命令语言/自定义函数命令语言,定义一个LONG型的函数:CYL_HTConvertTime(long Year,long Month,long Day,long Hour,long minites,long sends),名字可以随意起的,这个是在原有名字上加个前缀,便于替换原函数。然后里面可以计算了。当然你前面要获得当前的年、月、日、时、分、秒信息。下面就是计算格林威治时间了,网上算法很多。规则也简单,每三个平年跟一个闰年,平年365天,2月份28天;闰年366天,2月份,29天。则算法基本就是下面:
        1.计算当前年份与1970之间,有多少个4年,每个就是365×4+1天;
        2.计算当前年份与1970的间隔除4,看余几年,判断是否闰年,加对应时间;
        3.计算当前月份,如果是闰年,过了2月份就加1天;如果不是闰年,就按大小月,排布天数,当然了,要把当天刨掉,因为只算整天;
       4.最后把天数都加起来 天数×24×60×60,再把后面的小时、分钟、秒,统一折算秒数,然后都相加返回,即可。
       5.然后,在你的报表脚本中,一切都不变,只把原来语句中的HTConvertTime前面加个前缀,改为CYL_HTConvertTime,全部存。
        6.就完事儿了。
 然后有几点提示:
        1.找官方要替换程序,最简单,不必知道工程密码之类,直接替换,简单明了;
        2.自己折腾,需要编程测试,需要修改原工程。没密码还不好干。而且!以后软件有任何运行不稳定,人家第一时间想到你来鼓捣过....黄泥巴掉进裤裆里....不是也是了....
        3.格林威治时间跟你当前的时间,不一定是一个时区哦...

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值