如何将数据发送到外部设备

时间:2010-08-12 04:18:09

标签: java serial-port hexdump

我在com端口连接了一台串口设备。我想将Hex数据发送到此设备,将数据发送到设备的最佳方法是什么。

例如我有这个数据 -

String hexStr = "02303033434333d3037313131303131323639393130333131303139033f";

我现在正在做的是 -

     byte[] unsignedByte = HexUtil.convertToBytes(hexStr);
serialPort.getOutputStream().write(unsignedByte);

我面临的问题是 - 串口设备没有响应? 当我通过软件发送相同的十六进制字符串时,终端正在响应。我做错了吗?

这是代码的一部分 -

                    mOutputToPort.write(unsignedByte);          
        logger.info("Byte Sent");
        mOutputToPort.flush();
        logger.info("Waiting for response");
        Thread.sleep(10000);
        byte mBytesIn [] = new byte[2000];          
        int num = mInputFromPort.read(mBytesIn);
        System.out.println("Number of bytes read -"+ num);

        for(byte b : mBytesIn){
            System.out.print(b);
            System.out.print(" ");
        }
        System.out.println();       
嗨,大家好,我终于找到了自己如何正确地做到这一点。 我没有以正确的格式发送数据。当我使用其他软件监控串行数据交换时,我发现了。

将数据发送到串行设备的最佳方式是 - ASCII数据 - > HEX STRING - > UNSIGNED BYTE

1 个答案:

答案 0 :(得分:0)

写操作后,您可能希望flush()输出流。试试这是否有帮助:

byte[] unsignedByte = HexUtil.convertToBytes(hexStr);
serialPort.getOutputStream().write(unsignedByte);
serialPort.getOutputStream().flush();   // <- new line added here