使用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实现去除代码前行号的方法
Mar 10 Python
在Python中关于中文编码问题的处理建议
Apr 08 Python
python实现的jpg格式图片修复代码
Apr 21 Python
Python字符串格式化输出方法分析
Apr 13 Python
PyQt5实现简单数据标注工具
Mar 18 Python
10款最好的Python开发编辑器
Jul 03 Python
Python中的 sort 和 sorted的用法与区别
Aug 10 Python
Python字符串格式化输出代码实例
Nov 22 Python
用python的turtle模块实现给女票画个小心心
Nov 23 Python
关于Python turtle库使用时坐标的确定方法
Mar 19 Python
如何将PySpark导入Python的放实现(2种)
Apr 26 Python
如何利用python web框架做文件流下载的实现示例
Jun 02 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实现的MySQL通用查询程序
2007/03/11 PHP
ecshop 订单确认中显示省市地址信息的方法
2010/03/15 PHP
PHP乱码问题,UTF-8乱码常见问题小结
2012/04/09 PHP
php实现用手机关闭计算机(电脑)的方法
2015/04/22 PHP
PHP模板引擎Smarty之配置文件在模板变量中的使用方法示例
2016/04/11 PHP
PHP实现统计在线人数功能示例
2016/10/15 PHP
PHP+Ajax实现的无刷新分页功能详解【附demo源码下载】
2017/07/03 PHP
ExtJS 2.0 实用简明教程之布局概述
2009/04/29 Javascript
Javascript实现的鼠标经过时播放声音
2010/05/18 Javascript
使用jquery实现仿百度自动补全特效
2015/07/23 Javascript
基于jquery实现放大镜效果
2015/08/17 Javascript
JavaScript与HTML的结合方法详解
2015/11/23 Javascript
详解Vue快速零配置的打包工具——parcel
2018/01/16 Javascript
ng-repeat指令在迭代对象时的去重方法
2018/10/02 Javascript
vue项目中仿element-ui弹框效果的实例代码
2019/04/22 Javascript
Vue快速实现通用表单验证的方法
2020/02/24 Javascript
[06:21]完美世界亚洲区首席发行官竺琦TI3采访
2013/08/26 DOTA
Python 字典与字符串的互转实例
2017/01/13 Python
pyqt5的QWebEngineView 使用模板的方法
2018/08/18 Python
python找出一个列表中相同元素的多个索引实例
2019/06/11 Python
详解pytorch 0.4.0迁移指南
2019/06/16 Python
Python3.7+tkinter实现查询界面功能
2019/12/24 Python
Django Admin后台添加数据库视图过程解析
2020/04/01 Python
Python之变量类型和if判断方式
2020/05/05 Python
详解Open Folder as PyCharm Project怎么添加的方法
2020/12/29 Python
python中openpyxl和xlsxwriter对Excel的操作方法
2021/03/01 Python
香港永安旅游网:Wing On Travel
2017/04/10 全球购物
美国最好的葡萄酒网上商店:Wine Library
2019/11/02 全球购物
仓管员岗位职责范文
2013/11/08 职场文书
大学生旷课检讨书
2014/01/22 职场文书
党风廉设责任书
2014/04/16 职场文书
《李广射虎》教学反思
2014/04/27 职场文书
会计学专业求职信
2014/07/17 职场文书
思想作风整顿个人剖析材料
2014/10/06 职场文书
绿色校园广播稿
2014/10/13 职场文书
python中的sys模块和os模块
2022/03/20 Python