0

我正在读取一个串行端口,其中有一些字符,如 skljdf85789^& ^eeb 等。在超级终端中,我可以看到带有普通字符的端口。现在,当我使用 java、eclipse 阅读它时,在控制台中我应该看到 skljdf85789^& ^eeb 等 smt 等。相反,我看到了一系列频繁的矩形。我认为这是不兼容类型的问题。我试过这些:

 public void serialEvent(SerialPortEvent arg0) {
        int data;

        switch (arg0.getEventType()) {
        case SerialPortEvent.DATA_AVAILABLE:

            try {

                int len = 0;
                int bet=0;
                while ((data = in.read()) > -1) {
                    if (data == ' '||data == '  ' ){
                        break;
                    }
                    buffer[len++] = (byte) data;

                }// it writes to a buffer from the port
                                    String meterbuf = new String(buffer, 0, len);//buffer is a byte array, it casted  to String here.
                                    System.out.println("string from m485: " + meterbuf);
                                    for(int k=0;k<meterbuf.length();k++)
                {
                    char c=meterbuf.charAt(k);
                    System.out.print(Character.valueOf(c)+" ");
                                    }// I tried to get chars one by one, it did not work, too.

你有什么建议吗?提前致谢。

4

1 回答 1

0

问题是波特率。我忘了设置波特率。我正在使用 c,“iar 嵌入式系统”写入端口,我正在使用 Java,“eclipse”从端口读取。在这两个程序中,波特率应该相等。如果它们不同,角色会很傻:)

于 2012-11-29T12:05:31.297 回答