Последовательный порт нет данных получает событие в C # - PullRequest
0 голосов
/ 26 сентября 2019

Я пытаюсь сделать Windows из системы, написанной на C #, которая будет получать данные с другого компьютера на компьютер с приложением, которое я расширяю через последовательный порт.После получения данных система будет отправлять их в веб-приложение при каждом получении полных данных.Теперь у меня нет отметки или знака, чтобы знать, завершены ли отправленные данные, единственное, что я вижу в качестве решения, это то, что если не получено никаких данных, они будут считаться, например, в течение 3 секунд, а затем перейдут к функции отправки.данные в веб-приложение.

Вопрос. Есть ли событие или что-то, что будет знать, если данные не отправляются через последовательный порт?

Я также пытаюсь поставить некоторую задержку, когда он работает на тесте,но когда он находится на рабочем компьютере, он получает его медленно, даже если я долгое время настраиваю задержку, он не работает.

У меня есть это слово [DATA], чтобы узнать, являются ли это действительные данные или нет:

вот пример данных:

[HEADER]
Comment 
View    
H_Number
V_Number

[CONTROL VALUE]
Label   Sn
Target  ******
UCL   15.000
LCL    7.000
Mean UCL    ******
Mean LCL    ******
Range UCL   ******
Range LCL   ******


    [DATA]
    Sn  Batch no.   Date / Shift:   User Name:
       9.408        19-09-20A   JOUIE
       8.711        19-09-20A   JOUIE
       9.820        19-09-20A   JOUIE

это когда-нибудь долго

здесь 'мой код при получении:

 public void DataReceivedHandler_2(object sender, SerialDataReceivedEventArgs e)
        {


            Thread.Sleep(@Config.Delay * 1000);
               SerialPort sp = (SerialPort)sender;



                if (tString == string.Empty)
                {
                    SetText("SPC_CLEAR_TEXT");
                    SetTextProcessed("SPC_CLEAR_TEXT");

                }




                tString = sp.ReadExisting().ToString();


                    if (tString.Contains("[DATA]"))
                    {
                        SetText(tString);

                        FormatRawData(txtRawData.Text);
                        SendToSPC();
                        tString = string.Empty;



                    }


        }

я тоже попробовал этоно не работает

      int bytesRead;

        while (sp.BytesToRead > 0)
        {
            bytesRead = sp.Read(buffer, 0, buffer.Length);
            tString += Encoding.ASCII.GetString(buffer, 0, bytesRead);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...