c++ - Arduino通过串口打印字符串
问题描述
当我注意到arduino将数据打印到“控制台”时,我正在编码一段时间,它完美地打印它,但是,当我尝试复制它时,只复制了字符串的一部分。就像有看不见的字符。
我无法粘贴输出,因为当我尝试复制它时,它不会完整复制。
我试图做的是从 Mifare 卡获取数据并制作 json 格式以将其打印到控制台以与其他程序通信。一切顺利,直到它打印数据。
Arduino代码
status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_B, block, &key, &(mfrc522.uid));
if (status != MFRC522::STATUS_OK) {
return false;
}
status = mfrc522.MIFARE_Read(block, buffer1, &len);
if (status != MFRC522::STATUS_OK) {
return false;
}
String user;
for (char c : buffer1) {
if (c != '^') {
user += c;
} else break;
}
block = 2;
len = 18;
status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_B, block, &key, &(mfrc522.uid));
if (status != MFRC522::STATUS_OK) {
return false;
}
status = mfrc522.MIFARE_Read(block, buffer1, &len);
if (status != MFRC522::STATUS_OK) {
return false;
}
String unicID;
for (char c : buffer1) {
if (c != '^') {
unicID += c;
} else break;
}
String dataSend = "{\"u\":\"" + String(user) + "\",\"i\":\"" + String(unicID) + "\"}º";
Serial.println (dataSend);
dataSend.replace("\n","");dataSend.replace("\t","");dataSend.replace("\r","");dataSend.replace(" ","");
Serial.println (dataSend);
if (dataSend.length() > 20) {
for (int x = 0; x < ((dataSend.length() / 20) +3); x++) {
Serial.println(String(x*20) + " ---- "+ String((x+1)*20));
Serial.println(String(dataSend.substring(x*20,(x+1)*20)));
delay(100);
}
} else {
Serial.println( dataSend);
}
mfrc522.PICC_HaltA();
mfrc522.PCD_StopCrypto1();
输出应该是每 20 个字符拆分一次:
{"u":"teoDinqtepfhtpefhtpe4b","i":"qwertyuiopasdfgBp"}º
但我得到:
0 ---- 20
{"u":"teoDinqtepfhtp
20 ---- 40
e
40 ---- 60
pasdfg
60 ---- 80
80 ---- 100
就像有神奇的人物或类似的东西。这是一张图片,因为我无法在尝试格式化它以解决问题之后或之前复制第一个完整输出。
解决方案
Mifare 卡有 16 个字节 x 块的限制,您不能在 0、3、6 等受保护的块上写入。错误是我写的是 17 个字节而不是 16 个字节,并且返回的不可见/错误字符可以'不显示
推荐阅读
- python - 如何根据条件将现有数据帧的行推送到新数据帧?
- azure - 如何将 Azure Scaleset 添加到 Log Analytics
- java - 无法解析方法的 SparkSession(),我使用的依赖版本是 2.4.3
- micronaut - 如何让 Micronaut 使用从 Map 到 String 的自定义 TypeConverter?
- c++ - 为什么 'operator<<(cout, double)' 不起作用?
- java - 需要在java中获取linux环境参数值
- audio - 如果我使用不同采样率的音频数据集进行深度学习,会有什么问题吗?
- spring-boot - 在 Infinispan 中将可缓存注释与树缓存一起使用
- javascript - 从函数输入中获取类字段 | Javascript / 打字稿
- apache-spark - 升级版本时 Spark shuffle 磁盘溢出增加