2017-03-17 9 views
0

私のアンドロイドデバイスに青い歯の文字を送信できます。
しかし、私の指をスキャンして、finger.fingerIDの値をアンドロイドデバイスに送信した後、
特殊文字のみが送信されました。
値はIntegerで、文字に変換しようとしましたが、まだ何らかのエラーが発生しています。
ここでコードを実行すると、すぐにvoid setup()に戻ります。Bluetoothにfinger.fingerIDを送信

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

「何らかのエラー」とは何ですか? – TisteAndii

答えて

0

toCharバッファーが5文字以上の文字列には小さすぎます。代わりに10バイトを割り当てる必要があります。

toCharArray文字列をヌル文字で終わらせないため、write()がヌル終端文字列を単独で受け入れる場合でも、文字列の末尾からヌルを検索して実行します。 write()は、1文字または文字配列へのポインタの文字数を受け取ります。

あなたはこのすべての面倒を見る必要はありません。単に呼び出す:

BT.print(finger.fingerID); 

を内蔵してPrintクラスのあなたのための変換散らかっを処理します。

関連する問題