Как отправить данные на внешнее устройство - PullRequest
1 голос
/ 12 августа 2010

У меня есть последовательное устройство, подключенное к моему компьютеру через com-порт.Я хочу отправить данные Hex на это устройство, как лучше всего отправить данные на устройство.

Например, у меня есть эти данные -

String hexStr = "02303033434333d3037313131303131323639393130333131303139033f";

Что я сейчас делаюis-

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

1 Ответ

0 голосов
/ 12 августа 2010

Возможно, вы захотите flush() выходной поток после операций записи. Попробуйте, если это поможет:

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