Serial.peek is always returning 255 for me. As the calls are bounded with if Serial.available(), there is data available..... Also, I am sending the character 'h', so the 104 is correct.
@OrangeOctober, the problem is not with Serial.peek() but with the definition of “char” in the firmware. In Arduino land, “char” is really a signed byte value but in Spark Core land, it is defined as an unsigned byte.
So, if you use “int8_t” instead of “char”, you will see that the returned value of 255 (unsigned) is really -1 (signed). Serial.peek() will return -1 when nothing is available in the Serial buffer.
@peekay123 that -1 here == 255 is clear to me. He problem is that bytes are available - notice the guard check for .available - and peek returns the wrong thing. Read returns the correct character which is available.
@OrangeOctober, you are correct! Looking at the Serial code in the main firmware repo, I see that peek() ONLY returns -1 whereas for Serial1 and Serial2, it will return what is expected.
@zachary, any reason for peek() not being implemented in USBSerial?
Nope, that should absolutely be fixed. Thanks for the heads up @OrangeOctober & @peekay123! I just added it as a new issue here:
Pull requests are of course welcome — seems simple and small, but as you might expect we’re extremely focused on the Photon right now. I’ve got a community status update partially drafted that I’ll be posting soon. Cheers!