使用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判断字符串是否纯数字的方法
Nov 19 Python
Python的“二维”字典 (two-dimension dictionary)定义与实现方法
Apr 27 Python
python分割列表(list)的方法示例
May 07 Python
浅谈python中的__init__、__new__和__call__方法
Jul 18 Python
python 二分查找和快速排序实例详解
Oct 13 Python
pip安装Python库时遇到的问题及解决方法
Nov 23 Python
解决python3 网络请求路径包含中文的问题
May 10 Python
在IPython中执行Python程序文件的示例
Nov 01 Python
python list数据等间隔抽取并新建list存储的例子
Nov 27 Python
Python实现上下文管理器的方法
Aug 07 Python
python3实现简单飞机大战
Nov 29 Python
Python爬虫之Selenium中frame/iframe表单嵌套页面
Dec 04 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数据库信息代码
2009/03/12 PHP
在WordPress中使用PHP脚本来判断访客来自什么国家
2015/12/10 PHP
php集成开发环境详解
2019/09/24 PHP
PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结
2019/12/04 PHP
Mootools 1.2教程 函数
2009/09/15 Javascript
Js 时间函数getYear()的使用问题探讨
2013/04/01 Javascript
提取jquery的ready()方法单独使用示例
2014/03/25 Javascript
JavaScript获取图片的原始尺寸以宽度为例
2014/05/04 Javascript
使用Nodejs开发微信公众号后台服务实例
2014/09/03 NodeJs
基于js实现checkbox批量选中操作
2016/11/22 Javascript
微信小程序实战篇之购物车的实现代码示例
2017/11/30 Javascript
基于$.ajax()方法从服务器获取json数据的几种方式总结
2018/01/31 Javascript
优雅的在React项目中使用Redux的方法
2018/11/10 Javascript
工作中常用js功能汇总
2020/11/07 Javascript
python中的多重继承实例讲解
2014/09/28 Python
一篇文章了解Python中常见的序列化操作
2019/06/20 Python
python+rsync精确同步指定格式文件
2019/08/29 Python
python 哈希表实现简单python字典代码实例
2019/09/27 Python
Python的赋值、深拷贝与浅拷贝的区别详解
2020/02/12 Python
python 按钮点击关闭窗口的实现
2020/03/04 Python
Django实现文章详情页面跳转代码实例
2020/09/16 Python
Python 实现PS滤镜的旋涡特效
2020/12/03 Python
Python爬虫实例之2021猫眼票房字体加密反爬策略(粗略版)
2021/02/22 Python
HTML5的结构和语义(5):交互
2008/10/17 HTML / CSS
网络书店创业计划书
2014/02/07 职场文书
经理秘书求职自荐信范文
2014/03/23 职场文书
继承公证书样本
2014/04/04 职场文书
银行授权委托书格式
2014/10/10 职场文书
放假通知
2015/04/14 职场文书
安全教育片观后感
2015/06/17 职场文书
围城读书笔记
2015/06/26 职场文书
旅游安全责任协议书
2016/03/22 职场文书
Redis缓存-序列化对象存储乱码问题的解决
2021/06/21 Redis
node快速搭建后台的实现步骤
2022/02/18 NodeJs
pytorch中的torch.nn.Conv2d()函数图文详解
2022/02/28 Python
DSP接收机前端设想
2022/04/05 无线电