Arduino / C: Umwandeln byte-array in string oder andere vergleichbare text-format

Bin ich über einige Bibliotheken von Drittanbietern für einige Drittanbieter-hardware. Die Bibliotheken, die Kommunikation mit der hardware über eine serielle Verbindung. Mit den Bibliotheken, die ich senden von Daten über die serielle Schnittstelle auf die hardware und bekommen eine Antwort, die ist gespeichert in einem array:

//This is the byte array declared in the third party libraries
//that stores data sent back from the external hardware
byte comm_buf[201];

/* I send data to hardware, comm_buf gets filled */

//Printing out the received data via a second serial line to which
//I have a serial monitor to see the data

for (int i = 0; i <= 50; i++) {
  Serial.print(gsm.comm_buf[i]);
}    

//This is printed via the second monitoring serial connection (without spaces)
13 10 43 67 82 69 71 58 32 48 44 51 13 10 13 10 79 75 13 10 00

//It is the decimal ascii codes for the following text
+CREG: 0,3 

Wie kann ich umwandeln byte-array in ein format, dass ich evalute im code, so kann ich einen Vorgang ausführen, wie der folgende pseudo-code;

byte comm_buf[201];

/* I send data to hardware, comm_buf gets filled */

if (comm_buf[] == "CREG: 0,3" ) {
  //do stuff here
}

Muss ich es in einen string konvertieren, wie einige, oder vergleichen zu anderen char-array vielleicht?

Sind Sie auf der Suche nach strcmp(com_buffer, "CREG: 0,3")?
if (strcmp(gsm.comm_buf,"\r\n+CREG: 0,3\r\n\r\nOK\n")) { gibt den Fehler invalid conversion from 'byte*' to 'const char*'
Ja, und können Sie beheben den Fehler durch googeln der Fehlermeldung 😉
strcmp((const char *)comm_buf, "foobar")
Es hat etwas mit Effizienz zu tun. Die Typisierung der Betrieb ist, in diesem (einfachsten) Fall, tut nichts in den code - es ist nur Narren der compiler. Der Grund: strcmp() erwartet zwei Argumente vom Typ const char *, aber das array ist vom Typ byte[] die Zerfälle in byte * wenn die an die Funktion übergeben - und zwei Zeiger, von denen der Basis-Typ ist anders (const char * und byte * in deinem Fall) sind inkompatible Typen.

InformationsquelleAutor jwbensley | 2013-08-01

Schreibe einen Kommentar