使用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 字典(Dictionary)操作详解
Mar 11 Python
Python中的类学习笔记
Sep 23 Python
一个基于flask的web应用诞生 用户注册功能开发(5)
Apr 11 Python
python交互式图形编程实例(一)
Nov 17 Python
python获取url的返回信息方法
Dec 17 Python
Python线程池模块ThreadPoolExecutor用法分析
Dec 28 Python
详解python 爬取12306验证码
May 10 Python
python模拟键盘输入 切换键盘布局过程解析
Aug 15 Python
python系列 文件操作的代码
Oct 06 Python
python实现udp聊天窗口
Mar 31 Python
Django基于客户端下载文件实现方法
Apr 21 Python
Python 分布式缓存之Reids数据类型操作详解
Jun 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
PHP return语句的另一个作用
2014/07/30 PHP
PHP实现的比较完善的购物车类
2014/12/02 PHP
PHP用反撇号执行外部命令
2015/04/14 PHP
PHP读取大文件的几种方法介绍
2016/10/27 PHP
PHP如何通过表单直接提交大文件详解
2019/01/08 PHP
Jquery ThickBox插件使用心得(不建议使用)
2010/09/08 Javascript
处理文本部分内容的TextRange对象应用实例
2014/07/29 Javascript
JS 实现可停顿的垂直滚动实例代码
2016/11/23 Javascript
Bootstrap的popover(弹出框)2秒后定时消失的实现代码
2017/02/27 Javascript
微信小程序实现缓存根据不同的id来进行设置和读取缓存
2017/06/12 Javascript
gulp安装以及打包合并的方法教程
2017/11/19 Javascript
Vue+Vux项目实践完整代码
2017/11/30 Javascript
微信小程序实现多个按钮的颜色状态转换
2019/02/15 Javascript
vue3.0实现插件封装
2020/12/14 Vue.js
如何在现代JavaScript中编写异步任务
2021/01/31 Javascript
python zip文件 压缩
2008/12/24 Python
python基础教程之面向对象的一些概念
2014/08/29 Python
利用Opencv中Houghline方法实现直线检测
2018/02/11 Python
Django数据库连接丢失问题的解决方法
2018/12/29 Python
python实现简单加密解密机制
2019/03/19 Python
在Anaconda3下使用清华镜像源安装TensorFlow(CPU版)
2020/04/19 Python
Pytorch 使用opnecv读入图像由HWC转为BCHW格式方式
2020/06/02 Python
python爬虫请求头的使用
2020/12/01 Python
Window10上Tensorflow的安装(CPU和GPU版本)
2020/12/15 Python
Python 实现一个简单的web服务器
2021/01/03 Python
巴西服装和鞋子购物网站:Marisa
2018/10/25 全球购物
世界上最大的冷却器制造商:Igloo Coolers
2019/07/23 全球购物
戴尔新西兰官网:Dell New Zealand
2020/01/07 全球购物
Farfetch中文官网:奢侈品牌时尚购物平台
2020/03/15 全球购物
超市促销实习自我鉴定
2013/09/23 职场文书
高三自我鉴定怎么写
2013/10/19 职场文书
图书馆志愿者活动总结
2014/06/27 职场文书
2014教育局对照检查材料思想汇报
2014/09/23 职场文书
公司委托书格式范文
2014/10/09 职场文书
推销搭讪开场白
2015/05/28 职场文书
Python OpenCV超详细讲解调整大小与图像操作的实现
2022/04/02 Python