0

このJavaプログラムを使用してArduinoボードと通信しています。ただし、シリアルデータの読み取りとArduinoへの書き込みに問題があります。

現在、次のようになっています。

public synchronized void serialEvent(SerialPortEvent oEvent) {
    if (oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
        try {
            int available = input.available();
            byte chunk[] = new byte[available];
            input.read(chunk, 0, available);

            String display = new String(chunk);
            System.out.print(display);  

            if(display.equals("Request"))  // Having problems with this line. not entering the loop even though I received the String "Request"
            {
                String reply = "Reply";
                byte reply_byte[] = new byte[reply.length()];
                reply_byte = reply.getBytes("UTF-16LE");
                output.write(reply_byte);
            }

        } catch (Exception e) {
            System.err.println(e.toString());
        }
    }

入力を文字列として読み取り、文字列の応答をbyte[]に変換して応答しています。ただし、これは機能していないようです。誰かがこれを行うためのより良い方法を教えてもらえますか?たぶん、byte []をStringに変換して、それを解釈しようとしないでください。

4

1 に答える 1

1

trim()文字列の間に検討してください。おそらく余分な空白(または改行)があります。

read()また、 EOFがある場合は、実際に読み取られたバイト(または-1)が返されるため、メソッドの戻り値を確認する必要があります。その前に電話をかけることを考えれば、おそらくうまくいくでしょうが、available()これらのことを確認するのは良い習慣です。

于 2012-07-15T05:13:17.333 に答える