如何通过RFID读取器将序列号打印在RFID标签上?
我有:
-
Arduino uno,
-
RMD 6300阅读器,和
-
RFID标签(125Khz) .
我使用以下代码:
#include <SoftwareSerial.h>
SoftwareSerial RFID(2, 3); // RX and TX
int i;
void setup()
{
RFID.begin(9600); // start serial to RFID reader
Serial.begin(9600); // start serial to PC
}
void loop()
{
if (RFID.available() > 0)
{
i = RFID.read();
Serial.print(i, DEC);
Serial.print(" ");
}
}
我得到这个值:
2 48 57 48 48 50 69 52 69 65 50 67 66 3
但RFID标签上印有以下值:
0003034786
我想要这个号码,但我不知道如何转换它 .
1 回答
您当前获得的值是编码为US-ASCII字符串的序列号 . 十进制值(当前打印时)是
将这些字节转换为十六进制形式(为了更好的可读性)导致:
在US-ASCII中编码这些字节会导致此字符串:
请注意,您也可以使用直接在控制台上接收此表单
而不是
Serial.print(i, DEC);
因此,您的阅读器通过发送传输开始(STX)字符(0x02)开始输出序列号,并结束发送带有传输结束(ETX)字符的序列号 . 介于两者之间的是序列号(表示为十六进制字符):
打印在密钥(0003034786)上的序列号只是完整序列号的一小部分 . 该值是十进制表示 . 如果你转换
你得到它的十六进制表示
此值包含在您从阅读器收到的序列号中:
因此,您可以执行以下操作来打印值(如果需要前导零,请使用
sprintf()
):