2017-03-17 158 views
0

我能夠發送一些藍牙字符到我的android設備。
但掃描我的手指併發送到Android設備的finger.fingerID值,
只發送了一個特殊字符。
所以它的價值是整數,並試圖將其轉換爲字符,但仍然有一些錯誤。
當我在這裏運行我的代碼時,我立即回到void setup();發送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()接受單個字符或指向字​​符數組的指針要寫入的字符數。

你不需要經歷所有這些麻煩;只需撥打:

BT.print(finger.fingerID); 

而內置的Print類將爲您處理轉換混亂。