使用pi4j从Serial显示十六进制

时间:2015-02-12 17:34:52

标签: java serial-port hex raspberry-pi

我正在使用树莓派与RFID阅读器进行通信,我使用PI4J库接收字符串数据,但阅读器输出十六进制。到目前为止,我已使用以下方法将字符串数据转换为十六进制格式:

import org.apache.commons.codec.binary.Hex;

将十六进制分成两组我用过的组:

java.util.Arrays.toString

所以整个代码:

        // create and register the serial data listener
    serial.addListener(new SerialDataListener() {
        @Override
        public void dataReceived(SerialDataEvent event) {


            String str = event.getData(); //create string of data received
            //change string to hex representation && split into groups of two
            System.out.println(java.util.Arrays.toString(Hex.encodeHexString(str.getBytes()).split("(?<=\\G..)")));
        }            
    });

我目前正在使用运行高级串行端口终端的旧电脑向Rasberry pi发送命令,模拟将从RFID阅读器接收的内容。我发送给pi并希望显示的代码是

  

'A0 03 82 00 DB'

但是pi显示

  

'[c2,a0,03,c2,82,00,c3,9b]'

大多数数据都存在,但是分裂/缺少一些十六进制。 我将收到另一个代码示例:

  

'e0 10 82 00 01 00 00 00 02 04 09 02 64 12 34 57 e9 92'

显示为:

  

[c3,a0,10,c2,82,00,01,00,00,00,02,04,09,02,64,12,34,57,c3,a9,c2,92]

这次丢失了第一个字节(e0),但收到了最后一个字节(92)。有人会对发生的事情有任何建议吗?或者如何解决这个问题?

提前致谢!

0 个答案:

没有答案