2017-03-17 72 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类将为您处理转换混乱。