使用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采集腾讯新闻实例
Jul 10 Python
python显示生日是星期几的方法
May 27 Python
python魔法方法-自定义序列详解
Jul 21 Python
python处理csv中的空值方法
Jun 22 Python
Python格式化日期时间操作示例
Jun 28 Python
tensorflow生成多个tfrecord文件实例
Feb 17 Python
快速解决jupyter启动卡死的问题
Apr 10 Python
浅谈Python中的模块
Jun 10 Python
详解Pycharm安装及Django安装配置指南
Sep 15 Python
Python实现异步IO的示例
Nov 05 Python
python 下载文件的几种方法汇总
Jan 06 Python
PyTorch中的torch.cat简单介绍
Mar 17 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
多文件上传的例子
2006/10/09 PHP
php反弹shell实现代码
2009/04/22 PHP
奇怪的PHP引用效率问题分析
2012/03/23 PHP
php常用Stream函数集介绍
2013/06/24 PHP
php简单定时执行任务的实现方法
2015/02/23 PHP
PHP实现基于文本的摩斯电码生成器
2016/01/11 PHP
jQuery创建插件的代码分析
2011/04/14 Javascript
移动节点的jquery代码
2014/01/13 Javascript
jquery对table中各数据的增加、保存、删除操作示例
2014/05/14 Javascript
Bootstrap学习笔记之js组件(4)
2016/06/12 Javascript
nodejs+websocket实时聊天系统改进版
2017/05/18 NodeJs
AngularJS基于factory创建自定义服务的方法详解
2017/05/25 Javascript
微信小程序调用PHP后台接口 解析纯html文本
2017/06/13 Javascript
Bootstrap Table中的多选框删除功能
2018/07/15 Javascript
JavaScript对象的特性与实践应用深入详解
2018/12/30 Javascript
JS实现页面鼠标点击出现图片特效
2020/08/19 Javascript
小程序实现录音功能
2020/09/22 Javascript
[02:15]你好,这就是DOTA!
2015/08/05 DOTA
Python通过解析网页实现看报程序的方法
2014/08/04 Python
Python中正则表达式的用法实例汇总
2014/08/18 Python
谈谈python中GUI的选择
2018/03/01 Python
Python解析、提取url关键字的实例详解
2018/12/17 Python
Python基于OpenCV实现人脸检测并保存
2019/07/23 Python
python3 下载网络图片代码实例
2019/08/27 Python
python使用Geany编辑器配置方法
2020/02/21 Python
浅谈python出错时traceback的解读
2020/07/15 Python
Zadig&Voltaire官网:法国时装品牌
2018/01/05 全球购物
竞聘书格式及范文
2014/03/31 职场文书
外语系毕业生求职自荐信
2014/04/12 职场文书
财务检查整改报告
2014/11/06 职场文书
2014年度思想工作总结
2014/11/27 职场文书
思想政治表现评语
2015/01/04 职场文书
黄山导游词
2015/01/31 职场文书
人事行政助理岗位职责
2015/04/11 职场文书
2015年档案室工作总结
2015/05/23 职场文书
工作报告范文
2019/06/20 职场文书