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 Embedded systems」を使用してポートに書き込み、Java、「eclipse」を使用してポートから読み取ります。両方のプログラムで、ボーレートは等しくなければなりません。それらが異なる場合、文字はばかげているでしょう:)

于 2012-11-29T12:05:31.297 に答える