Röst kontrollerat Rover Robot (3 / 4 steg)
Steg 3: Microsoft Visual Studio C#-program
Nu är det dags att starta Microsoft Visual Studio. Vi börjar med att skapa ett C# formulärprogram. Jag börjar med att skapa UI. Detta inkluderar 5 etiketter, 1 rich textbox och 2 knappar. Dessa kan läggas till i formuläret med verktygslådan på vänster sida av skärmen.
När du har lagt till de ovanstående posterna, kan du dubbelklicka på den övre kanten av din ansökan. Detta kommer att ta upp C# kod-fönstret bakom programmet. I koden fäst och nedan jag har försökt att kommentera mycket av det, det borde vara ganska lätt att följa. Om inte jag har bifogat en "släppt" version av programmet och projektfilen Visual Studio.
Du kan ändra COM-porten till vad din robot är på. Min robot var på COM5.
med hjälp av systemet.
använder System.Collections.Generic;
använder System.ComponentModel;
med hjälp av System.Data;
med hjälp av System.Drawing;
använder System.Linq;
använder System.Text;
använder System.Threading.Tasks;
använder System.Windows.Forms;
använder System.IO.Ports;
använder System.Speech;
använder System.Speech.Recognition;
använder System.Speech.Synthesis;
namnområdet Voice_Controlled_Rover
{
offentliga partiell klass Form1: Form
{
privat SerialPort myport;
SpeechRecognitionEngine recEngine = ny SpeechRecognitionEngine(); Start möjligheten för datorn att förstå röst
SpeechSynthesizer synth = nya SpeechSynthesizer(); Start abilty att ha datorn prata tillbaka
offentliga Form1()
{
InitializeComponent();
init(); kör start parametrar ange baudvärde, com-port, etc. är allt nedan.
}
privata void Form1_Load (objekt avsändare, EventArgs e)
{
button2. Aktiverat = false; Greys ut knappen inaktivera när programmet startas
Val kommandon = nya Choices();
-kommandon. Lägg till (nya string [] {"framåt", "reverse", "vänster", "höger", "halt"}); Ange vilka kommandon kommer att erkännas av röstigenkänningen.
GrammarBuilder gBuilder = ny GrammarBuilder();
gBuilder.Append(commands);
Grammatik grammatik = nya Grammar(gBuilder);
recEngine.LoadGrammarAsync(grammar);
recEngine.SetInputToDefaultAudioDevice();
recEngine.SpeechRecognized += RecEngine_SpeechRecognized;
}
privata void RecEngine_SpeechRecognized (objekt avsändare, SpeechRecognizedEventArgs e)
{
växel (e.Result.Text)
{
fallet "stopp":
Skicka en 0 till roboten.
myport. WriteLine("0");
ändra färgerna på etiketterna att visa vad som händer.
Label5. Textfärg = System.Drawing.Color.Green;
Label1. Textfärg = System.Drawing.Color.DarkRed;
Label2. Textfärg = System.Drawing.Color.DarkRed;
Label3. Textfärg = System.Drawing.Color.DarkRed;
Label4. Textfärg = System.Drawing.Color.DarkRed;
datorn kommer att säga "Halt"
synth. SpeakAsync("Halt");
Stopp visas på en ny rad i Rich Textbox.
richTextBox1.Text += "\nHalt";
bryta;
fallet "framåt":
myport. WriteLine("1");
Label1. Textfärg = System.Drawing.Color.Green;
Label2. Textfärg = System.Drawing.Color.DarkRed;
Label3. Textfärg = System.Drawing.Color.DarkRed;
Label4. Textfärg = System.Drawing.Color.DarkRed;
Label5. Textfärg = System.Drawing.Color.DarkRed;
synth. SpeakAsync("Forward");
richTextBox1.Text += "\nForward";
bryta;
fallet "omvänd":
myport. WriteLine("2");
Label1. Textfärg = System.Drawing.Color.DarkRed;
Label2. Textfärg = System.Drawing.Color.Green;
Label3. Textfärg = System.Drawing.Color.DarkRed;
Label4. Textfärg = System.Drawing.Color.DarkRed;
Label5. Textfärg = System.Drawing.Color.DarkRed;
synth. SpeakAsync("Reverse");
richTextBox1.Text += "\nReverse";
bryta;
fallet "vänster":
myport. WriteLine("3");
Label1. Textfärg = System.Drawing.Color.DarkRed;
Label2. Textfärg = System.Drawing.Color.DarkRed;
Label3. Textfärg = System.Drawing.Color.Green;
Label4. Textfärg = System.Drawing.Color.DarkRed;
Label5. Textfärg = System.Drawing.Color.DarkRed;
synth. SpeakAsync("left");
richTextBox1.Text += "\nLeft";
bryta;
fallet "rätt":
myport. WriteLine("4");
Label1. Textfärg = System.Drawing.Color.DarkRed;
Label2. Textfärg = System.Drawing.Color.DarkRed;
Label3. Textfärg = System.Drawing.Color.DarkRed;
Label4. Textfärg = System.Drawing.Color.Green;
Label5. Textfärg = System.Drawing.Color.DarkRed;
synth. SpeakAsync("right");
richTextBox1.Text += "\nRight";
bryta;
}
}
public void init()
{
försök
{
myport = ny SerialPort();
myport. Baud = 9600; standard överföringshastigheten för min robot
myport. PortName = "COM5"; ställa in vilken COM port du använder
}
fånga (undantaget)
{
MessageBox.Show kan ("inte öppna COM-Port");
}
}
privata void button1_Click (objekt avsändare, EventArgs e)
{
Det här är knappen Aktivera. När du trycker den vilja aktivera voicce erkännande och öppna COM-porten.
recEngine.RecognizeAsync(RecognizeMode.Multiple);
button2. Aktiverat = sant;
myport. Open();
}
privata void button2_Click (objekt avsändare, EventArgs e)
{
Det här är knappen inaktivera. När du trycker på det kommer att inaktivera röstigenkänningen och stäng COM-porten.
recEngine.RecognizeAsyncStop();
button2. Aktiverat = false;
myport. Close();
}
}
}