Я начинающий, который очень сильно застрял в этом, моя главная цель - управлять роботами с помощью речи. Первоначально я начал с грамматики для своей речи с этим кодом, я даже был успешным мой код, это я сделал это в приложении Windows Form:
using System.Speech.Recognition;
using System.Windows.Forms;
using System.Threading;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// Create a new SpeechRecognizer instance.
sr = new SpeechRecognizer();
// Create a simple grammar that recognizes "red", "green", or "blue".
Choices colors = new Choices();
colors.Add("red");
colors.Add("green");
colors.Add("blue");
colors.Add("white");
GrammarBuilder gb = new GrammarBuilder();
gb.Append(colors);
// Create the actual Grammar instance, and then load it into the speech recognizer.
Grammar g = new Grammar(gb);
sr.LoadGrammar(g);
// Register a handler for the SpeechRecognized event.
sr.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(sr_SpeechRecognized);
}
// Simple handler for the SpeechRecognized event.
private void sr_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
MessageBox.Show(e.Result.Text);
}
private SpeechRecognizer sr;
}
Теперь из этого кода, когда я говорю красным цветом, я получаю красный цвет в окне сообщения, теперь я хочу управлять двигателями, поэтому мне нужно общаться с моими роботами, поэтому я СДЕЛАНО ОДНОМ КОНСОЛЬНОМ ПРИЛОЖЕНИИ из справки из Интернета ДЛЯ ОТПРАВКИ ДАННЫХ НА МОЙ СЕРВО КОНТРОЛЛЕР SSC 32 КОД ВЫШЕ ЭТО:
using System.IO.Ports;
using System.Threading;
namespace cConsoleAppMonitorServoCompletion
{
class Program
{
static SerialPort _serialPort;
static void Main(string[] args)
{
try
{
_serialPort = new SerialPort();
_serialPort.PortName = "COM3";
_serialPort.Open();
_serialPort.Write("#27 P1600 S750\r");
Console.WriteLine("#27 P1500 S750\r");
string output;
output = "";
//Example: "Q <cr>"
//This will return a "." if the previous move is complete, or a "+" if it is still in progress.
while (!(output == ".")) //loop until you get back a period
{
_serialPort.Write("Q \r");
output = _serialPort.ReadExisting();
Console.WriteLine(output);
Thread.Sleep(10);
}
_serialPort.Close();
}
catch (TimeoutException) { }
}
}
}
Теперь я хочу, чтобы, когда я говорил красным, вместо того, чтобы давать текстовое поле, я хочу получить последовательную команду, например _serialPort.Write("#27 P1600 S750\r");
Пожалуйста, помогите, я пытался, но мне не удалось, это мой скромный запрос, пожалуйста, ответьте более подробно, я только начинающий, поэтому мне будет легко, спасибо заранее.