Serial interface date capture and manuipulation, problem!!

Hi All,

I'm new to Adruino and C programming...

I have a project on the go at the moment and I'm using a v3 nano, I have the serial (RX) pin connected to my test bench setup and I'm pulling in the data from the serial port.

Set up as follows.

#define INPUT_PIN 2

void setup() {
//start serial connection
Serial.begin(9600);
Serial.println("Starting Serial");
pinMode(INPUT_PIN , INPUT);
Serial.println("Start int ready");
}

So far so good.

Now on to the main loop.

void loop() {
char incomingByte;
if (Serial.available() > 0) {
incomingByte = Serial.read();
Serial.println(incomingByte, HEX);
}
}

So Far so good, this does indeed read my data from the Serial interface and when I use the Monitor I get this.

FFFFFFF0
4
68
48
FFFFFF80
54

Perfect, however, all of the above data is serial injected onto the port at location incomingByte[0] (if you get what I mean).

So, if I did not use "Serial.println" I would get 1 long stream of data on the monitor, not so good.

What I want to be able to do is read the data in as packet like so

FFFFFFF0 4 68 48 FFFFFF80 54

The problem that I have is that the data stream could be any size from 5 to 24 bytes long, so making a statement to read only the required amount is proving difficult.

Luckily the 2nd byte is in fact the packet length, but reading this in as a sequence can sometimes get blank entries (FFFFFFFF) in between the valid packets, so tying down the 2nd byte is not proving reliable.

So this (below) does not give a reliable result!!

void loop() {
char incomingByte;
char sequenceBytes[4];
if (Serial.available() > 0) {
incomingByte = Serial.read();
// Serial.println(incomingByte, HEX);
if (Serial.available() > 0) {
sequenceBytes[0] = Serial.read();
}
if (Serial.available() > 0) {
sequenceBytes[1] = Serial.read();
}
if (Serial.available() > 0) {
sequenceBytes[2] = Serial.read();
}
if (Serial.available() > 0) {
sequenceBytes[3] = Serial.read();
}
if (Serial.available() > 0) {
sequenceBytes[4] = Serial.read();
}
}
}

Can anyone think of a way to push the values into an array (of the right size) so that I can then read it and then manipulate it, the way I want.

Sorry if this sounds vague, I know it is, but I'm stuck

John

Never mind, fixed