今天做的是EC01的HTTP的AT指令获取天气和时间,HTTP是超文本传输协议(HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。EC01模块集成了http的一些AT指令。
主要有7个指令,前四个是创建和开启连接获取数据指令,后面几个是服务器回复的消息头还有错误状态指示。
以下是几个时间和天气接口:
时间获取:
天猫接口:
http://api.m.taobao.com/rest/api3.do?api=mtop.common.getTimestamp
示例:
{"api":"mtop.common.getTimestamp","v":"*","ret":["SUCCESS::接口调用成功"],"data":{"t":"1642606022154"}}
苏宁接口:http://quan.suning.com/getSysTime.do
示例:
{"sysTime2":"2022-01-19 23:27:53","sysTime1":"20220119232753"}
其他:
http://api.k780.com:88/?app=life.time&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json
示例:
{"success":"1","result":{"timestamp":"1642606086","datetime_1":"2022-01-19 23:28:06","datetime_2":"2022年01月19日 23时28分06秒","week_1":"3","week_2":"星期三","week_3":"周三","week_4":"Wednesday"}}
可见获取的都是json在单片机可以很好解析的。
由于返回的是16进制所以还要处理变为ASCII
其他两个类似,就是返回的都是16进制,这样单片机确实不好处理,还要先转换成ascii比如说返回31,其实是字符“3”“1”,所以还要和“0”作差,然后3*16+1=0x31才是真正的数据。。
还有要注意的是http只能创建一个实例就是只支持一个http连接,要连接其他的线断开当前连接才行,还有这个连接存在时间限制,一会儿会自动断开,只要再次启动服务器连接就行了。
今天的HTTP内容比较简单,就是只有几个AT指令获取时间,当然还可以获取天气什么的,除了获取GET还可以POST上传数据。后面几种模式比较少见主要是GET和POST。