使用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中asyncore异步模块的用法及实现httpclient的实例
Jun 28 Python
浅析Python中的赋值和深浅拷贝
Aug 15 Python
Python实现字符串格式化输出的方法详解
Sep 20 Python
小米5s微信跳一跳小程序python源码
Jan 08 Python
详解Python 正则表达式模块
Nov 05 Python
python爬虫之urllib库常用方法用法总结大全
Nov 14 Python
在scrapy中使用phantomJS实现异步爬取的方法
Dec 17 Python
python中pip的使用和修改下载源的方法
Jul 08 Python
python名片管理系统开发
Jun 18 Python
解析Python 偏函数用法全方位实现
Jun 26 Python
python Paramiko使用示例
Sep 21 Python
python 基于wx实现音乐播放
Nov 24 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
山进SANGEAN ATS-909X电路分析
2021/03/02 无线电
php判断变量类型常用方法
2012/04/24 PHP
php数组去重复数据示例
2014/02/25 PHP
PHP实现将视频转成MP4并获取视频预览图的方法
2015/03/12 PHP
PHP file_get_contents函数读取远程数据超时的解决方法
2015/05/13 PHP
phpstorm 配置xdebug的示例代码
2019/03/31 PHP
一个符号插入器 中用到的js代码
2007/09/04 Javascript
javascript实现促销倒计时+fixed固定在底部
2013/09/18 Javascript
jQuery实现带滚动导航效果的全屏滚动相册实例
2015/06/19 Javascript
浅析nodejs实现Websocket的数据接收与发送
2015/11/19 NodeJs
微信小程序之GET请求的实例详解
2017/09/29 Javascript
jquery radio 动态控制选中失效问题的解决方法
2018/02/28 jQuery
node.js使用redis储存session的方法
2018/09/26 Javascript
node使用Mongoose类库实现简单的增删改查
2018/11/08 Javascript
layui 上传图片 返回图片地址的方法
2019/09/26 Javascript
在SSM框架下用laypage和ajax实现分页和数据交互的方法
2019/09/27 Javascript
HTML+JS实现“代码雨”效果源码(黑客帝国文字下落效果)
2020/03/17 Javascript
Python 文件读写操作实例详解
2014/03/12 Python
python操作sqlite的CRUD实例分析
2015/05/08 Python
详解Python之数据序列化(json、pickle、shelve)
2017/03/30 Python
Ubuntu 下 vim 搭建python 环境 配置
2017/06/12 Python
django框架面向对象ORM模型继承用法实例分析
2019/07/29 Python
Python generator生成器和yield表达式详解
2019/08/08 Python
Python三维绘图之Matplotlib库的使用方法
2020/09/20 Python
python+opencv3.4.0 实现HOG+SVM行人检测的示例代码
2021/01/28 Python
Marlies Dekkers内衣法国官方网上商店:国际知名的荷兰内衣品牌
2019/03/18 全球购物
写好自荐信的要点
2013/11/06 职场文书
毕业自荐书
2013/12/09 职场文书
勿忘国耻9.18演讲稿(经典篇)
2014/09/14 职场文书
2014年村支部书记四风对照检查材料思想汇报
2014/10/02 职场文书
国庆横幅标语
2014/10/08 职场文书
保安辞职信范文
2015/02/28 职场文书
2015年平安创建工作总结
2015/04/29 职场文书
军训后的感想
2015/08/07 职场文书
Windows11插耳机没反应怎么办? win11耳机没声音的多种解决办法
2021/11/21 数码科技
MySQL数据库查询之多表查询总结
2022/08/05 MySQL