完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
一步一步使用ti CC3200 LaunchPad开发 使用http get获取天气信息
一步一步使用TI CC3200 LaunchPad开发-使用http get获取天气信息.pdf
(998.93 KB, 下载次数: 28
)
上一篇《一步一步使用TI CC3200 LaunchPad开发-从WLANStation示例开始》讲述了WLAN Station示例,它是使用TI CC3200 LaunchPad中的WiFi模块的最小示例程序,任何使用无线连接的程序都可以基于它来扩展应用。本文讲述如何使用http get方法来获取天气信息,并显示在终端显示器中。 本示例程序基本的程序执行流程如下图所示。 1. 连接到无线路由器 首先打开CCS,并通过“PorjectImport CCS Projects”把已安装的SDK中的如下工程加入到本项目中来:“driverlib, oslib, simplelink, ti_rtos_config, get_weather”,然后参考《一步一步使用TI CC3200 LaunchPad开发-从WLAN Station示例开始》完成所有工程的配置。 在get_weather工程中,开发板完成初始化后会打开WiFi模块并使之处于station模式,该模式可以使开发板连接到一个无线路由器并实现网络通信功能。在连接无线路由器之前需要配置连接属性,包括无线路由器的名称、授权方式和密码,如果无线路由器不需要密码,则密码可以不用填写。这些信息需要在main.c中包含的“common.h”中修改,如下图所示。 其中的SSID_NAME表示无线路由器名称。SECURITY_TYPE表示授权方式,此处是SL_SEC_TYPE_WPA方式,那么需要填写正确的密码才能连接到该路由器,如果不需要密码,授权方式为SL_SEC_TYPE_OPEN。SECURITY_KEY表示路由器的密码,此处填写正确的密码即可。修改完成后保存。 2. 开放API接口的配置 本示例通过一个开放的天气预报网站获取天气信息,该网站是www.openweathermap.org,该网站提供了一个开放的API接口,通过此API接口可以获取指定城市的天气信息。开放的API接口服务器的地址是api.openweathermap.org,要想获取信息需要根据网站文档发送请求,服务器根据授权返回请求的数据。例如,通过城市名称获取信息可以使用如下的API调用: api.openweathermap.org/data/2.5/weather?q={cityname} 其中的{city name}是需要调用时填写,更多关于API接口文档的信息可以参考此处:http://www.openweathermap.org/api。 程序首先根据服务器域名获取其IP地址,后续执行http请求是需要通过IP地址进行。要想通过openweather开放的API接口获取信息,需要注册一个用户,然后就可以自动获取一个API KEY,该API KEY用来填写在通信请求中。如下图所示。 首先在www.openweathermap.org中注册一个用户,然后点击“API keys”就可以看到自动分配的一个API KEY,把此API KEY复制到main.c中的POST_BUFFER预定义中的appid=后面即可。该POST_BUFFER指定服务器返回xml格式的数据,后续程序会解析该xml数据并获取信息。 3. 程序调试和运行 右击get_weather工程,选择“Build Project”确保正确完成编译。如下图所示。 把TI CC3200 LaunchPad接入电脑,打开Tera Term终端显示器,并选择正确的开发板端口号,如下图所示。 选择“SetupSerial port…”,在“Baud rate”中选择“115200”并点击“OK”完成配置,如下图所示。 然后在CCS中选择“rundebug”菜单开始调试,打开调试界面后再按F5即可运行调试,我在main.c中的251行添加了一个断点,该处是函数HandleXMLData的处理程序位置。程序开始运行后,终端显示各类信息,其中需要输入待查询的城市名称,此处输入beijing,如下图示。 输入完beijing后按回车键,程序会停留在预先设置的断点处,即main.c中的251行处。在Memory Browser窗口中添加acRecvbuff变量,或者右击该变量并选择显示在Memory Browser窗口中。此时会显示服务器返回的请求信息,如下图示。 上图中的251行是在返回的请求信息中查找“name=”字串,并获取其下标位置,然后再获取城市信息,同理,再获取华氏温度和天气状况等信息。Tera Term终端显示器默认支持的是utf-8格式的显示,我修改了部分程序,使得Tera Term可以显示中文。比如,上图中的代码258行,把原来的英文“city”改成了“城市”的utf-8格式的转义字符,否则,如果直接写汉字,编译器输入的是unicode编码格式。上图中右侧是服务器返回的XML格式的请求信息,基本可以通过其参数知道其具体的格式信息。 此时再查看Tera Term,如下图示,会显示城市、温度(华氏)和天气状况。76.28华氏温度约等于25摄氏度,今天北京还比较凉快,因为天气状况说明了有雨。此时可以在Tera Term中输入其它城市信息获取天气情况,也可以输入quit来退出。 4. 总结 本文通过http get请求获取天气信息展示了如何通过服务器开放的API来获取有用的网络实时资源。 首先TI CC3200 LaunchPad打开了网络模块并配置为station模式,接着成功连接到了无线路由器中,然后通过http连接到服务器,并通过http get请求获取了天气信息,通过解析XML把部分信息显示到了Tera Term上。 可以进一步扩展此类应用,比如在TI CC3200 LaunchPad中添加一个http server,把天气信息更新到本地,然后用户可以通过浏览器访问。 5. 参考资料 [1] open weatherapi documents: http://www.openweathermap.org/api [2] 《一步一步使用TI CC3200 LaunchPad开发-从WLAN Station示例开始》: [3] CC32xx InfoCenter Get Weather Application: http://processors.wiki.ti.com/index.php/CC32xx_Info_Center_Get_Weather_Application |
|
相关推荐
1 条评论
3 个讨论
|
|
这个挺不错的!
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
350 浏览 1 评论
544 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
789 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
660 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1140 浏览 1 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
81浏览 29评论
281浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
261浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
210浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
68浏览 13评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 16:15 , Processed in 1.056071 second(s), Total 60, Slave 49 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号