Étape 3: Microsoft Visual Studio c# Application
Il est maintenant temps pour démarrer Microsoft Visual Studio. Nous commençons par créer une application c# windows Forms. Je commence par la création de l’interface utilisateur. Cela inclut 5 étiquettes, 1 zone de texte riche et 2 boutons. Ceux-ci peuvent être ajoutés au formulaire à l’aide de la boîte à outils sur le côté gauche de l’écran.
Une fois que vous avez ajouté les éléments ci-dessus, vous pouvez double-cliquer sur la bordure supérieure de votre application. Cela fera apparaître la fenêtre de code c# derrière votre programme. Dans le code ci-joint et en dessous j’ai ont essayé de commenter beaucoup de lui, il devrait être assez facile à suivre. Si ce n’est pas le cas, j’ai joint une version « finale » du programme et le fichier de projet Visual Studio.
Vous pouvez modifier le port COM à tout ce qui est votre robot sur. Mon robot a été le 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);
public Form1() {InitializeComponent() ; init() ; //runs à partir des paramètres définissant le débit en bauds, port com, etc. que tout est ci-dessous. 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 » ; rupture ; 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(); }
public void init() {try {myport = new SerialPort() ; myport. BaudRate = 9600 ; Vitesse de transmission par défaut pour mon robot myport. PortName = « COM5 » ; définition de port COM à utiliser 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 ("Impossible d’ouvrir Port COM") ; }
private void button1_Click (object sender, EventArgs e) {//this est le bouton Activer. Lorsque vous appuyez sur il va activer la reconnaissance voicce et ouvrir le port COM. recEngine.RecognizeAsync(RecognizeMode.Multiple) ; Button2. Enabled = true ; myPort. Open() ;
Private Sub button2_Click (ByVal sender As Object, EventArgs e) {//this est le bouton désactiver. Lorsque vous appuyez sur il va désactiver la reconnaissance vocale et de fermer le port COM. recEngine.RecognizeAsyncStop() ; Button2. Enabled = false ; myPort. Close() ;