Я пытаюсь автоматизировать последовательную связь с контроллером, который в настоящее время обрабатывается Putty. При соединении с замазкой отображается меню опций: с. вариант 1 q. Вариант 2 ... набрав, например, + [enter], опция 1 выполнена
Я смог реализовать это в C#, вызвав процесс plink до тех пор, пока не прочитал меню, но ключи отправки не кажутся работать! Я пробовал различные комбинации безуспешно, например, для варианта p, я пробовал p, p \ n, p \ r \ n. Во всех случаях я получаю «», когда делаю myStreamReader.ReadLine (); потом.
using System.Threading;
using System.IO;
using System.Diagnostics;
using System.ComponentModel;
namespace ProcessStandardInputSample
{
class StandardInputTest
{
static void Main()
{
using (Process myProcess = new Process())
{
String pArgs = "-serial COM16 \n -sercfg 9600,8,n,1,R";
myProcess.StartInfo.FileName = "plink.exe";
//process settings
myProcess.StartInfo.UseShellExecute = false;
myProcess.StartInfo.RedirectStandardInput = true;
myProcess.StartInfo.RedirectStandardOutput = true;
myProcess.StartInfo.Arguments = pArgs;
myProcess.Start();
StreamWriter myStreamWriter = myProcess.StandardInput;
StreamReader myStreamReader = myProcess.StandardOutput;
String inputText = "\n";
String outputText = null;
String readOneLine = null;
String readMultiLines = null;
Thread.Sleep(2000);
readOneLine = myStreamReader.ReadLine();
if (readOneLine.Contains("RF Test"))
{
Console.WriteLine("Connected to FW");
Thread.Sleep(2000);
for (int i = 0; i < 18; i++)
{
readMultiLines += myStreamReader.ReadLine();
}
readMultiLines = readMultiLines.Replace("\0", "");
Console.Write(readMultiLines);
myStreamWriter.WriteLine("p");
Thread.Sleep(2000);
readOneLine = myStreamReader.ReadLine();
myStreamWriter.WriteLine("p\r\n");
Thread.Sleep(2000);
readOneLine = myStreamReader.ReadLine();
myStreamWriter.WriteLine("p\n");
Thread.Sleep(2000);
readOneLine = myStreamReader.ReadLine();
}
}
}
}
}
Что мне здесь не хватает? Спасибо