gpt4 book ai didi

Java串口读取如何删除?

转载 作者:行者123 更新时间:2023-12-01 17:49:59 27 4
gpt4 key购买 nike

我正在使用 RFID 读取器 ID-12LA 和 Java RxTx 库。

正在从读取器加载数据,但数据:“\u000267009CB3541C”

如何删除\u0002?卡 ID 为 67009CB3541CSystem.out.print 是 67009CB3541C

        BufferedReader input = new BufferedReader(new InputStreamReader(port.getInputStream()));
port.addEventListener(event -> {
if (event.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
try {
String inputLine = input.readLine();
inputLine.replace("\"\\u0002\"", "");

System.out.println("Read data: " + inputLine);
}
catch (IOException | URISyntaxException e) {
System.err.println(e.toString());

}

});

我需要获取一个代表卡代码的字符串。我需要一个卡号读取器,然后允许访问。

最佳答案

我不知道该 RFID 读取器使用的协议(protocol),但看起来使用 java.io.Reader 并不安全。如果将原始字节读入字符串,则在使用字符集编码时可能会损坏数据。

设备似乎发回了一个响应字节(在本例中为 02),后跟代表卡 ID 的 ASCII 字节。所以,避免使用InputStreamReader;相反,读取第一个字节,然后读取字节直到遇到换行符并将它们转换为字符串。 (请勿在转换时省略字符集 - 您不想依赖系统的默认字符集!)

InputStream input = port.getInputStream();

int code = input.read();
if (code != 2) {
throw new IOException("Reader did not return expected code 2.");
}

ByteArrayOutputStream idBuffer = new ByteArrayOutputStream();
int b;
while ((b = input.read()) >= 0 && b != '\r' && b != '\n') {
idBuffer.write(b);
}

String cardID = idBuffer.toString(StandardCharsets.UTF_8);

关于Java串口读取如何删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60815762/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com