Serial.read question ? solved; but why? ? (n00b)


hi

i set little 2x2 matrix of leds control "row column scanning".
works great far (in fact i'm proud since i'm new electronics , c programming)

as next step want control led sending serial 4 byte string ("1111" turn them on, "0001" turn off last 1 etc)

first read string code:
code: [select]

void getdata() {
 if (serial.available() > 0) {
   while (pointer < 4) {
     buffer[pointer] = serial.read();
     pointer++;
   }
   pointer = 0;
   pxlwrite(buffer[0], buffer[1], buffer[2], buffer[3]);
   serial.print(buffer[0]);
   serial.print(buffer[1]);
   serial.print(buffer[2]);
   serial.println(buffer[3]);
 }
}

wich returned strange results:

1ÿÿÿ
111ÿ


then accidentally added delay (line 5):
code: [select]

void getdata() {
 if (serial.available() > 0) {
   while (pointer < 4) {
     buffer[pointer] = serial.read();
     delay(1); //why necessary?
     pointer++;
   }
   pointer = 0;
   pxlwrite(buffer[0], buffer[1], buffer[2], buffer[3]);
   serial.print(buffer[0]);
   serial.print(buffer[1]);
   serial.print(buffer[2]);
   serial.println(buffer[3]);
 }
}

what made working.
but why?

thanks mana

this problem:
code: [select]
if (serial.available() > 0) {
   while (pointer < 4) {
     buffer[pointer] = serial.read();
     pointer++;
   }

what if "serial.available" returns "1"?
you read single character buffer, , next time call "serial.read" buffer empty, "-1". (the odd ÿ characters)

now, @ 9600 bps, 1 character takes on 1ms transmit.
your delay allows time receive next character before calling "serial.read".

i wouldn't rely on (it won't work if decide reduce line speed), need fix logic of reading available characters.
so, no, not solved, sorry.  ;)


Arduino Forum > Forum 2005-2010 (read only) > Software > Syntax & Programs > Serial.read question ? solved; but why? ? (n00b)


arduino

Comments

Popular posts from this blog

CAN'T INSTALL MAMBELFISH 1.5 FROM DIRECTORY - Joomla! Forum - community, help and support

error: expected initializer before 'void'

CPU load monitoring using GPIO and leds - Raspberry Pi Forums