本帖最后由 Linux— 于 2020-2-5 21:41 编辑 各位,我又找到了一种方法,数据手册上提到的。封装成函数就是这样的,亲测可用: 函数如下:
只要模块注册到了网络,一下子就同步到网络了,GSM模块内部时间也自动对齐网络时间了。模块有信号能注册到网络的话一秒钟就搞定了,还是很快的。调用的时候可以让它循环执行,若是不成功,设置失败次数达到10次就跳出就好了。若是失败的话估计就是在关闭网络场景那一步,其他的没啥问题。下面是我在串口调试助手显示的内容:
可以看到模块刚开机初始化完成时内部时间是2004年01月01日00时00分05秒,同步网络后时间自动更新到当前时间:2020年02月05日20时33分05秒 了。有兴趣的各位不妨试试。 ![]() |
Linux— 发表于 2020-1-3 00:18 现在回头看了下,其实用服务器那种方式还是很稳的,只需要小小改动一下,在void Get_Sever_Time(void)函数下把所有USART2_RX_BUF改成AT_RecvBuffer就好了,克服了上文说的那些缺点,今晚测试过好多次了,没有失败过,每次都成功。而且连接服务器的速度其实是跟信号有关的,之前那个地方信号太弱了,导致连接速度比较慢,在信号好的地方一下子就连上了。还有,AT+CCLK?只是获取模块的内部时间,断电重新上电后还是要从网络获取时间同步进去的,不然也是不准的。此外,获取网络时间和日期也可以用GPRS基站定位,从返回的字符串中把时间数据解析出来就行了。这个方法我也测过了,是能用的,但对信号强度要求更高,不然网络没配置好的话也是定位不到进而获取不了数据的。 ![]() |
lis。ss 发表于 2019-10-27 17:54 现在回头看了下,你这个问题是串口2中断接收没处理好造成的。如果不想改中断服务函数的话就在void Get_Sever_Time(void)函数下把所有USART2_RX_BUF改成AT_RecvBuffer可以解决此问题,而且再也不会出现上文提到的那些确定,我今晚用SIM800C测过好几遍了,没问题,很好用。你可以试下。 |
qq1182560902 发表于 2019-12-30 13:34 从SIM卡获取妥妥的,服务器不稳。 AT指令集你去查一下 AT+CCLK? |
获取时间不稳定吗??SIM卡或者时间是怎么做的? |
lis。ss 发表于 2019-10-27 17:54 别用服务器的方式获取了,不稳定不可靠,老是莫名其妙出现奇奇怪怪的问题。用我说的第二种方法直接从SIM卡获取时间吧 |
"TCP","time.nist.gov","13" 发完后回来数据是 IIII 这样的,怎么回事?,之前成功过 |