Проблемы с автоматизацией последовательной замазки соединения - PullRequest
0 голосов
/ 10 марта 2020

Я пытаюсь автоматизировать последовательную связь с контроллером, который в настоящее время обрабатывается 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();

                }
            }
        }
    }
}

Что мне здесь не хватает? Спасибо

...