Pepper:将变量从 Python 传递给 Web JS

Pepper: pass variable from Python to web JS

我正在为 Aldebaran 的 Pepper 机器人编写应用程序。我正在使用 Choregraphe,我制作了一个 html 用于在机器人平板电脑中显示。我制作了用于显示网络的框,我需要将一个变量从 Python 传递到网络 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的第二个

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

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

是的,我认为网页加载太晚,无法赶上您的活动。一种快速解决方案是在页面准备就绪时从 Javascript 发送事件,并在 Python 脚本中等待此事件。收到此事件后,您就知道网页已准备就绪,您可以发送 "sendImage" 事件。