微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 基于Dragonbaord 410c开发板的Python交互设计(2)——如何获取天气数据

基于Dragonbaord 410c开发板的Python交互设计(2)——如何获取天气数据

时间:02-13 来源:互联网 点击:

现在很多网站都可以提供天气数据服务,只要你的设备连接网络,就可以方便的通过网络请求访问到天气数据,在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.R

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top