BackBraceBoy:
Can someone please help?
using a delimiter is key...
example message to input to serial monitor (using NewLine when you enter the string):
32;45;-63;89
const size_t MAX_MESSAGE_LENGTH = 32;
int var[4];
void setup()
{
Serial.begin(9600);
Serial.println("let's go!");
}
void loop()
{
if(const char* newMessage = checkForNewMessage(Serial, '\n'))
{
Serial.println(newMessage);
if (strlen(newMessage) == 0)
Serial.println("*");
char mssg[strlen(newMessage+1)];
strcpy(mssg, newMessage);
var[0] = atoi(strtok(mssg, ";"));
var[1] = atoi(strtok(NULL, ";"));
var[2] = atoi(strtok(NULL, ";"));
var[3] = atoi(strtok(NULL, ";"));
for (int i = 0; i < 4; i++)
{
Serial.println(var[i]);
}
}
}
const char* checkForNewMessage(Stream& stream, const char endMarker)
{
static char incomingMessage[MAX_MESSAGE_LENGTH] = "";
static byte idx = 0;
if(stream.available())
{
incomingMessage[idx] = stream.read();
if(incomingMessage[idx] == endMarker)
{
incomingMessage[idx] = '\0';
idx = 0;
return incomingMessage;
}
else
{
idx++;
if(idx > MAX_MESSAGE_LENGTH - 1)
{
//stream.print(F("{\"error\":\"message too long\"}\n")); //you can send an error to sender here
idx = 0;
incomingMessage[idx] = '\0';
}
}
}
return NULL;
}