0

シリアル ポートに文字列を書き込みたいのですが、シリアル ポート書き込みメソッドではバイト配列しか書き込むことができません...では、文字列全体をポートに送信するにはどうすればよいでしょうか..これが私のコードです...

      serialPort.setSerialPortParams(300,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);
       OutputStream mOutputToPort = serialPort.getOutputStream();

        String mValue = "ABCDEFG";
          System.out.println("beginning to Write . \r\n");
         mOutputToPort.write(mValue.getBytes());
         System.out.println("AT Command Written to Port. \r\n");
         mOutputToPort.flush();

私はそれを1文字ずつ送信したくありません..一度に全体を送信したいです...前もってthnxx

4

2 に答える 2

2

あなたのコードは動作します (文字列全体を一度に書き込みます) が、うまくいきません。これが意図したものである場合、それを行うための「クリーンな」方法は次のとおりです。

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(mOutputToPort));
bw.write(mValue);
// probably "write" some more here to the buffer
bw.flush(); // now ensure accumulated data is actually written

文字列を 1 つだけ書き込んでそれ以上書き込んでいない場合は、バッファを使用せずに OutputStreamWriter を直接使用することもできます。

OutputStreamWriter osw = new OutputStreamWriter(mOutputToPort);
osw.write(mValue, 0, mValue.length());
osw.flush();

(Java では、Writer は、バイトではなくストリームへの文字の書き込みを処理します。)

バッファリングが発生しないようにしたい場合 (何らかの理由があるとは思えませんが、シリアル ポートはとにかくデータをバッファリングし、コードが配信するよりも遅く送信するため、システム コールのオーバーヘッドが増えるだけです)、123456789 が提供されます。適切な答え。ただし、呼び出しには注意が必要getBytes()です。これは、システムのデフォルトの文字エンコーディング (通常は UTF-8 または ISO-8859-1、どちらも純粋な ASCII の書き込みに適しています) を使用して文字からバイトに変換するためです。特定のエンコーディングが必要な場合は、 への呼び出しで指定しますgetBytes()

try {
    byte[] bytes = someString.getBytes("US-ASCII");
    for (int i=0; i<bytes.length; i++) 
        mOutputToPort.write(bytes[i]);    }
catch (UnsupportedEncodingException e) {} // well, this one is always supported
于 2013-09-13T07:44:08.303 に答える
0

バイト配列を返す getBytes() メソッドを使用してみてください。

   OutputStream mOutputToPort = serialPort.getOutputStream();

    String mValue = "ABCDEFG";
      System.out.println("beginning to Write . \r\n");
     Byte[] data = mValue.getBytes();
     for(int i=0;i<data.length;i++){
     mOutputToPort.write(data[i]);}
     System.out.println("AT Command Written to Port. \r\n");
     mOutputToPort.flush();
于 2013-09-13T07:11:13.227 に答える