【问题标题】:terminate python while loop in php在php中终止python while循环
【发布时间】:2013-12-18 18:19:07
【问题描述】:

只是在我的 Raspberry Pi 项目中遇到问题

我有一个在 Raspberry Pi 上运行的 Web 服务器,我编写了一个带有一些按钮的 Web 界面来控制 Pi。 Pi 最初将在“while True”循环中运行 python 脚本。它代表自动模式。

问题来了。当我点击网页上的按钮时,我想切换到手动模式。这意味着我想终止“while True”循环并运行其他一些 python 脚本。如何在我的网页中实现它?还考虑到我可能想切换回自动模式。

window.prettyPrint && prettyPrint();
    $('#power-switch').on('switch-change', function (e, data) {
        if(data.value == true){
            var $el = $(data.el)
            , value = data.value;
            //console.log('on',e, $el, value);//for debug

            /*
            add your function here
            */
            js_pw_ON();


            $('#auto-switch').bootstrapSwitch('setActive', true);
            $('#lgt1').prop('disabled', false);
            $('#lgt2').prop('disabled', false);
            $('#lgt3').prop('disabled', false);
            $('#lgt4').prop('disabled', false);
            $('#lgt5').prop('disabled', false);
        }

【问题讨论】:

  • 你需要使用某种IPC
  • @JonathonReinhart 你能详细解释一下吗?实际上我不需要在 python 和网页之间传递信息。我只需要在不同的按钮上运行不同的脚本。
  • 您仍然需要某种 IPC 来告诉进程停止。这是在Linux上吗?你可以给它发一个signal

标签: php python raspberry-pi


【解决方案1】:

实现目标的最简单方法是使用名为“manual_mode”的文件,其中包含 0 或 1。当然php和python都必须有文件权限。

Php 可以很好地处理文件。如果你想开启手动模式:

file_put_contents('manual_mode','1');

关闭:

file_put_contents('manual_mode','0');

Python 也可以很好地处理文件:

while 1:
    f = open('manual_mode','r')
    val = f.read()
    f.close()
    if val == '1':
        break

编辑:如果你使用 jquery,你应该首先制作 switch.php 文件:

<?php
if(!empty($_GET['sw']) && $_GET['sw'] == 1)
{
  file_put_contents('manual_mode','1');
} else
{
  file_put_contents('manual_mode','0');
}

当你像 switch.php?sw=1 这样调用它时,manual_mode 将被设置为 1(否则为 0)。你接下来要做的是从你的 jquery 代码中调用 php 脚本:

$.get("switch.php?sw=1");

我想这就是你所需要的。

顺便说一句。根据 cmets,IPC 依赖于平台,而文件则不依赖于平台,因此选择是显而易见的。

【讨论】:

  • 感谢您的回答!我使用 Bootstrap 开关在自动和手动模式之间切换。我怎样才能把“file_put_contents”放在这个开关按钮上?我在原问题中添加了开关的代码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-27
  • 1970-01-01
  • 2017-03-10
  • 2017-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多