背景
此次的目的是将RK3568作为服务器,也就是在RK上进行统计数据的整理,以棒图的形式进行展示,用户可以通过网页的方式查看展示的棒图。
技术分析
可以将最终的目的分为两部分:
1.搭建一个Web服务器;
2.本地生成一个统计棒图;
以上两个部分完成之后,只需要将2中的图搭载到1中的服务器中即可,这样就可以通过网页访问,也就实现了我们的目的。
Web服务器
同样的,我们依旧是通过Python来实现该部分的功能,通过资料的查询,最终确定使用Flask(相关教程可访问:https://www.w3cschool.cn/flask/flask_overview.html)
Flask是python提供的一个小型web服务搭建库,我们可以通过该库实现第1个技术点。
import os
import sys
from flask import Flask,redirect,url_for,request,render_template,send_from_direcc
tory
app = Flask(__name__)
root = os.path.join(os.path.dirname(os.path.abspath(__file__)), "html")#html是个
文件夹
@app.route('/')
def hello_world():
# return 'Hello World'
# return render_template("render.html")
#homepage.html在html文件夹下
return send_from_directory(root, "render.html")
if __name__=='__main__':
app.run(host='192.168.10.83')
浏览器只需要输入网址:http://192.168.10.83:5000 即可对该段程序创建的web服务器提供的网页进行访问。
注意:
1.一定要是http,而不是https,否则会出现访问异常;
2.代码中使用的html文件需要放置在相同路径下的html文件夹中,如果是使用模板类型的(template),那么就要放在template文件夹中;
图表绘制
我们这里由于已经安装的python库的不兼容原因,我们最终选择使用pyecharts这个库,通过这个库我们可以绘制各种主流类型的统计图,如我们要使用的饼图、柱状图、雷达图等。
from pyecharts import Radar
具体代码可以参考网上的实现,最终会在路径下生成一个html文件,也就是1中要使用的网页源文件,这样也就将两个系统关联起来了。
网页动态刷新
前面的两个部分虽然连接在了一起共同实现了目标,但是我们还是希望这个网页能够自动刷新,经过资料查询,我们可以通过flask_script和livereload 来共同实现(通过这两个的管理共同实现了:关闭,更新资源,重新打开刷新)。
#coding=utf-8
from flask import Flask
from flask_script import Manager
app = Flask(__name__)
# 使用manager管理工具
manager = Manager(app)
@app.route("/")
def upload():
return send_from_directory(root, "render.html")
# 实现自动刷新调试功能
@manager.command
def dev():
from livereload import Server
live_server = Server(app.wsgi_app)
live_server.watch("**/*.*")
live_server.serve(open_url=True)
if __name__ == "__main__":
manager.run(host='192.168.10.83')
#python main.py dev
总结
(注:上图是直接通过网页打开的html文件,并不是通过网址访问的,但是实际测试效果是一样的,唯一的不同是显示的网址不同)
到此,也就完成了本次目的的初步达成,前面也已经提到,技术的打通仅是项目的第一步,后面还要根据需求将这些技术细化联系到最终的系统方案中,并且在系统层面的开发过程中必然会遇到一些新的问题,可能是技术上的,也有可能是实现方法上的。