我目前正在开发一个与Android,Firebase和Arduino的项目,我想将UID从FireBase项目发送到我的arduino(注册新用户后(,以便我可以使用MFRC522将其写入MIFARE标签。我正在使用USB OTG电缆执行此操作。为了将 UID 字符串发送到 arduino,我正在使用这个 [UsbSerial Library][1,我在这个博客文章中找到了它:
https://www.allaboutcircuits.com/projects/communicate-with-your-arduino-through-android/
与Arduino连接正在工作,从应用程序发送UID时,它显示为我刚刚发送的UID字符串。但是,当我阅读标签时,它显示如下字符串:
⸮J⸮⸮⸮-⸮Zz⸮⸮Z/m⸮( h⸮1=#⸮⸮⸮=?⸮
当我手动将 UID 字符串写入串行监视器时,它似乎工作正常,因为当我读取标签时,它向我显示了正确的 UID 字符串,例如:
IaxeEXNUpRUhqfbyW78LtyoRbQw1
它们的大小相同。 所以在Arduino中执行以下代码时出错:
byte buffer[28];
if(Serial.available()>0)
{
Serial.readBytes(buffer, 28); //UID is 28 bits long
}
在Android中,我通过这样做来发送字符串:
public void SendUID(String s){
byte[] bytesOut = s.getBytes();
serialPort.write(bytesOut );
tvAppend(textView, "nData Sent : " + uid + "n");
}
有人熟悉这个问题吗?
谢谢。
PS:这是我的第一篇文章,如果我不够清楚,很抱歉
使用 64 字节缓冲区。 检查从安卓发送和在Arduino上接收的波特率是否相同。