Считывание с серийного порта, по одному байту, не зная длину получаемых байтов - C#
Формулировка задачи:
День добрый. Проблема в том, что мне надо считать номер карты с считывателя, но, я не знаю длинну входящих байтов. Знаю только то что в конце, после прочтения кода приходит 0x0D, протокол - А надо чтобы он считывал по одному байту, так долго, пока не получит 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; } }
Решение задачи: «Считывание с серийного порта, по одному байту, не зная длину получаемых байтов»
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 }); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д