N
N
NosefU2015-01-05 02:08:39
Arduino
NosefU, 2015-01-05 02:08:39

Why are bytes sent via com to arduino missing?

There was a problem: when sending data to arduino, 1-2 bytes of information periodically disappear. For verification, I sent the same line several times. As you can see below, the correct result was obtained only once. Debug output and code attached. Am I such a krivoruk, or cant in something else?
Problematic section of code

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++;                                               //накидываем счетчик пикселей, чтоб не топтаться на месте
        
        
        }

   }

}

Debug output in port monitor (sending the same string all the time: 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

Answer the question

In order to leave comments, you need to log in

1 answer(s)
A
Armenian Radio, 2015-01-05
@gbg

The code is terribly crooked. It is necessary to change the architecture - not to wind cycles in vain while waiting for a byte, but to respond only to an interrupt.
Well, look at the sender code, maybe there is no check for an error when sending.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question