Возникла проблема: при пересылке данных на ардуино периодически пропадают 1-2 байта информации. Для проверки отправлял несколько раз одну и ту же строку. Как можно видеть ниже, верный результат получился лишь единожды. Отладочный вывод и код прилагаю. Это я такой криворук, или косяк в чем-то другом?
Проблемный участок кода
char inpbyte,rowbyte1, rowbyte2;
int row = 0;
int x = 0;
while (true) {
if (Serial.available() > 0)
{
inpbyte = Serial.read(); //читаем байт из буфера
if (inpbyte == 'Z') { // проверка на признак новой строки битмапа
TV.clear_screen();
Serial.println("--------------------");
Serial.println("New string "); //плюемся в монитор порта отладочной строкой
rowbyte1= Serial.read(); //читаем первый hex-символ номера строки
rowbyte2= Serial.read(); //читаем второй hex-символ номера строки
row = ReadHexByte(rowbyte1,rowbyte2); //преобразовываем символы в номер строки
Serial.println(rowbyte1); //плюемся в монитор порта отладочной строкой
Serial.println(rowbyte2); //плюемся в монитор порта отладочной строкой
Serial.write("Row "); //плюемся в монитор порта отладочной строкой
Serial.println(row,HEX); //плюемся в монитор порта отладочной строкой с номером строки
TV.print(10,10,row); //выводим номер строки на тв. чтоб наверняка
x=0; //сбрасываем счетчик пикселей в строке
}
else { //если конца строки не предвидится,
TV.set_pixel(x,row, inpbyte-'0'); //то выводим пиксель соответствующего цвета (0 или 1)
x++; //накидываем счетчик пикселей, чтоб не топтаться на месте
}
}
}
Отладочный вывод в мониторе порта (всё время отправлял одну и ту же строку:
Z0123)
--------------------
New string
0
3
Row 3
--------------------
New string
0
3
Row 3
--------------------
New string
0
2
Row 2
--------------------
New string
0
1
Row 1
--------------------
New string
0
3
Row 3