2017-03-17 5 views
0

Ich bin in der Lage, einige Zeichen in blue tooth zu meinem Android-Gerät zu senden.
Aber nach dem Scannen meines Fingers und Senden der finger.fingerID Wert an Android-Gerät,
Nur ein Sonderzeichen wurde gesendet.
So kam es mir, dass der Wert Integer ist und versuchte, es in den Charakter zu konvertieren, aber immer noch einen Fehler zu bekommen.
Wenn ich meinen Code hier ausführen, komme ich sofort auf void setup() zurück;Senden finger.fingerID an Bluetooth

int getFingerprintIDez() { 
    uint8_t p = finger.getImage(); 
    if (p != FINGERPRINT_OK) return -1; 

    p = finger.image2Tz(); 
    if (p != FINGERPRINT_OK) return -1; 

    p = finger.fingerFastSearch(); 
    if (p != FINGERPRINT_OK) return -1; 

    // found a match! 


    Serial.print("Found ID #"); Serial.print(finger.fingerID); 
    Serial.print(" with confidence of "); Serial.println(finger.confidence); 


    String toStr; 
    char toChar[2]; 
    toStr=String(finger.fingerID); 
    toStr.toCharArray(toChar, toStr.length()); 
    BTSerial.write(toChar); 
    Serial.print(toChar); 
    return finger.fingerID; 
} 
+0

Was ist "ein Fehler"? – TisteAndii

Antwort

0

Ihr toChar Puffer ist zu klein für eine Zeichenfolge, die möglicherweise fünf Zeichen lang sein könnte. Sie sollten stattdessen 10 Bytes zuweisen, mehr als genug, um ein Ergebnis zu speichern.

toCharArray beendet die Zeichenkette nicht null. Selbst wenn write() nur nullterminierte Zeichenketten akzeptiert (tut es nicht), würde es am Ende der Zeichenkette auf Null ablaufen. write() akzeptiert entweder ein einzelnes Zeichen oder einen Zeiger auf ein char-Array und die Anzahl der Zeichen geschrieben werden.

Sie müssen nicht durch all diesen Ärger gehen; nur rufen:

BT.print(finger.fingerID); 

Und die eingebaute in Print Klasse wird die Umwandlung Unübersichtlichkeit für Sie.

Verwandte Themen