现在很多网站都可以提供天气数据服务,只要你的设备连接网络,就可以方便的通过网络请求访问到天气数据,在dragonboard 410c开发板上已经提供了wifi连接服务,可以方便的连接到网络,因此,在dragonboard 410c上进行开发的过程中,我们可以通过网络方式来获取天气数据,丰富我们的应用,目前,常用的有国家气象局和新浪的天气api接口,具体网址如下:
国家气象局天气接口地址:
http://www.weather.com.cn/data/sk/101010100.html
http://www.weather.com.cn/data/cityinfo/101010100.html
http://m.weather.com.cn/data/101010100.html
新浪天气接口地址:
http://www.weather.com.cn/data/sk/101010100.html
http://wthrcdn.etouch.cn/weatherapi?city=深圳
这些接口我们可以用浏览器打开,就可以看到获取的天气信息,如下图所示,这里我们打开的是最后一个新浪的接口,可以获取天气的xml文件,查询当前和前后几天的天气和环境指数。
但是我们在开发过程中肯定不能用浏览器来这样打开我们的天气接口了,更多的时候我们需要通过程序去自动的获取和解析天气数据,今天就教大家如何在dragonboard 410c平台下使用python脚本来从新浪官方的api接口获取天气数据并且打印出来。
这里我们使用了pyqt提供的网络管理服务类qtnetwork模块中的qnetworkaccessmanager和qnetworkrequest等类来实现网络编程,实现对天气api接口的访问获取相关的数据服务,具体的代码如下:
from pyqt5 import qtwidgets, qtcore, qtxml, qtgui,qtnetwork
class weatherwindows(qtwidgets.qwidget):
def __init__(self):
super(weatherwindows,self).__init__()
self.img=qtgui.qimage()
self.manager = qtnetwork.qnetworkaccessmanager()
self.weather_updateok=0
self.reply=self.manager.get(qtnetwork.qnetworkrequest(qtcore.qurl(http://wthrcdn.etouch.cn/weatherapi?city=%e6%b7%b1%e5%9c%b3)))
self.reply.finished.connect(self.replayfinished)
def replayfinished(self):
global weather
print(weather replayfinished)
#status_code = self.reply.attribute(qtnetwork.qnetworkrequest.httpstatuscodeattribute)
qbyte = self.reply.readall()
pbyte = bytes(qbyte.data())
str(pbyte, encoding = utf-8)
weatherinfo = bytes.decode(pbyte)
print(weatherinfo)
self.weather_updateok=0
if __name__==__main__:
import sys
app=qtwidgets.qapplication(sys.argv)
myshow=weatherwindows()
sys.exit(app.exec_())
以上就是整个获取天气数据和打印天气数据的代码,运行python脚本就可以获取天气数据并且打印出来,如下:
在上述代码中,其核心是通过
qtnetwork.qnetworkaccessmanager()创建一个网络管理类。
然后利用该类获得的对象发送url请求self.manager.get(qtnetwork.qnetworkrequest(qtcore.qurl(“http://wthrcdn.etouch.cn/weatherapi?city=%e6%b7%b1%e5%9c%b3”)))
完成之后我们就只要将请求完成后的信号与一个槽函数关联起来就可以了,在完成请求获取数据后,系统就可以自动的调用槽函数来解析xml文件得到天气信息了,其中关联函数如下:
self.reply.finished.connect(self.replayfinished)
replayfinished是槽函数,完成请求后就会调用该函数处理。
以上就是整个天气预报demo的数据获取过程,但是大家看到我们现在只是获取了数据,但是通常在我们的应用中我们不需要显示全部的数据,只需要解析部分数据出来,然后进行显示即可,这里就需要对我们获取的xml文件信息进行解析了,而不只是简单的打印出xml文件信息,后去blog中将进一步教大家如何来解析天气xml文件数据,读取数据内容。
魅蓝3拆机图解
热式质量流量计在大口径通风管道流量测量中的应用
为什么PCAN-USB FD能够支持8Mbit/s或者最大的12Mbit/s
关于ELAF-B0-10L力传感器的测量原理及检测方法
电化学传感器的优缺点
基于Dragonbaord 410c开发板的Python交互设计(2)——如何获取天气数据
AZ-DZK电阻柜智能监控装置-保定奥卓电气设备制造有限公司
每个设计师都应该知道的5大PCB设计规则
AI怎样帮助我们有序的复工
新唐科技NCT3101S简介
微雪电子STM32开发板简介
NASA 携手 IBM 发布 Hugging Face 平台最大开源地理空间 AI 基础模型
位移传感器在火车上的车轮缘状检测中有什么应用?
南潮科技:还原工业级智能网关的开发过程
如何利用3D打印机打印出PCB电路板
关于电口模块的介绍,它的分类是怎样的
Xilinx Zynq7035 PL SFP光口通信例程
场效应管特性及单端甲类功放制作,class A power amplifier
智能门锁产品中应用的抗干扰低功耗触摸感应芯片
iphone8什么时候上市?iphone8最新消息:iphone 8新专利确认,电源集成指纹识别+无线充电,新功能你喜欢吗?