Stap 3: Microsoft Visual Studio C# applicatie
Nu is het tijd voor het opstarten van Microsoft Visual Studio. We beginnen met het maken van een C# windows-formuliertoepassing. Ik beginnen door het creëren van de UI. Het gaat hierbij om 5 labels, 1 RTF-vak en 2 knoppen. Deze kunnen worden toegevoegd aan het formulier met behulp van de werkset aan de linker kant van het scherm.
Zodra u de bovenstaande items hebt toegevoegd, kunt u dubbelklikken op de bovenste rand van uw toepassing. Dit zal omhoog het C#-codevenster achter uw programma brengen. In de code aangesloten en hieronder ik heb geprobeerd om veel van het commentaar, het vrij gemakkelijk te volgen moet zijn. Zo niet ik heb een "officiële" versie van het programma en de Visual Studio-projectbestand bijgevoegd.
U kunt de COM-poort op wat uw robot is op. Mijn robot was op COM5.
SpeechRecognitionEngine recEngine = new SpeechRecognitionEngine(); //starting the ability for the computer to recognize voice SpeechSynthesizer synth = new SpeechSynthesizer(); //starting the abilty to have the computer talk back
public Form1() { InitializeComponent(); init(); //runs starting parameters setting the baud rate, com port, etc. everything is below. }
private void Form1_Load(object sender, EventArgs e) { button2.Enabled = false; //greys out the disable button when the program starts Choices commands = new Choices(); commands.Add(new string[] { "forward", "reverse", "left", "right", "halt" }); //Setting which commands will be recognized by the voice recognition. GrammarBuilder gBuilder = new GrammarBuilder(); gBuilder.Append(commands); Grammar grammar = new Grammar(gBuilder);
openbaar Form1() {init(), InitializeComponent(); //runs starten parameters instellen van de com-poort, de baud-rate, enz die alles hieronder is. recEngine.LoadGrammarAsync(grammar); recEngine.SetInputToDefaultAudioDevice(); recEngine.SpeechRecognized += RecEngine_SpeechRecognized;
}
private void RecEngine_SpeechRecognized(object sender, SpeechRecognizedEventArgs e) { switch (e.Result.Text) { case "halt": //sending a 0 to the robot. myport.WriteLine("0"); //changing the colors of the labels to display what is happening. label5.ForeColor = System.Drawing.Color.Green; label1.ForeColor = System.Drawing.Color.DarkRed; label2.ForeColor = System.Drawing.Color.DarkRed; label3.ForeColor = System.Drawing.Color.DarkRed; label4.ForeColor = System.Drawing.Color.DarkRed; //computer will say "Halt" synth.SpeakAsync("Halt"); //Halt will display on a new line in the Rich Textbox. richTextBox1.Text += "\nHalt"; break;
case "forward": myport.WriteLine("1"); label1.ForeColor = System.Drawing.Color.Green; label2.ForeColor = System.Drawing.Color.DarkRed; label3.ForeColor = System.Drawing.Color.DarkRed; label4.ForeColor = System.Drawing.Color.DarkRed; label5.ForeColor = System.Drawing.Color.DarkRed;
synth.SpeakAsync("Forward"); richTextBox1.Text += "\nForward"; break;
case "reverse": myport.WriteLine("2"); label1.ForeColor = System.Drawing.Color.DarkRed; label2.ForeColor = System.Drawing.Color.Green; label3.ForeColor = System.Drawing.Color.DarkRed; label4.ForeColor = System.Drawing.Color.DarkRed; label5.ForeColor = System.Drawing.Color.DarkRed;
synth.SpeakAsync("Reverse"); richTextBox1.Text += "\nReverse"; break;
case "left": myport.WriteLine("3"); label1.ForeColor = System.Drawing.Color.DarkRed; label2.ForeColor = System.Drawing.Color.DarkRed; label3.ForeColor = System.Drawing.Color.Green; label4.ForeColor = System.Drawing.Color.DarkRed; label5.ForeColor = System.Drawing.Color.DarkRed;
synth.SpeakAsync("left"); richTextBox1.Text += "\nLeft"; break;
case "right": myport.WriteLine("4"); label1.ForeColor = System.Drawing.Color.DarkRed; label2.ForeColor = System.Drawing.Color.DarkRed; label3.ForeColor = System.Drawing.Color.DarkRed; label4.ForeColor = System.Drawing.Color.Green; label5.ForeColor = System.Drawing.Color.DarkRed;
synth.SpeakAsync("right"); richTextBox1.Text += "\nRight"; break; } }
public void init() { try { myport = new SerialPort(); myport.BaudRate = 9600; //default baud rate for my robot myport.PortName = "COM5"; //setting which COM port to use } catch (Exception) { MessageBox.Show("Can not open COM Port"); } }
Synth. SpeakAsync("right"); richTextBox1.Text += "\nRight"; breken; private void button1_Click(object sender, EventArgs e) { //this is the enable button. When pressed it will activate the voicce recognition and open the COM port. recEngine.RecognizeAsync(RecognizeMode.Multiple); button2.Enabled = true; myport.Open(); }
openbare nietige init() {probeer {myport = new SerialPort(); myport. BaudRate = 9600; standaard baud-rate voor mijn robot myport. PortName = "COM5"; instellen welke COM-poort te gebruiken private void button2_Click(object sender, EventArgs e) { //this is the disable button. When pressed it will deactivate the voice recognition and close the COM port. recEngine.RecognizeAsyncStop(); button2.Enabled = false; myport.Close(); } } vangst (uitzondering) {MessageBox.Show ("kan niet openen COM-poort"); }
private void button1_Click (object afzender, EventArgs e) {//this is de knop inschakelen. Wanneer u drukt zal het activeren van de erkenning van de voicce en de COM-poort te openen. recEngine.RecognizeAsync(RecognizeMode.Multiple); Button2. Ingeschakeld = true; myport. Open();
private void button2_Click (object afzender, EventArgs e) {//this is de knop uitschakelen. Wanneer u drukt zal het deactiveren van de erkenning van de stem en de COM-poort te sluiten. recEngine.RecognizeAsyncStop(); Button2. Ingeschakeld = false; myport. Close();