Hier ein Beispiel zum Verwenden von memcpy und memcmp ("MemoryCopy" und "MemoryCompare"):
// Beispiel für memcpy und memcmp ("MemoryCopy" und "MemoryCompare")
// Erkannt werden soll, wo 2 mal hintereinander die gleiche Zeichenkette vorhanden ist.
// Beispieldaten: (Index 3 und 6 sind gleich wie der Vorgänger)
byte buffer[][9] = { "ABCDEFGHI", "abcdefghi", "123456789", "123456789", "abcdefghi", "RSTUVWXYZ", "RSTUVWXYZ", "binAmEnde" };
byte prevArray[9];
byte currentArray[9];
void setup() {
Serial.begin(9600);
for (int i = 0; i < 8; i++) {
// Speicher kopieren mit memcpy:
// usage: void * memcpy ( void * destination, const void * source, size_t num );
memcpy (currentArray, buffer[i], 9); // 9 Zeichen kopieren
// Speicher vergleichen mit memcmp
// usage: int memcmp ( const void * ptr1, const void * ptr2, size_t num );
int n = memcmp ( prevArray, currentArray, 9); // 9 Zeichen vergleichen
// Ausgabe zur Kontrolle:
Serial.print(i);
if (n == 0) {
Serial.println(" ist gleich wie das vorige Array");
}
else {
Serial.println(" ist neu");
}
memcpy (prevArray, currentArray, 9); // Speicher kopieren
}
}
void loop() { }
In diesem Beispiel wird zwar nichts von der seriellen Schnittstelle eingelesen (um es einfacher zu halten) - aber das hast du ja schon gelöst.
Weiterführende Links: ![]()
http://www.cplusplus.com/reference/cstring/