Yes, those FF's and not supposed to be there... it is supposed to count up. It does not work without the Delays and you need longer delays at slower baudrates. I am not sure why, but I guess if (!Serial.available()) {} is not correct unless you delay after a Serial.read(). As I said "At 4800 it needs delay(3)" and it works that way for sending my test count-up file with correct 153 bytes everytime. I now have it working with boblight+getpixel too, kinda... the colors are off, but it does change in response to screen color. Also, it is delayed so a single color-change fades in over 5 seconds, blinking once a second.
Can someone please explain to me how boblight (1.3b for windows) is sending it's packet structure? I thought it was <0x00> <0x00> <1:r> <1:g> <1:b> <2:r> ... Is the packet format different then that?
I am also looking in to just writing my own windows program that uses CreateDIBSection to read the screen pixels and sends out the serial bytes to the Arduino.
EDIT: But I still don't understand how I can send a single 153-byte packet at 115200 and receive them all correctly. Why does it drop all those bytes, skipping, and then replacing the missing end bytes with FF?