int ale;
int chan;
if (buffer[0] == 0x07 && buffer[3] == 0x0D)
{
ale = buffer[5];
chan = (ale + 0x30);
lcd.setCursor(9,1);
lcd.write(chan);
}
Yes, it works up to 9 as you stated.
What this code does is point to offsets in an array named buffer that is filled from a loop that pulls from the serial read when the radio transmits a data packet to the Arduino. I flag for start of line 0x24 and know the max packet length will not exceed 34 bytes. When this certain data packet with that 07 and 0D in those spaces is seen I know it's what is called an ALE scan packet. Each time the radio changes to the next channel that data at offset [5] in the buffer is the only thing that changes. It increments from 0x00 to 0xC8 to represent the channel 0 through 200 that it's on. I am wanting to zero in on just that data and display it on that spot on the LCD.
When I exit that mode (say I go to free tuning mode) the op codes and other data in the incoming data packets change and this IF statement is no longer valid. Another similar IF statement below flags for their corresponding "identificatin", for lack of better term, bytes then it processes and displays interesting data from those packets, etc... and so forth. It's all working and all other packets are already formatted as ASCII but for whatever reason that one above ( the ALE scan) I initially mentioned is presenting the channel data as raw hex.
I hope that makes a bit more sense.