Обработка данных из com порта - C#
Формулировка задачи:
Неправильно читаются данные из массива (в одном байте игнорируется 0 спереди)
Настройки порта не привожу, чтобы не захламлять код Кусок кодаconst int DataSize = 344; byte[] rez = new byte[DataSize]; // массив для хранения данных длинной 344 байта SerialPort ComPort = new SerialPort(); public void readcomport() { listBox1.Items.Clear(); ComPort.DiscardInBuffer(); ComPort.DiscardOutBuffer(); // цикл считывания побайтно из порта и преобразование в 16-ую систему счисления. for (int i = 0; i< DataSize; i++) { rez[i]= Convert.ToByte(ComPort.ReadByte()); listBox1.Items.Add(i + ". " + Convert.ToString(rez[i], 16)); //выводим данные ListBox } display(); // вызов функции отображение данных из прибора на экран } // Сцепление младшего и старшего байта public string szepka (byte low, byte hi) { prizep = String.Concat(Convert.ToString(low, 16), Convert.ToString(hi, 16)); return prizep; } // Раскидываю данные по ячейкам void display() { ... szepka(rez[225], rez[224]); // 1-1 textBox1.Text = Convert.ToInt32(prizep, 16).ToString(); szepka(rez[227], rez[226]); // 1-2 textBox2.Text = Convert.ToInt32(prizep, 16).ToString(); ... }
listBox1.Items.Add(i + ". " + Convert.ToString(rez[i], 16).PadLeft(2,'0'));
Второй вопрос.
Как правильно округлить десятичное число, например до 4 знаков, но чтобы не пропадали нули, например, число 1.9600. Пробовал так,textBox91.Text = Math.Round(float.Parse(textBox61.Text) / float.Parse(textBox65.Text), 4).ToString();
Решение задачи: «Обработка данных из com порта»
textual
Листинг программы
textBox1.Text = (rez[225] << 8 | rez[224]).ToString(); textBox1.Text = (rez[227] << 8 | rez[226]).ToString();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д