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 回答