int numData = 64;
boolean newData = false;
char dataReceived[64];
char tempData[64];
long number1 = 0;
char calSignal;
long number2 = 0;
long result;
void setup() {
Serial.begin(9600);
}
void loop() {
recvWithEndMarker();
if (newData = true) {
strcpy(tempData, dataReceived);
parseData();
doMaths();
showResults();
newData = false;
}
}
void recvWithEndMarker() {
//Made by Robin2
static byte ndx = 0;
char endMarker = '\n';
char rc;
while (Serial.available() > 0 && newData == false) {
rc = Serial.read();
if (rc != endMarker) {
dataReceived[ndx] = rc;
ndx++;
if (ndx >= numData) {
ndx = numData - 1;
}
}
else {
dataReceived[ndx] = '\0'; // terminate the string
ndx = 0;
newData = true;
}
}
}
void parseData() {
char * strtokIndex;
strtokIndex = strtok(tempData, " ");
number1 = atol(strtokIndex);
strtokIndex = strtok(NULL, " ");
strcpy(calSignal, strtokIndex);
strtokIndex = strtok(NULL, " ");
number2 = atol(strtokIndex);
}
void doMaths() {
if (calSignal == '+') {
result = number1 + number2;
}
if (calSignal == '-') {
result = number1 - number2;
}
if (calSignal == '*') {
result = number1 * number2;
}
if (calSignal == '/') {
result = number1 / number2;
}
}
void showResults() {
Serial.print("Result is = ");
Serial.println(result);
}
Yeah... it didn't work. It keeps printing result = 0 over and over. I am pretty tired now