【问题标题】:Pepper: pass variable from Python to web JSPepper:将变量从 Python 传递到 Web JS
【发布时间】:2017-08-25 07:08:33
【问题描述】:

我正在为 Aldebaran's Pepper 机器人编写应用程序。我正在使用 Choregraphe,并制作了一个用于在机器人平板电脑中显示的 html。我已经制作了用于显示 Web 的框,我需要将一个变量从 Python 传递到 Web Javascript。

有什么办法吗?

Python 代码与默认的 Raise Event 框相同,它在他的onStart 输入上接收一个字符串“IMAGE”:

class MyClass(GeneratedClass):
    def __init__(self):
        GeneratedClass.__init__(self)
        pass

    def onLoad(self):
        self.memory = ALProxy("ALMemory")

    def onUnload(self):
        self.memory = None

    def onInput_onStart(self, p):
        self.memory.raiseEvent(self.getParameter("key"), p)
        self.onStopped(p)

    def onInput_onStop(self):
        self.onUnload() #~ it is recommended to call onUnload of this box in a onStop method, as the code written in onUnload is used to stop the box as well
        pass

Javascript 代码是这样的:

$('document').ready(function(){

    var session = new QiSession();

    session.service("ALMemory").done(function (ALMemory) {
        ALMemory.subscriber("PepperQiMessaging/totablet").done(function(subscriber) {
            $("#log").text("AAA");
            subscriber.signal.connect(toTabletHandler);
        });
    });

    function toTabletHandler(value) {
          $("#log").text("-> ");
    }
});

它进入了第一个#log而不是JS的第二个。

【问题讨论】:

    标签: pepper choregraphe


    【解决方案1】:

    是的,我认为网页加载太晚,无法捕捉您的活动。一种快速的解决方案是在页面准备好时从 Javascript 发送一个事件,然后在 Python 脚本中等待这个事件。一旦收到这个事件,你就知道网页已经准备好了,你可以发送“sendImage”事件。

    【讨论】:

    • 您好,我正在尝试从平板电脑上开发的 html 页面的 onclick javascript 函数中保存一些响应。所以我想每次点击文本文件中的onclick时保存javascript函数的响应。任何具有详细应用的示例代码都会有所帮助。谢谢!
    【解决方案2】:

    我解决了这个问题。我在 show HTML 框和 sendImage 框之间放置了一个 2 秒的 delay 框,如下图所示:

    我认为问题在于发送到tabled的字符串是在web准备接收它之前发送的,并且延迟2秒(有1它不起作用)页面有时间准备接收数据。

    【讨论】:

      猜你喜欢
      • 2011-10-29
      • 1970-01-01
      • 2021-11-18
      • 2016-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多