Skip to content

Instantly share code, notes, and snippets.

@mpflaga
Last active August 29, 2015 14:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mpflaga/634212e440b81d2311b9 to your computer and use it in GitHub Desktop.
Save mpflaga/634212e440b81d2311b9 to your computer and use it in GitHub Desktop.
Example of looking for specific text from serial input stream
char buffer[5];
#define buffer_size sizeof(buffer)/sizeof(buffer[0])
int8_t buffer_pos = 0;
void setup() {
//Initialize serial and wait for port to open:
Serial.begin(115200);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
Serial.println("Serial to mySerial demo started");
Serial.print("buffer_size = "); Serial.print(buffer_size); Serial.println("");
buffer_pos = 0;
}
void loop() {
char inByte;
while (Serial.available()) {
inByte = Serial.read();
Serial.print("inByte = "); Serial.print(inByte); Serial.println("");
Serial.print("buffer_pos = "); Serial.print(buffer_pos); Serial.println("");
while (buffer_pos >= buffer_size) {
for (int8_t i = 0; i < buffer_size - 1; i++) { // rotate buffer left if at end of buffer
buffer[i] = buffer[i + 1];
}
buffer_pos--;
}
buffer[buffer_pos++] = inByte;
Serial.print("buffer = ");
for (int8_t i = 0; i < buffer_size; i++) {
Serial.print(buffer[i]);
}
Serial.println("");
if (strcasestr(buffer, "abc")) {
Serial.println("BINGO");
} else {
Serial.println("No Joy");
}
}
}
@mpflaga
Copy link
Author

mpflaga commented Aug 31, 2014

Here is example out. Note that inByte is the character sent from a serial stream. The trigger text was ABC either upper or lower case.

Serial to mySerial demo started
buffer_size = 5
inByte = 1
buffer_pos = 0
buffer = 1
No Joy
inByte = a
buffer_pos = 1
buffer = 1a
No Joy
inByte = b
buffer_pos = 2
buffer = 1ab
No Joy
inByte = c
buffer_pos = 3
buffer = 1abc
BINGO
inByte = d
buffer_pos = 4
buffer = 1abcd
BINGO
inByte = e
buffer_pos = 5
buffer = abcde
BINGO
inByte = f
buffer_pos = 5
buffer = bcdef
No Joy
inByte = 1
buffer_pos = 5
buffer = cdef1
No Joy
inByte = 2
buffer_pos = 5
buffer = def12
No Joy
inByte = 3
buffer_pos = 5
buffer = ef123
No Joy
inByte = a
buffer_pos = 5
buffer = f123a
No Joy
inByte = b
buffer_pos = 5
buffer = 123ab
No Joy
inByte = c
buffer_pos = 5
buffer = 23abc
BINGO
inByte = 1
buffer_pos = 5
buffer = 3abc1
BINGO
inByte = 2
buffer_pos = 5
buffer = abc12
BINGO
inByte = 3
buffer_pos = 5
buffer = bc123
No Joy
inByte = A
buffer_pos = 5
buffer = c123A
No Joy
inByte = B
buffer_pos = 5
buffer = 123AB
No Joy
inByte = C
buffer_pos = 5
buffer = 23ABC
BINGO
inByte = 1
buffer_pos = 5
buffer = 3ABC1
BINGO
inByte = 2
buffer_pos = 5
buffer = ABC12
BINGO
inByte = 3
buffer_pos = 5
buffer = BC123
No Joy

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment