我开发了一个从Arduino读取RFID标签的个人项目。当我读到第一个标签时;我收到总字节数,并正确处理信息。但是在阅读以下时间; …
由于这是在接收到的数据中,您需要将传入的字节存储在缓冲区中,直到您已经足够读取。
将缓冲区作为全局/实例变量分开,
private string _tagBuffer;
然后在你的方法
if (port.IsOpen) { byte[] data = new byte[1024]; int bytesRead = port.Read(data, 0, data.Length); _tagBuffer += Encoding.ASCII.GetString(data, 0, bytesRead); if (_tagBuffer.Length >= 8) { idTag = tagBuffer.substring(0, 8); tagBuffer = tagBuffer.substring(8); // might be 9 OnTagReceived(); } }
可以更好地将标记放在发送给事件的参数中,而不是将它们放入 idTag 。
idTag