Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 一种让树莓Pi等待命令的方法_Python_Linux_Networking_Webserver_Raspberry Pi - Fatal编程技术网

Python 一种让树莓Pi等待命令的方法

Python 一种让树莓Pi等待命令的方法,python,linux,networking,webserver,raspberry-pi,Python,Linux,Networking,Webserver,Raspberry Pi,我已经到处寻找这个问题的答案,但我真的不知道该搜索什么,在哪里寻找。我主要做过基本的web开发,所以我不熟悉如何让不同计算机上的应用程序相互通信 我想知道最好、最有效的方法,让树莓皮坐在同一个本地网络上,等待来自另一台计算机的命令 我启动了一个小项目,当同一个本地网络上的计算机发送命令时,让Pi的摄像机开始和停止记录。我目前有一个小的python脚本,当单击两个不同的按钮时,它会开始和停止将视频录制到文件中,但是我想将按钮触发器更改为来自另一台计算机的命令。Pi可以一次闲置几天,然后一个命令进入

我已经到处寻找这个问题的答案,但我真的不知道该搜索什么,在哪里寻找。我主要做过基本的web开发,所以我不熟悉如何让不同计算机上的应用程序相互通信

我想知道最好、最有效的方法,让树莓皮坐在同一个本地网络上,等待来自另一台计算机的命令

我启动了一个小项目,当同一个本地网络上的计算机发送命令时,让Pi的摄像机开始和停止记录。我目前有一个小的python脚本,当单击两个不同的按钮时,它会开始和停止将视频录制到文件中,但是我想将按钮触发器更改为来自另一台计算机的命令。Pi可以一次闲置几天,然后一个命令进入记录。那么,实现这一目标最有效的方法是什么呢。我有一些想法/问题,我想知道每个人的想法

  • 我需要安装web服务器吗
  • 有没有可能让pi和 它在局域网上唤醒了吗
  • 我应该打开一个插座,把一个环放在插座上吗 python脚本以不断检查消息?这是能量吗 高效的
  • 我应该从计算机发送一条消息,用shell脚本启动python脚本,然后发送start和stop命令吗
正如你所看到的,由于我对应用程序交互的了解有限,我到处都知道我的选择是什么。感谢阅读,我期待着答案

import socket
host="0.0.0.0"
port=43210 #or some high number unused port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.bind((host,port)) 
s.listen(1)
client,address = s.accept()
#this wont run until after something hits that port
然后,在另一台计算机上,转到

http://ip.of.raspery.pi:43210
这将尝试打开端口。。。该网页不会加载,但pi应该做任何下面的评论

或者你也可以这样做

from flask import Flask
app = Flask(__name__)
@app.route("/start")
def start():
   return "OK START"
@app.route("/stop")
def stop():
  return "OK STOP!"

if __name__ == "__main__":
   app.run("0.0.0.0",port=8080)
在pi上运行它。。。(或者更好地通过apache提供服务……但这是另一个问题)

然后您可以导航到

http://raspberry.pi.ip:8080/start 
http://raspberry.pi.ip:8080/stop
这一次,您将看到一条状态消息

然后,在另一台计算机上,转到

http://ip.of.raspery.pi:43210
这将尝试打开端口。。。该网页不会加载,但pi应该做任何下面的评论

或者你也可以这样做

from flask import Flask
app = Flask(__name__)
@app.route("/start")
def start():
   return "OK START"
@app.route("/stop")
def stop():
  return "OK STOP!"

if __name__ == "__main__":
   app.run("0.0.0.0",port=8080)
在pi上运行它。。。(或者更好地通过apache提供服务……但这是另一个问题)

然后您可以导航到

http://raspberry.pi.ip:8080/start 
http://raspberry.pi.ip:8080/stop
这一次,您将看到一条状态消息

然后,在另一台计算机上,转到

http://ip.of.raspery.pi:43210
这将尝试打开端口。。。该网页不会加载,但pi应该做任何下面的评论

或者你也可以这样做

from flask import Flask
app = Flask(__name__)
@app.route("/start")
def start():
   return "OK START"
@app.route("/stop")
def stop():
  return "OK STOP!"

if __name__ == "__main__":
   app.run("0.0.0.0",port=8080)
在pi上运行它。。。(或者更好地通过apache提供服务……但这是另一个问题)

然后您可以导航到

http://raspberry.pi.ip:8080/start 
http://raspberry.pi.ip:8080/stop
这一次,您将看到一条状态消息

然后,在另一台计算机上,转到

http://ip.of.raspery.pi:43210
这将尝试打开端口。。。该网页不会加载,但pi应该做任何下面的评论

或者你也可以这样做

from flask import Flask
app = Flask(__name__)
@app.route("/start")
def start():
   return "OK START"
@app.route("/stop")
def stop():
  return "OK STOP!"

if __name__ == "__main__":
   app.run("0.0.0.0",port=8080)
在pi上运行它。。。(或者更好地通过apache提供服务……但这是另一个问题)

然后您可以导航到

http://raspberry.pi.ip:8080/start 
http://raspberry.pi.ip:8080/stop


这一次,您将看到一条状态消息

不幸的是,我只知道第二种最有效的方法,因此无法回答您的问题;\u;第二种最有效的方法可以……不幸的是,我只知道第二种最有效的方法,所以无法回答您的问题;\u;第二种最有效的方法可以……不幸的是,我只知道第二种最有效的方法,所以无法回答您的问题;\u;第二种最有效的方法可以……不幸的是,我只知道第二种最有效的方法,所以无法回答您的问题;\u;第二个最有效的方法是…另外,
导入套接字
谢谢@JoranBeasley,哪一行表示它在有东西连接到它之前不会运行?是
s.listen(1)
?接受
是阻止。。。listen告诉您队列中要允许多少个挂起的连接(基本上),如果您想做的不仅仅是继续(即使用某种命令),那么您还需要做更多的工作,还有,
import socket
Thank@JoranBeasley,哪一行表示它在有东西连接到它之前不会运行?是
s.listen(1)
?接受
是阻止。。。listen告诉您队列中要允许多少个挂起的连接(基本上),如果您想做的不仅仅是继续(即使用某种命令),那么您还需要做更多的工作,还有,
import socket
Thank@JoranBeasley,哪一行表示它在有东西连接到它之前不会运行?是
s.listen(1)
?接受
是阻止。。。listen告诉您队列中要允许多少个挂起的连接(基本上),如果您想做的不仅仅是继续(即使用某种命令),那么您还需要做更多的工作,还有,
import socket
Thank@JoranBeasley,哪一行表示它在有东西连接到它之前不会运行?是
s.listen(1)
?接受
是阻止。。。listen告诉您队列中允许多少个挂起的连接(基本上),如果您想做的不仅仅是继续(即有某种命令),那么您将有更多的工作要做