Считывание с серийного порта, по одному байту, не зная длину получаемых байтов - C#

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

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

День добрый. Проблема в том, что мне надо считать номер карты с считывателя, но, я не знаю длинну входящих байтов. Знаю только то что в конце, после прочтения кода приходит 0x0D, протокол -

STX(0x02)+CARD ID+CR(0x0D)

Выручите плз.. Изначально было так:
System.Threading.Thread.Sleep(100);
                int bytes = _serialPort.BytesToRead;
                byte[] read_buf = new byte[bytes];
                _serialPort.Read(read_buf, 0, bytes);
 
                data = System.Text.Encoding.UTF8.GetString(read_buf);
                this.BeginInvoke(new SetTextDeleg(si_DataReceived), new object[] { data });
               
               /* int bytes = _serialPort.BytesToRead;
                byte[] read_buf = new byte[bytes];
                _serialPort.Read(read_buf, 0, bytes);
 
                for (int i = 1; i <= bytes; i++)
                {
                    if (read_buf[i] == CR)
                    {
                        data = System.Text.Encoding.UTF8.GetString(read_buf);
                        this.BeginInvoke(new SetTextDeleg(si_DataReceived), new object[] { data });
                        return;
                    }
                }
А надо чтобы он считывал по одному байту, так долго, пока не получит 0x0D...

Решение задачи: «Считывание с серийного порта, по одному байту, не зная длину получаемых байтов»

textual
Листинг программы
                int nolasit = 0; byte[] read_buf = new byte[1];
                for (int i = 0; i <= nolasit; i++)
                {
                    _serialPort.Read(read_buf, 0, 1);
                    nolasit++;
                   
                    if (read_buf[0] == CR)
                    {
                        data = System.Text.UTF8Encoding.UTF8.GetString(read_buf);
                        this.BeginInvoke(new SetTextDeleg(si_DataReceived), new object[] { data });
                    }
                }

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


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

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

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