我的问题是什么?如何使用Edge.js模块创建和重用实例变量?
当我说“闪烁绿色”时,无人机将完成我想要的。这很好。
当我再次说“闪烁绿色”时,它会执行代码,但无人机不会给出响应。无人机首次给出了答复。所以每次我必须重启程序才能工作。烦人...
第二次发生了什么?
它会执行完全相同的,它也执行代码,但无人机不会给出响应。
下面的代码:
private static void _speechRecognitionEngine_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
switch (e.Result.Text)
{
case "Blink green":
Task.Run((Action)blinkGreen);
break;
}
}
// ONLY WORKS THE FIRST TIME
// WHEN I SAY "BLINK GREEN" AGAIN, IT'S WILL EXECUTE THE
// CODE BUT THE DRONE DOESN'T GIVE A RESPONSE. ONLY THE
// FIRST TIME (SO I HAVE TO RESTART THE PROGRAM)
public static async void blinkGreen()
{
var func = Edge.Func(@"
var arDrone = require('ar-drone');
var client = arDrone.createClient();
return function(data, callback){
client.animateLeds('blinkGreen',5,2);
callback(null, data);
}
");
Console.WriteLine(await func("BLINK EXECUTED!"));
}
我认为有些事情是怎么回事:
var arDrone = require('ar-drone');
var client = arDrone.createClient();
允许我创建一个客户,我猜。我必须创建并重用客户端实例,以便可以使用同一个客户端来解决问题。但我不知道如何用Edge.js模块做到这一点...
我希望有人能帮我解决这个问题。
感谢,
杰米
我对ar-drone库不熟悉,但一次只能连接一个客户端?如果您可以创建并重用可能有效的客户端实例。 – Cyral
@Cyral,我认为问题是我可以创建一个客户端,你已经说过。你有一个想法,我可以如何使用一个客户? – Jamie
我刚刚在我的源中看到了这个问题,但我不太了解在C#中运行NodeJS。您需要以某种方式将客户端创建为全局变量,但仍然可以稍后访问它。 – Cyral