使用Python简单的实现树莓派的WEB控制


Posted in Python onFebruary 18, 2016

先给大家展示下效果如图,感觉还很满意请继续阅读全文:

使用Python简单的实现树莓派的WEB控制 

用到的知识:Python Bottle HTML Javascript JQuery Bootstrap AJAX 当然还有 linux

我去,这么多……我还是一点一点说起吧……

先贴最终的源代码:

#!/usr/bin/env python3
from bottle import get,post,run,request,template
@get("/")
def index():
return template("index")
@post("/cmd")
def cmd():
print("按下了按钮: "+request.body.read().decode())
return "OK"
run(host="0.0.0.0")

没错,就10句,我一句一句解释:

1. # !/usr/bin/env python3 ,告诉shell这个文件是Python源代码,让bash调用python3来解释这段代码

2. from bottle import get,post,run,request,template ,从bottle框架导入了我用到的方法、对象

下边几句是定义了2个路由,一个是“/”一个是“/cmd”,前者是get类型(用@get装饰),后者是POST类型(用的@post装饰)

第一个路由很简单,就是读取index模版(模版就是个html啦)并发送到客户端(浏览器),因为路径是“/”也就是比如树莓派的IP地址是:192.168.0.10

那用 http://192.168.0.10:8080 就访问到了我们的"/”路由(bottle默认端口是8080)

同理,第二个路由的路径是“/cmd”也就是访问 http://192.168.0.10:8080/cmd 就访问到了第二个路由

最后一句: run(host = " 0.0.0.0 " )就是调用bottle的run方法,建立一个http服务器,让我们能通过浏览器访问我们的界面。

下边我详细的解释一下这些代码的作用:

第一个路由的作用就是扔给浏览器一个HTML(index.tpl)文档,显示这个界面:

使用Python简单的实现树莓派的WEB控制 

这个文件的源代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>遥控树莓派</title>
<link href="//cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet" media="screen">
<script src="http://code.jquery.com/jquery.js"></script>
<style type="text/css">
#up {
margin-left: 55px;
margin-bottom: 3px;
}
#down {
margin-top: 3px;
margin-left: 55px;
}
</style>
<script>
$(function(){
$("button").click(function(){
$.post("/cmd",this.id,function(data,status){});
});
});
</script>
</head>
<body>
<div id="container" class="container">
<div>
<button id="up" class="btn btn-lg btn-primary glyphicon glyphicon-circle-arrow-up"></button>
</div>
<div>
<button id='left' class="btn btn-lg btn-primary glyphicon glyphicon-circle-arrow-left"></button>
<button id='stop' class="btn btn-lg btn-primary glyphicon glyphicon-stop"></button>
<button id='right' class="btn btn-lg btn-primary glyphicon glyphicon-circle-arrow-right"></button>
</div>
<div>
<button id='down' class="btn btn-lg btn-primary glyphicon glyphicon-circle-arrow-down"></button>
</div>
</div>
<script src="//cdn.bootcss.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
</body>
</html>

这个内容有点多,不过很简单,就是引用了jquery bootstrap这两个前端框架,加了5个按钮(<body></body>之间的代码)。当然我用了bootstrap内置的上下左右停止这几个图标,这5个按钮的id分辨定义成up,down,left,right,stop,然后写了如下的关键代码:

$(function(){
$("button").click(function(){
$.post("/cmd",this.id,function(data,status){});
});
});

没错,就这三句代码……

第1,2行给所有的按钮(button)绑定了一个点击的事件,第三行调用jquery的post方法把this.id(被单击按钮的id),发送到“/cmd”这个路径下,这时,我们python代码的第二个路由起作用了,接收到了网页上被单击按钮的id,并打印出了“按下了按钮: XXX”

当然,在这里写几个if语句判断,就可以按照实际的需求做一些实际的控制了,嗯,比如调用wiringpi2 for python控制树莓派的GPIO。

关于使用Python简单的实现树莓派的WEB控制的相关内容就给大家介绍这么多,希望对大家有所帮助!

Python 相关文章推荐
使用PYTHON创建XML文档
Mar 01 Python
Python原始字符串与Unicode字符串操作符用法实例分析
Jul 22 Python
Python Logging 日志记录入门学习
Jun 02 Python
python  创建一个保留重复值的列表的补码
Oct 15 Python
PyCharm在新窗口打开项目的方法
Jan 17 Python
python递归法解决棋盘分割问题
Jul 17 Python
wxPython多个窗口的基本结构
Nov 19 Python
Python列表切片常用操作实例解析
Dec 16 Python
pytorch 实现在一个优化器中设置多个网络参数的例子
Feb 20 Python
基于python计算并显示日间、星期客流高峰
May 07 Python
python实现画图工具
Aug 27 Python
pycharm + django跨域无提示的解决方法
Dec 06 Python
在Ubuntu系统下安装使用Python的GUI工具wxPython
Feb 18 #Python
以一个投票程序的实例来讲解Python的Django框架使用
Feb 18 #Python
使用Python生成随机密码的示例分享
Feb 18 #Python
使用Python的urllib2模块处理url和图片的技巧两则
Feb 18 #Python
讲解Python的Scrapy爬虫框架使用代理进行采集的方法
Feb 18 #Python
使用Python的PIL模块来进行图片对比
Feb 18 #Python
使用Python来编写HTTP服务器的超级指南
Feb 18 #Python
You might like
php模板之Phpbean的目录结构
2008/01/10 PHP
php设计模式 Factory(工厂模式)
2011/06/26 PHP
PHP中3种生成XML文件方法的速度效率比较
2012/10/06 PHP
php实现压缩多个CSS与JS文件的方法
2014/11/11 PHP
PHP.ini安全配置检测工具pcc简单介绍
2015/07/02 PHP
基础的WordPress插件制作教程
2015/11/24 PHP
php实现的双色球算法示例
2017/06/20 PHP
PHP底层运行机制与工作原理详解
2020/07/31 PHP
使用npm发布Node.JS程序包教程
2015/03/02 Javascript
js数组依据下标删除元素
2015/04/14 Javascript
AngularJS 模型详细介绍及实例代码
2016/07/27 Javascript
javascript中的try catch异常捕获机制用法分析
2016/12/14 Javascript
快速理解 JavaScript 中的 LHS 和 RHS 查询的用法
2017/08/24 Javascript
如何以Angular的姿势打开Font-Awesome详解
2018/04/22 Javascript
微信小程序开发之map地图组件定位并手动修改位置偏差
2019/08/17 Javascript
JavaScript如何借用构造函数继承
2019/11/06 Javascript
JS 逻辑判断不要只知道用 if-else 和 switch条件判断(小技巧)
2020/05/27 Javascript
在vue项目中封装echarts的步骤
2020/12/25 Vue.js
Python 两个列表的差集、并集和交集实现代码
2016/09/21 Python
Python 专题五 列表基础知识(二维list排序、获取下标和处理txt文本实例)
2017/03/20 Python
python抓取文件夹的所有文件
2018/02/27 Python
Python中的TCP socket写法示例
2018/05/11 Python
Python字典遍历操作实例小结
2019/03/05 Python
python安装scipy的方法步骤
2019/06/26 Python
python Pillow图像处理方法汇总
2019/10/16 Python
Python文件操作及内置函数flush原理解析
2020/10/13 Python
大学生简历的个人自我评价
2013/12/04 职场文书
公司人力资源的自我评价
2014/01/02 职场文书
yy婚礼司仪主持词
2014/03/14 职场文书
安全教育月活动总结
2014/05/05 职场文书
上海世博会口号
2014/06/19 职场文书
岳麓书院导游词
2015/02/03 职场文书
四大名著读书笔记
2015/06/25 职场文书
新闻稿件写作技巧
2015/07/18 职场文书
珍爱生命主题班会
2015/08/13 职场文书
2016公司中秋节寄语
2015/12/07 职场文书