OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4854|回复: 2

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

[复制链接]

2

主题

20

帖子

0

精华

高级会员

Rank: 4

积分
604
金钱
604
注册时间
2016-1-2
在线时间
81 小时
发表于 2018-10-24 16:46:44 | 显示全部楼层 |阅读模式
  这两天做了一个在F407上的从网页时候获取天气信息的功能,好吧,其实也没写太多代码,一路复制,粘贴过来的。总算实现了大致的功能。实现的功能是,使用DHCP从路由获取IP,与目标服务器建立连接,当按下Key0时,发送请求数据,从服务器(中国天气网)获取实时天气数据,打印到串口并显示在屏幕上。
IMG_20181024_153712.jpg
串口收到的数据如下(这是打印收到数据,还有一些调试信息,比较乱,多多包含)
串口数据.jpg

这个例子是在开发板TCP例程的基础上修改的。一路那个艰辛啊。
首先麻烦的是,要发送请求的数据,是这样的。
GET /data/cityinfo/101250101.html HTTP/1.0\r\nHost: www.weather.com.cn\r\nConnection: keep-alive\r\nCache-Control: max-age=0\r\nAccept: text/html\r\nAccept-Language: en\r\n\r\n
什么?怎么知道这个数据的?
  额,我也不知道为什么是这样,我不知道,我又不是拍黄片的。我就是把浏览器发送请求的数据,复制下来了。
就是这个网址,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, 下载次数: 169)
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

20

帖子

0

精华

高级会员

Rank: 4

积分
604
金钱
604
注册时间
2016-1-2
在线时间
81 小时
 楼主| 发表于 2018-10-24 16:48:47 | 显示全部楼层
本帖最后由 xichuangxue 于 2018-10-24 16:50 编辑

似乎暴露了我的坐标。。。。此外,如果是其他城市,只需要修改代码里的城市代码。
比如  101250101 是长沙的城市代码。
全国其他城市的城市代码可以在这里看到
https://blog.csdn.net/wanghao940101/article/details/72416518
回复 支持 反对

使用道具 举报

0

主题

286

帖子

0

精华

高级会员

Rank: 4

积分
950
金钱
950
注册时间
2018-4-21
在线时间
264 小时
发表于 2018-11-15 12:17:01 来自手机 | 显示全部楼层
谢谢老哥分享!晚上下来研究研究,再次谢谢分享!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 21:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表