Считывание с серийного порта, по одному байту, не зная длину получаемых байтов - 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 });
}
}