问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

树莓派主机怎么控制分机执行python程序 anno

发布网友 发布时间:2022-04-20 16:10

我来回答

1个回答

热心网友 时间:2022-04-18 03:13

先贴最终的源代码:
#!/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
那用 就访问到了我们的"/”路由(bottle默认端口是8080)
同理,第二个路由的路径是“/cmd”也就是访问 就访问到了第二个路由
最后一句: run(host = " 0.0.0.0 " )就是调用bottle的run方法,建立一个http服务器,让我们能通过浏览器访问我们的界面。
下边我详细的解释一下这些代码的作用:
第一个路由的作用就是扔给浏览器一个HTML(index.tpl)文档,显示这个界面:

这个文件的源代码如下:
<!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=""></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控制的相关内容就给大家介绍这么多,希望对大家有所帮助!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果电脑电池充不进电苹果电脑充不进去电是怎么回事 苹果电脑不充电没反应苹果电脑充电指示灯不亮充不了电怎么办 狗狗更加忠诚护家、善解人意,养一只宠物陪伴自己,泰迪能长多大... 描写泰迪狗的外形和特点的句子 国外留学有用吗 花钱出国留学有用吗 !这叫什么号 百万医疗赔付后是否可以续保 前一年理赔过医疗险还能续保吗? 医疗住院险理赔后还能购买吗? 树莓派python支持i2c吗 “树莓派3”、“树莓派3b”和“树莓派3b+”有什么区别? 怎么在树莓派上用python做机器人 求助,树莓派3B安装python-dev 安装不了 如何在树莓派上安装python和GPIO库 如何用树莓派3+Python+wiringpi生成PWM 树莓派3 python3 编程开机执行怎么去除 树莓派 c和python哪个好 树莓派python3编程出现多个print怎么办 树莓派Python3.5使用matplotlib绘不了图 树莓派python3环境下安装opencv在编译的时候出现如... 树莓派上怎么用python3控制gpio 怎么为树莓派的Python3安装wxPython 请问树莓派上Thonny python ide怎么切换python3.5... 如何更新树莓派gpio和rpio 树莓派怎么运行python程序 树莓派如何启动python 如何在树莓派上面安装python 请教关于树莓派2安装python3的问题 猫咪停用感冒药多久后可以打疫苗? 停车是先拉手刹还是先挂P挡? 苹果手机没有id密码,怎么把账号注销? ipadpro Apple ID没有密码如何注销? 苹果手机的ID没有密码怎么注销 苹果忘记id密码怎么注销id账号 苹果id没密码怎么注销掉 苹果手机没有密码怎么注销id号 苹果6p没有id密码怎么注销? iphone5没有原来的ID账号密码如何注销重 苹果6p没有id密码怎么注销, 自动挡停车,到底先挂P挡还是先拉手刹? 做面包怎么和面 想要做出松软好吃的面包,该怎样和面? 做面包和面的时间太长面团会打泄了,为什么 做面包怎样和面可以达到最好的效果? 做面包揉面越揉越稀咋回事 家里已经有个烤箱了,但做面包是和面太麻烦,想买... 最近在学做面包西点,揉面太累了!想放弃了都。 做面包怎么和面啊,总是不成功, 做面包怎么和面啊,总是不成功?