收藏官网首页

用SNTP得到时间后,如何拆分来判断???

查看数: 18886 | 评论数: 14 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2016-10-24 15:35

正文摘要:

本帖最后由 杀进丧尸城 于 2016-11-11 16:51 编辑 很多项目都会用到定时任务,所以这个还是比较重要,希望亲们一起解决一下。 我现在用的是esp8266_12F那个模块,soc模式开发;数据点,代码都是在机智云个人项目 ...

回复

simonliu009 发表于 2018-7-29 08:19:36
我来回个帖
因为我不想每次更新时间都和ntp同步一次,所以写了一个本地的时钟自己跑,然后通过sntp_get_real_time()获取字串,然后拆分。
拆分字串用的是 os_memcpy( )函数
杀进丧尸城 发表于 2017-3-17 16:34:39
混吉 发表于 2016-12-16 17:24
为什么非要拆分?时间截就可以用来定时了。
而且gizwitsGetTimeStamp()之后,年月日时间其实已经出来了,只 ...

我搞明白了,不用拆分;直接调用那个结构图里的年月日就可以了,多谢哈
混吉 发表于 2016-12-16 17:24:47
为什么非要拆分?时间截就可以用来定时了。
而且gizwitsGetTimeStamp()之后,年月日时间其实已经出来了,只是机智云给你返回了时间截,没返回年月日时间。仔细看_tm结构体。

QQ图片20161216172402.png (15.82 KB, 下载次数: 401)

QQ图片20161216172402.png
杀进丧尸城 发表于 2016-11-16 15:51:44
我发现一个问题:他们这个时间是这样算的,########## time: 1479279956########## time: Wed Nov 16 15:05:56 2016


其中“1479279956“=2016-1970=(46年*365天*24小时*3600秒)+(46年/4*24*3600)+28800+365秒=1451689556
再加上2016年的11个月就是11*30*24*3600=28512000
28512000+1451689556=1480201556
1480201556-1479279956=921600秒=
921600秒/3600秒/24小时=10.6左右,相差10天左右。


说了这么多,”Wed Nov 16 15:05:56 2016“这个字符串我怎么拆分,或者说”1479279956“我怎么计算成时间;烦躁
tianzuoan 发表于 2016-11-4 11:00:39
杀进丧尸城 发表于 2016-11-4 09:38
你只要建立了数据点就可以再服务开发里面生成代码的啊,里面有MCU和SOC两种模式,如下图:
如果还是不行 ...

多点击几次重试后可以了,谢谢!
tianzuoan 发表于 2016-11-2 14:40:34
soc模式开发,可以生成ESP的代码吗?我今天一天都是生成失败,请重试
杀进丧尸城 发表于 2016-10-27 21:24:46
yujietian 发表于 2016-10-27 16:55
控制类的是最好实现的,按照数据点数据控制相关的传感器或IO就可以了。

像定时任务这种,复杂度稍高一些的 ...

那在自动生成的代码里面是没有自动获取时间的么,这个是不是需要自己写;我要获取到网络时间才可以跟设定的时间做判定啥
yujietian 发表于 2016-10-27 16:56:35
再有就是这种操作跟SoC方式还是MCU方式区别并不大。
yujietian 发表于 2016-10-27 16:55:14
控制类的是最好实现的,按照数据点数据控制相关的传感器或IO就可以了。

像定时任务这种,复杂度稍高一些的功能,就不能再像IO操作一样了。需要自己实现相关的逻辑处理。

拿定时任务来说,数据点操作这里只是把数据拿到,比如时间数据,循环设置数据。可以开启一个秒级或分钟级定时器(根据你的定时精度来)来检测定时时间。

在定时器执行函数里比较当前时间和设定时间,如相等,执行开机任务。
如果想实现周重复,那么就要满足周设定和时间相同两个条件时才执行开发任务。

一般不建议做太频繁的定时操作,比如明明是秒级的,定义一个毫秒的定时器,是不合适的。
加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表