F407探索者使用LwIP获取天气信息

2019-07-20 05:07发布

  这两天做了一个在F407上的从网页时候获取天气信息的功能,好吧,其实也没写太多代码,一路复制,粘贴过来的。总算实现了大致的功能。实现的功能是,使用DHCP从路由获取IP,与目标服务器建立连接,当按下Key0时,发送请求数据,从服务器(中国天气网)获取实时天气数据,打印到串口并显示在屏幕上。
IMG_20181024_153712.jpg
串口收到的数据如下(这是打印收到数据,还有一些调试信息,比较乱,多多包含)
串口数据.jpg

这个例子是在开发板TCP例程的基础上修改的。一路那个艰辛啊。
首先麻烦的是,要发送请求的数据,是这样的。
GET /data/cityinfo/101250101.html HTTP/1.0 Host: www.weather.com.cn Connection: keep-alive Cache-Control: max-age=0 Accept: text/html Accept-Language: en
什么?怎么知道这个数据的?
  额,我也不知道为什么是这样,我不知道,我又不是拍黄片的。我就是把浏览器发送请求的数据,复制下来了。
就是这个网址,http://www.weather.com.cn/data/cityinfo/101250101.html

然后比较麻烦的是,在收到的数据里,找出要显示的信息,温度还比较好找,就不说了。
真正麻烦的是天气的数据,这个网址里的天气是汉字显示的,然后是utf8编码的,然后,很不幸的是,原子哥的汉字显示是用的GBK的。
一通百度后,敲下了几行我在这个例子里敲的为数不多的几行代码(哈哈哈,不是我懒,我是菜),实现的功能:在收到的数据里,找到天气相关的汉字,比如 多云,多雨之类的。
然后这些汉字是使用utf8编码的,要想显示,首先得转成unicode编码,再转成GBK编码,然后显示在屏幕上。

PS:ui我不大会,ui做的好的大佬,还请随便改。


这个是整个工程。ps:网线要能上网的,上电后会自动获取IP(要等一会会)。然后按下key0会发送获取天气的请求,收到数据后,会打印到串口,并显示在LCD上。
WebWeather汉字.rar (1.26 MB, 下载次数: 74) 2018-10-24 16:44 上传 点击文件名下载附件




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。