C# парсинг ответа от другого устройства - PullRequest
0 голосов
/ 28 апреля 2020

Я пишу тестовое программное обеспечение, которое отправляет команды на устройство и получает ответ через com-порт. когда программное обеспечение получает ответ от устройства, я хотел бы проанализировать ответ и записать его в электронную таблицу svn. Во-первых, у меня возникают проблемы с анализом данных и получением только полученных цифр c. Код циклически перебирает массив команд и имеет отдельную функцию для получения данных, и теперь я хотел бы получить определенные c цифры c данные из этого. Я пытаюсь разобрать, но это не работает. Вот мой блок кода, любая помощь будет оценена. Я новичок в программировании, так что это был трудный момент для меня.

static string Test(string myComPort)
            {
                const int buffSize = 2048;
                byte[] buf = new byte[buffSize];
                Console.WriteLine(myComPort);
                SerialPort mySerialPort = new SerialPort(myComPort, 115200);

                string myStatus = OK_Status;
                string[] Commands = new string[] { "command1", "command2", "command3", "command4" };


                mySerialPort.Open();
                mySerialPort.DataReceived += port_OnReceiveData;
                mySerialPort.DtrEnable = true;
                mySerialPort.RtsEnable = true;
                Thread.Sleep(1000);
                for (int c = 0; c < Commands.Length; c++)
                {
                    string s = Commands[c];

                    mySerialPort.Write(s);
                    Thread.Sleep(1000);


                    if (!line.Contains("OK"))
                    {

                        Console.WriteLine("\n\n\n Test Failed: " + Test_Names[c]);
                        mySerialPort.Write("Command");
                        mySerialPort.Close();
                        Thread.Sleep(500);
                        return "Test Failed: " + Test_Names[c];
                    }

                }
                mySerialPort.Write("Command");
                Console.WriteLine("\n\n shutting down");
                Thread.Sleep(2000);
                mySerialPort.Close();
                Thread.Sleep(500);
                return myStatus;
            }
            private static void port_OnReceiveData(object sender, SerialDataReceivedEventArgs e)
            {
                SerialPort spL = (SerialPort)sender;
                const int buffSize = 12;
                byte[] buf = new byte[buffSize];
                line = spL.ReadExisting();
                int num = -1;
                if (int.TryParse(line, out num))
                {

                    Console.WriteLine(num);
                    Console.ReadKey();
                }

                Console.WriteLine(line);

            }
...