.NET 4.x Информация с COM порта принимается, нужно передать в массив сортировать и сделать уникальными строки - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день. Осуществляю приём информации с устройства на виртуальный COM-порт.
string InputData = null;
delegate void SetTextCallback(string text);
 
public Form1()
{
  InitializeComponent();
}
 
private void SetText(string text)
{
     if (this.richTextBox1.InvokeRequired)
        {
          SetTextCallback d = new SetTextCallback(SetText);
          this.richTextBox1.BeginInvoke(d, new object[] { text });
        }
     else
        {
         this.AddData(text);
        }
}

private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
 
            Thread.Sleep(300);
 
            byte[] data = new byte[port.BytesToRead];
            port.Read(data, 0, data.Length);
            InputData = Encoding.UTF8.GetString(data);
            
            if (InputData != String.Empty)
                {
                    SetText(InputData);
                }
            
        }
 
private void AddData(string text)
        {
            richTextBox1.AppendText(text);
        }
в RitchTextBox1 появляется текст вида(отсортировал сейчас, сам для понимания чтобы, принимаются в произвольном порядке строки в разнобой строки)
20F 8 75 3
20F 8 75 30 27 10 40 00 3D 55 
20F 8 75 30 27 10 40 00 3E 54 
20F 8 75 30 27 10 40 00 3E 64 
20F 8 75 30 27 10 40 00 3E 95 
20F 8 75 30 27 10 40 00 3E 9E 
 
211 8 F
211 8 FF FE 80 00 48 48 00
211 8 FF FE 80 00 48 48 00 54 
211 8 FF FE 80 00 48 48 00 55 
211 8 FF FE 80 00 48 48 00 9E 
 
20F 8 75 3
20F 8 75 30 27 10 40 00 3D 55 
20F 8 75 30 27 10 40 00 3E 54 
20F 8 75 30 27 10 40 00 3E 64 
20F 8 75 30 27 10 40 00 3E 95 
20F 8 75 30 27 10 40 00 3E 9E
 
4B0 8 27 10 27 10 27 10 
4B0 8 27 10 27 10 27 10 27 10 
 
4DA 8 80 00 C0 00 00 00 00 00 
4DA 8 80 00 C0 00 00 00 00 00 
4DA 8 80 00 C0 00 00 00 00 00 
4DA 8 80 00 C0 00 00 00 00 00 
4DA 8 80 00 C0 00 00 00 00 00 
4DA 8 80 00 C0 00 00 00 00 00
Это то что сделал и работает. Теперь вопрос. 1. Нужно отсортировать 2. Удалить одинаковые строки 3. Вывести подготовленные сортированные строки и уже уникальные строки(без повторов одинаковых строк) Решение вижу такое, поместить принятые строки в массив, в цикле произвести сортировку и сравнение строк. Вот написал код ниже, чувствую решение очень близко, но никак не могу поймать идею в коде. Подскажите пожалуйста ?
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
       {
 
         Thread.Sleep(300);
         
         byte[] data = new byte[port.BytesToRead];
         port.Read(data, 0, data.Length);
         string[] content = new string[InputData.Length];
         for (int i = 0; i < InputData.Length; ++i) 
           {
                 // вот тут честно говоря затрудняюсь, 
                 // как сортировать и сравнить, далее подготовить переменную string для вывода в RichTextBox                       
 
                }
 
       }

Решение задачи: «.NET 4.x Информация с COM порта принимается, нужно передать в массив сортировать и сделать уникальными строки»

textual
Листинг программы
port.NewLine = Environment.NewLine;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.933 из 5
Похожие ответы