查看原文
其他

智能桌面天气预报系统(四)

正念君 嵌入式大杂烩 2021-01-31
常持正念方圆梦;不忘初心总是春。


1


前言


智能桌面天气预报系统(一)

智能桌面天气预报系统(二)

智能桌面天气预报系统(三)

紧接着前三篇文章,今天介绍windows下与天气服务器通信的测试方法。每个问题的解决往往都不能一步到位,要把这个问题的所有关键点找出来,着手去解决这些关键点,最终问题自然会得到解决。


同样的,虽然我们最终是用单片机控制WiFi模块来获取天气数据的,但是我们首先应该确保在没有单片机的情况下能获取得到天气数据,确保能和天气服务器正常通信。只有这样,在使用单片机获取数据遇到问题时才知道出错的范围在哪,便于我们进行调试。


2


所需工具


网络调试助手。小编使用的是SocketTool,SocketTool是一款小巧实用且功能强大的TCP/UDP网络通讯调试工具,可以帮助你检查网络应用软件及硬件的通讯情况,可以创建Socket服务器,如创建UDP组播地址及端口、创建UDP Client客户端、创建TCP Client、创建TCP Server。



此工具在后台回复:stool,即可获取


3


测试方法


(1)首先,使用SocketTool工具建立一个TCP Client,对方IP设为:116.62.81.138(这是心知天气服务器的IP地址),对方端口设为80。如:



怎么才能知道一个网站的IP呢?可以通过ping命令获取,具体操作如下:



在DOS黑窗口下输入“ping+域名”即可得该域名对应的IP。


ping是Windows、Unix和Linux系统下的一个命令,利用ping命令可以检查网络是否连通,可以很好地帮助我们分析和判定网络故障,该命令还可以加许多参数使用,具体是键入Ping按回车即可看到详细说明。


(2)发送HTTP请求,向心知天气服务器请求天气数据。HTTP有两种请求方法:

GET请求:从指定的资源请求数据。

POST请求:向指定的资源提交要被处理的数据。


显然,此处我们应该用GET请求方法。具体的请求方法为:

GET https://api.seniverse.com/v3/weather/now.json?key=2owqvhhd2dd9o9f9&location=beijing&language=zh-Hans&unit=c


其中,GET后面的URL地址可以上心知天气查看,如:



URL中的几个参数是可以设置的,

key:你的API密钥

location:所查询的地点

language:语言

unit:单位


SocketTool工具中发送GET请求(首先先得点击“连接”按钮进行连接),发送格式如下:



需要注意的问题就是每个GET请求之后都需要空两行,这两个换行也是GET请求的一部分,所以在编写单片机代码时需要注意的是要在这个请求字符串后添加"\r\n\r\n",表示换两行。


服务器返回的天气数据为:



看看服务器返回的数据,发现中文都是乱码。原因是获取得的天气数据是utf-8格式,必须转换为GBK格式中文才能正常显示。此处,我们只是测试与服务器是否能正常交互,测试结果显示有数据返回,说明通过以上的GET请求时可以获取到数据的。


在应用到单片机上时,还需要考虑的问题就是怎么把utf-8格式转换为GBK格式的问题,转换后中文才能正常显示在显示屏上。


今天的分享就到这啦,这种测试方法在物联网中很重要哦。更多物联网笔记请持续关注本公众号


推 荐 阅 读

智能桌面天气预报系统(一)

【2018年10月汇总】编程学习笔记

【本质】你知道C语言编译的过程吗?

【重要】数组与指针不等价

C语言指针变量的运算


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存