Paso 3: Microsoft Visual Studio C# aplicación
Ahora es el momento para iniciar Microsoft Visual Studio. Empezamos por crear una aplicación de formulario de windows de C#. Que comenzando por la creación de la interfaz de usuario. Esto incluye 5 etiquetas, 1 rico textbox y 2 botones. Pueden ser añadidas al formulario utilizando la caja de herramientas en el lado izquierdo de la pantalla.
Una vez haya agregado los artículos anteriores, puede haga doble clic en el borde superior de la aplicación. Esto hará que aparezca la ventana de código de C# detrás de su programa. En el código adjunto y a continuación me han tratado de comentar mucho, debería ser bastante fácil de seguir. Si no he adjuntado una "versión" del programa y el archivo de proyecto de Visual Studio.
Puede modificar el puerto COM a lo que tu robot en. Mi robot fue el 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);
público Form1() {InitializeComponent(); init(); //runs a partir de parámetros de ajuste de la velocidad en baudios, puerto com, etc. que todo está por debajo. 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"; rotura; 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(); }
público vacío init() {prueba {myport = nuevo SerialPort(); myport. Velocidad en baudios = 9600; tasa de baudios predeterminada para mi robot myport. PortName = "COM5"; establecer qué puerto COM usar 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(); } } catch (Exception) {MessageBox.Show ("no puede abrir puerto COM"); }
privado void button1_Click (objeto sender, EventArgs e) {//this es el botón de activar. Cuando presiona activará el reconocimiento de voicce y abrir el puerto COM. recEngine.RecognizeAsync(RecognizeMode.Multiple); Button2. Activado = true; myport. Open();
privado void button2_Click (objeto sender, EventArgs e) {//this es el botón de desactivar. Al presionar se desactiva el reconocimiento de voz y cerrar el puerto COM. recEngine.RecognizeAsyncStop(); Button2. Habilitado = false; myport. Close();