|
CDC 1.1.2 | |||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
public interface CommConnection
このインタフェースは、論理シリアルポート接続を定義します。「論理」シリアルポートは、バイトを逐次的 (シリアル) に転送する論理接続として定義されます。論理シリアルポートは配下のオペレーティングシステム内に定義され、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 |
なし |
パリティーは odd 、even 、または none です。 |
blocking |
on |
on の場合は、読み取り時にバッファーがいっぱいになるまで待ちます。 |
autocts |
on |
on の場合、書き込みの前に CTS 行を待ちます。 |
autorts |
on |
on の場合、入力バッファーがいっぱいでない場合に RTS 行をオンにします。off の場合、RTS 行は常にオンです。 |
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# ポートを検出することが可能です。または、使用可能なすべてのポートに対してトライアンドエラー方式を使用します。
メソッドの概要 | |
---|---|
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 |
メソッドの詳細 |
---|
int getBaudRate()
setBaudRate(int)
int setBaudRate(int baudrate)
baudrate
をサポートしない場合、システムは有効な代替設定を使用できます。代替値には、getBaudRate
メソッドを使用してアクセスできます。
baudrate
- 接続のボーレート
getBaudRate()
|
CDC 1.1.2 | |||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |