1

コンピュータの com ポートにシリアル デバイスが接続されています。このデバイスに Hex データを送信したいのですが、デバイスにデータを送信するための最良の方法は何ですか。

たとえば、私はこのデータを持っています-

String hexStr = "02303033434333d3037313131303131323639393130333131303139033f";

私が今していることは-

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

私が直面している問題は - シリアル デバイスが応答していませんか? ソフトウェアを介して同じ16進文字列を送信すると、端末が応答します。私は何か間違ったことをしていますか?

これはコードの一部です-

                    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 DATA --> HEX STRING --> UNSIGNED BYTE です。

4

1 に答える 1

0

flush()書き込み操作の後に出力ストリームが必要になる場合があります。これが役立つかどうか試してください:

byte[] unsignedByte = HexUtil.convertToBytes(hexStr);
serialPort.getOutputStream().write(unsignedByte);
serialPort.getOutputStream().flush();   // <- new line added here
于 2010-08-12T05:47:12.940 に答える