我的問題是什麼?如何使用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