2017-08-25 32 views
1

私はAldebaranのPepperロボット用のアプリケーションをプログラミングしています。 Choregrapheを使用していて、ロボットのタブレットで表示するためのHTMLを作成しました。 Webを表示するためのボックスを作ったので、PythonからWeb Javascriptに変数を渡す必要があります。Pepper:PythonからWebに変数を渡すJS

これを行う方法はありますか?

ザ・Pythonコードを上げるイベントボックスのデフォルトと同じで、それは彼の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の2番目は入力しません。

Choregraphe scheme

答えて

1

私はこの問題を解決しました。私はショーHTML箱と下の画像のようにsendImageボックス間の2秒の遅延ボックスを置く:

Choreographe Scheme

私は問題がある文字列はに送ることだったと思いますウェブはそれを受け取る準備が整う前に送信され、2秒の遅れ(1で動作しない)でページにデータを受信する準備ができました。

2

はい、あなたのイベントをキャッチするにはウェブページが遅すぎると思います。簡単な解決策の1つは、ページが準備できたらJavascriptからイベントを送信し、Pythonスクリプトでこのイベントを待つことです。このイベントが受信されると、Webページが準備完了であり、 "sendImage"イベントを送信できることがわかります。

関連する問題