static void Main(string[] args) { string input = ""; byte[] bytes2send; PipeMessage pmsg; XmlConfigurator.Configure(new FileInfo("logging.config")); // default config string confFile = "VoiceCmdClientSetting.json"; try { if (args.Length >= 2) { confFile = args[1]; } // decide which configuration to use VoiceCmdSetting vs = JsonConvert.DeserializeObject <VoiceCmdSetting>(File.ReadAllText(confFile)); StartListen(vs); Console.WriteLine("- Recognised voice messages will be listed below."); Console.WriteLine("- Enter anything to receive echo message."); Console.WriteLine("- Enter 'stop' to close program.\n\n"); while (true) { try { input = Console.ReadLine(); if (input == "stop") { Console.WriteLine("Stopping.."); StopListen(); break; } pmsg = new PipeMessage(EVENT_TYPE_ECHO, input); bytes2send = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(pmsg)); SendStream.Write(bytes2send, 0, bytes2send.Length); pmsg = null; bytes2send = null; } catch (Exception ex) { log.Error("Namedpipe exception: ex: " + ex); } } return; } catch (Exception ex) { log.Error("Failed to start test client, ex: " + ex); Console.WriteLine("enter to close program."); Console.ReadLine(); return; } }
public void loadGrammer(VoiceCmdSetting vs) { foreach (VoiceCmdSetting.VoiceGrammar voiceGrammar in vs.grammars) { Grammar g = ToGrammar(vs.channelName, voiceGrammar); if (!grammarMap.ContainsKey(g.Name)) { // load grammar s_recognizer.LoadGrammar(g); // add grammar to map grammarMap[g.Name] = g; confidenceMap[g.Name] = voiceGrammar.confidence; } else { log.Warn("Ignore duplicate grammar: " + g.Name); } } }
static void StartListen(VoiceCmdSetting vs) { try { log.Debug($"try to connect to {vs.cmdPipeName}, {vs.ctrlPipeName}"); // Connect to receive_pipe and send start message RecvStream = new NamedPipeClientStream(".", vs.cmdPipeName, PipeDirection.InOut, PipeOptions.Asynchronous | PipeOptions.WriteThrough); RecvStream.Connect(500); RecvStream.ReadMode = PipeTransmissionMode.Message; // Connect to send_pipe SendStream = new NamedPipeClientStream(".", vs.ctrlPipeName, PipeDirection.InOut, PipeOptions.Asynchronous | PipeOptions.WriteThrough); SendStream.Connect(500); SendStream.ReadMode = PipeTransmissionMode.Message; // Start listening to event RecvStream.BeginRead(MsgBuf, 0, BufferSize, EndReadCallBack, null); } catch (Exception ex) { // Swallow the exception log.Error("Namedpipe exception: " + ex.Message + "\n" + ex.StackTrace); } }