wake-up-neo.com

Konvertieren eines Int oder Strings in ein Char Array auf Arduino

Ich bekomme einen int-Wert von einem der analogen Pins an meinem Arduino. Wie verkette ich dies zu einer String und konvertiere dann die String in einen char[]?

Es wurde vorgeschlagen, dass ich char msg[] = myString.getChars(); versuche, aber ich erhalte eine Nachricht, dass getChars nicht vorhanden ist.

70
Chris
  1. Verwenden Sie zum Konvertieren und Anhängen einer Ganzzahl Operator + = (oder die Memberfunktion concat): 

    String stringOne = "A long integer: ";
    stringOne += 123456789;
    
  2. Um den String als Typ char[] zu erhalten, verwenden Sie toCharArray () :

    char charBuf[50];
    stringOne.toCharArray(charBuf, 50) 
    

Im Beispiel ist nur Platz für 49 Zeichen (vorausgesetzt, es wird mit Null beendet). Möglicherweise möchten Sie die Größe dynamisieren.

113
Peter Mortensen

Als Referenz dient hier ein Beispiel, wie zwischen String und char[] mit dynamischer Länge konvertiert wird. 

// Define 
String str = "This is my string"; 

// Length (with one extra character for the null terminator)
int str_len = str.length() + 1; 

// Prepare the character array (the buffer) 
char char_array[str_len];

// Copy it over 
str.toCharArray(char_array, str_len);

Ja, das ist schmerzhaft stumpf für etwas so einfaches wie eine Typumwandlung, aber leider ist dies der einfachste Weg. 

52
Alex King

Sie können es in char * konvertieren, wenn Sie keine modifizierbare Zeichenfolge benötigen, indem Sie Folgendes verwenden:

(char*) yourString.c_str();

Dies wäre sehr nützlich, wenn Sie eine String-Variable über MQTT in Arduino veröffentlichen möchten.

6
Lê Vũ Linh

Nichts davon funktionierte. Hier ist eine viel einfachere Methode. Die Bezeichnung str ist der Zeiger auf was IS ein Array ...

String str = String(yourNumber, DEC); // Obviously .. get your int or byte into the string

str = str + '\r' + '\n'; // Add the required carriage return, optional line feed

byte str_len = str.length();

// Get the length of the whole lot .. C will kindly
// place a null at the end of the string which makes
// it by default an array[].
// The [0] element is the highest digit... so we
// have a separate place counter for the array...

byte arrayPointer = 0;

while (str_len)
{
    // I was outputting the digits to the TX buffer

    if ((UCSR0A & (1<<UDRE0))) // Is the TX buffer empty?
    {
        UDR0 = str[arrayPointer];
        --str_len;
        ++arrayPointer;
    }
}
0
user6776703