Foundation 1.1.2

javax.microedition.io
インタフェース CommConnection

すべてのスーパーインタフェース:
Connection, InputConnection, OutputConnection, StreamConnection

public interface CommConnection
extends StreamConnection

このインタフェースは、論理シリアルポート接続を定義します。「論理」シリアルポートは、バイトを逐次的 (シリアル) に転送する論理接続として定義されます。論理シリアルポートは配下のオペレーティングシステム内に定義され、RS-232 物理シリアルポートとは必ずしも一致していません。たとえば IrDA IRCOMM ポートは、一般に、「論理」シリアルポートとして動作させるために、オペレーティングシステム内に論理シリアルポートとして定義できます。  

comm ポートには、明示的なポート識別子と埋め込み構成パラメータ (パラメータが複数ある場合はセミコロンで区切る) を含む Generic Connection Framework 文字列を使用してアクセスします。

特定のシリアルポートに、1 度に接続できるアプリケーションは 1 つだけです。すでに接続が開始されているのに、Connector.open() でシリアルポートをオープンしようとすると、java.io.IOException がスローされます。

接続の開始には、型とパラメータを持つ URI が使用されます。次のように、RFC 2396 に定義された方式を使用します。
comm:<ポート識別子>[<オプションのパラメータ>]

最初のパラメータはポート識別子であり、論理デバイス名で表されます。これらの識別子はデバイスごとに決まっている場合が多いので、注意して使用するようにしてください。

特定のデバイスおよび OS を表す有効な識別子を照会するには、キー "microedition.commports" を指定して System.getProperty() メソッドを実行します。すると、コンマで区切られたポートのリストが返されます。このリストと接頭辞 comm: を組み合わせた URL 文字列を使用して、シリアルポート接続を開始できます (後述のポート命名規則を参照)。

その他のパラメータはセミコロン (;) で区切り、文字列に空白文字を含めないようにします。特定のポートに適用できないオプションパラメータを指定した場合、そのパラメータは無視されることがあります。ポート識別子にセミコロン (;) を含めてはいけません。

正当なパラメータは、後述のパラメータ定義によって定義されます。不正な、または認識されないパラメータを指定した場合、IllegalArgumentException がスローされます。デバイスによってサポートされるパラメータ値は尊重されますが、サポートされないパラメータ値が検出されると java.io.IOException がスローされます。baudrate パラメータが要求された場合、このパラメータは、setBaudRate メソッドがボーレートを処理するときと同様に扱われます。たとえば、要求されたボーレートがシステムによってサポートされない場合、getBaudRate メソッドで検出可能な有効なボーレートに置き換えられる可能性があります。

オプションパラメータ

パラメータ デフォルト 説明
baudrate プラットフォーム依存 ポート速度。
bitsperchar 8 1 文字あたりのビット数 (7 または 8)。
stopbits 1 1 文字あたりのストップビット数 (1 または 2)。
parity なし パリティーは oddeven、または none です。
blocking on on の場合は、読み取り時にバッファーがいっぱいになるまで待ちます。
autocts on on の場合、書き込みの前に CTS 行を待ちます。
autorts on on の場合、入力バッファーがいっぱいでない場合に RTS 行をオンにします。off の場合、RTS 行は常にオンです。

Connector.open() 文字列の BNF 形式

URI は、次に示す BNF 構文に準拠する必要があります。URI がこの構文に準拠していない場合、IllegalArgumentException がスローされます。

<comm_connection_string> ::= "comm:"<port_id>[<options_list>] ;
<ポート識別子> ::= 英数字から成る文字列
<options_list> ::= *(<baud_rate_string>| <bitsperchar>| <stopbits>| <parity>| <blocking>| <autocts>| <autorts>) ;
; オプションリスト内で、
; 前のオプションと重複するオプションがある場合、
; そのオプションは前のオプションをオーバーライドします。
<baud_rate_string> ::= ";baudrate="<baud_rate>
<baud_rate> ::= 数値文字列
<bitsperchar> ::= ";bitsperchar="<bit_value>
<bit_value> ::= "7" | "8"
<stopbits> ::= ";stopbits="<stop_value>
<stop_value> ::= "1" | "2"
<parity> ::= ";parity="<parity_value>
<parity_value> ::= "even" | "odd" | "none"
<blocking> ::= ";blocking="<on_off>
<autocts> ::= ";autocts="<on_off>
<autorts> ::= ";autorts="<on_off>
<on_off> ::= "on" | "off"

セキュリティー

承認されていないデータ送受信を防ぐため、シリアルポートへのアクセスは制限されます。シリアルポート接続に適用されるセキュリティーモデルは、実装プロファイルに定義されており、Connector.open() メソッドの呼び出し時に有効なシリアルポート接続文字列を使用して適用される可能性があります。プロファイル認証方式を使用したシリアルポートへのアクセスが許可されないアプリケーションに対しては、Connector.open() メソッドから java.lang.SecurityException がスローされます。セキュリティーモデルは、実行時、特に openInputStream() メソッド、openDataInputStream() メソッド、openOutputStream() メソッド、または openDataOutputStream() メソッドの呼び出し時にも適用される可能性があります。

次に、CommConnection を使用してサンプルループバックプログラムにアクセスする例を示します。

  CommConnection cc = (CommConnection)
             Connector.open("comm:com0;baudrate=19200");
  int baudrate = cc.getBaudRate();
  InputStream is  = cc.openInputStream();
  OutputStream os = cc.openOutputStream();
  int ch = 0;
  while(ch != 'Z') {
      os.write(ch);
      ch = is.read();
      ch++;
  }
  is.close();
  os.close();
  cc.close();
 

さらに、CommConnection を使用して使用可能な comm ポートを検出する例を示します。

  String port1;
  String ports = System.getProperty("microedition.commports");
  int comma = ports.indexOf(',');
  if (comma > 0) {
      // 使用可能なポートのリストから最初のポートを解析
      port1 = ports.substring(0, comma);
  } else {
      // 使用可能なシリアルポートは 1 個のみ
      port1 =ports;
  }
 

推奨するポート命名規則

任意の英数字の組み合わせにより、プラットフォーム命名規則を満たす論理ポート名を定義できます。ただし、推奨の命名規則に従い、現在のクラスの実装内で一貫したポート名を使用することをお勧めします。VM 実装は、次の命名規則に従うものとします。
ポート名には、ポートの機能を表す短縮テキストとポート番号 (連番) が含まれます。デバイス名の型としては、次のものを使用してください。

API ユーザーは、通常、この命名方式に従って、使用するポートの種類を決定できます。たとえば、アプリケーションがデータの一部を赤外線送信する場合は、接続を開始するために IR# ポートを検出することが可能です。または、使用可能なすべてのポートに対してトライアンドエラー方式を使用します。

導入されたバージョン:
MIDP 2.0

メソッドの概要
 int getBaudRate()
          シリアルポート接続のボーレートを取得します。
 int setBaudRate(int baudrate)
          シリアルポート接続のボーレートを設定します。
 
インタフェース javax.microedition.io.InputConnection から継承されたメソッド
openDataInputStream, openInputStream
 
インタフェース javax.microedition.io.Connection から継承されたメソッド
close
 
インタフェース javax.microedition.io.OutputConnection から継承されたメソッド
openDataOutputStream, openOutputStream
インタフェース javax.microedition.io.Connection から継承されたメソッド
close
-->  

メソッドの詳細

getBaudRate

int getBaudRate()
シリアルポート接続のボーレートを取得します。

戻り値:
接続のボーレート
関連項目:
setBaudRate(int)

setBaudRate

int setBaudRate(int baudrate)
シリアルポート接続のボーレートを設定します。プラットフォームが要求された baudrate をサポートしない場合、システムは有効な代替設定を使用できます。代替値には、getBaudRate メソッドを使用してアクセスできます。

パラメータ:
baudrate - 接続のボーレート
戻り値:
以前の接続のボーレート
関連項目:
getBaudRate()

Foundation 1.1.2

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。