【问题标题】:Getting data value from ALMemory using JS使用 JS 从 ALMemory 获取数据值
【发布时间】:2017-11-22 16:13:39
【问题描述】:

当我尝试使用以下代码从ALMemory 获取数据时:

session.service("ALMemory").done(function (ALMemory) {
    var value = ALMemory.getData("ALTextToSpeech/TextDone");
});

这个value 的类型是AL::ALValue。我如何将其转换为 int,因为在这种情况下,当前正在讲话时预期为 0,当前未讲话时预期为 1。我试图用不同的方法将它转换为 int 或数字或字符串,但没有成功。

当我在 python SDK 中使用这个功能时:

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

def onUnload(self):
    self.memory = None

def onInput_checkIfSpeaking(self, p):
    value = self.memory.getData("ALTextToSpeech/TextDone")

这个value 是int 类型,而不是AL::ALValue。这可以用 JavaScript 实现吗?

【问题讨论】:

    标签: javascript python nao-robot pepper


    【解决方案1】:

    在回调中设置您的值(所有函数都返回承诺,您可以在其上附加回调:promise.then(onFulfilled, onRejected)):

    session.service("ALMemory").then( function (ALMemory) {
        ALMemory.getData("ALTextToSpeech/TextDone").then( function (TextDone) {
             var value = TextDone;
        });
    });
    

    为了记录,文档在这里:http://doc.aldebaran.com/2-5/dev/js/index.html

    【讨论】:

      【解决方案2】:

      你试过标准的java吗:

      value = (int)(self.memory.getData("ALTextToSpeech/TextDone")) 
      

      ?

      【讨论】:

      • js 需要,python 不需要
      • 是的,对不起,我读的是“java”而不是 js。在 JS 中你尝试过 Number() 还是 ParseInt() ?
      • 此方法返回的结果始终是一个空对象{},而不是预期的0或1。
      • 你是在真正的机器人上吗?
      • 可以肯定的是,您能否连接到您的 nao shell(putty 或 ssh)并启动此类命令:qicli call ALMemory.getData ALTextToSpeech/TextDone
      猜你喜欢
      • 2022-12-16
      • 1970-01-01
      • 1970-01-01
      • 2020-01-25
      • 2018-03-07
      • 1970-01-01
      • 1970-01-01
      • 2017-08-06
      • 2020-10-31
      相关资源
      最近更新 更多