Unofficial
"CLDC 1.1
+ MIDP 2.0"
API Reference.
(日本語版)

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

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

public interface CommConnection
extends Connection, InputConnection, OutputConnection, StreamConnection

このインタフェースは論理的なシリアル・ポート接続を定義します。 "論理的"なシリアル・ポートはバイト・データが順次転送される論理的な接続と定義されます。 論理的なシリアル・ポートはオペレーティング・システムが定義するもので、必ずしも物理的な RS-232C シリアル・ポートであるとは限りません。 例えば"論理的"なシリアル・ポートとしてオペレーティング・システムが提供するものには、IrDA による IrCOMM ポートなどがあります。

COMM ポートには明示的な識別子とセミコロン(;)で分割された埋め込み構成パラメータから構成される Generic Connection フレームワーク文字列を用いてアクセスします。

同時に1つのアプリケーションだけを特定のシリアル・ポートに接続することができます。 既にオープンされているシリアル・ポートをアプリケーションが Connector.open 系メソッドで開こうとすると IOException を throw します。

接続を開くために使用する URI はタイプとパラメータから構成されます。 RFC2396 で定義されたスキームは以下の通りです。

comm:<ポート識別子>[<オプション・パラメータ>]

最初のパラメータはポート識別子でなければなりません。この識別子は論理的な装置名です。 通常、これらの識別子はデバイス特有であり慎重に使用しなければなりません。

特定のデバイスとOSにおいて有効な識別子は、システム・プロパティ"microedition.commports"System クラスの getProperty() メソッドで呼び出すことで取得することができます。 これにより"comm:"に結合して使用可能なポート識別子を、カンマ(,)区切りで連結した状態のリストを返します。 シリアル・ポート接続を開く際に使用する URI 文字列にする際はポート識別子の前に"comm:"を前に置きます。

接続を開くための文字列には以下のポート命名規則が適用されます。

正しいパラメータは以下のパラメータ定義によって定義されます。

オプション・パラメータ

パラメータデフォルト説明
baudrate プラットフォームに依存ポートの速度(単位: bps)。
本来の意味のボーレートではありません。
bitsperchar8 1単位あたりのビット数(7 また 8)です。
stopbits1 1単位あたりのストップビット数(1 または 2)です。
paritynone パリティに指定できるのは、odd( 奇数 )、even( 偶数 )、none( なし ) のいずれかです。
blockingonon を指定すると、要求する全てのキャラクタを取得できるまでブロックします。
autoctsonon を指定すると、データを送信する際に(送信時のハードウェア・フロー制御を行う)CTS ラインがオンになるのを待ちます。
autortsonon を指定すると、内部バッファに余裕がある際に(受信時のハードウェア・フロー制御を行う)RTS ラインをオンにします。 off を指定すると常に RTS ラインはオンになります。

Generic Connection フレームワーク接続文字列のための BNF フォーマット

URI は以下で指定する BNF 構文規則に従わなければなりません。 URI がこの構文規則に合致しない場合は IllegalArgumentException を throw します。

<COMM 接続文字列>::= "comm:"<ポート識別子>[<オプション・リスト>] ;
<ポート識別子>::= アルファベットと数字キャラクタによる文字列
<オプション・リスト>::= *(<ボーレート文字列>| <1単位あたりのビット数>| <ストップビット>| <パリティ>| <ブロッキング>| <自動 CTS>| <自動 RTS>) ;
; オプションがオプション・リストに含まれる前のオプショ
; ンと同じなら、そのオプションは前のオプションを上書
; きします。
<ボーレート文字列>::= ";baudrate="<ボーレート>
<ボーレート>::= 数字文字列
<1単位あたりのビット数>::= ";bitsperchar="<ビット数>
<ビット数>::= "7" | "8"
<ストップビット>::= ";stopbits="<ストップビット数>
<ストップビット数>::= "1" | "2"
<パリティ>::= ";parity="<パリティ値>
<パリティ値>::= "even" | "odd" | "none"
<ブロッキング>::= ";blocking="<オン・オフ>
<自動 CTS>::= ";autocts="<オン・オフ>
<自動 RTS>::= ";autorts="<オン・オフ>
<オン・オフ>::= "on" | "off"

セキュリティ

シリアル・ポートへのアクセスは、権限の無いデータの送信や受信を防ぐために制限されます。 シリアル・ポート接続に適用されるセキュリティ・モデルは実装するプロファイルにて定義されます。 セキュリティ・モデルは Connector クラスの open() メソッドで使用可能なシリアル・ポート接続文字列に適用されるでしょう。 プロファイルによる認証の結果、アプリケーションによるシリアル・ポートへのアクセスを許可しない場合には Connector クラスの open() メソッドの呼び出し時に SecurityException を throw します。 また、他のオープン系メソッド(openInputStream()openOutputStream()openDataInputStream()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 をオープンするためのポート識別子を取得するプログラムの記述例を以下に示します。

String port1;
 String ports = System.getProperty("microedition.commports");
 int comma = ports.indexOf(',');
 if (comma > 0) {
     // 使用可能ポート・リストから最初のポートを切り出します。
     port1 = ports.substring(0, comma);
 } else {
     // 使用可能なシリアル・ポートは1つのみです。
     port1 =ports;
 }

推奨するポート命名規約

英数字の自由な組み合わせを使用することで、プラットフォーム命名規則に合わせた論理的なポート名を定義することができます。 しかしながら、このクラスの実装において提案する規約に従ってポート名を命名することを推奨します。

仮想マシン実装は以下の規約に基づくべきです。

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

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

メソッドの詳細

getBaudRate

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

戻り値:
この接続のボーレートを返します(単位: bps)。
関連項目:
setBaudRate(int)

setBaudRate

int setBaudRate(int baudrate)
シリアル・ポート接続にボーレートを設定します。 指定したボーレートをプラットフォームがサポートしていないならば、システムは代替の有効なボーレートを適用するかもしれません。 getBaudRate() メソッドを呼び出して取得した値と設定した値を比較することで、代替ボーレートが適用されたか否かを判定することができます。

パラメータ:
baudrate - この接続に設定するボーレートを渡します(単位: bps)。
戻り値:
今回の設定前のボーレートを返します(単位: bps)。
関連項目:
getBaudRate()

Unofficial
"CLDC 1.1
+ MIDP 2.0"
API Reference.
(日本語版)

公式仕様書原文の著作権表記等(※):

Mobile Information Device Profile Specification ("Specification")
Version: 2.0
Status: FCS
Release: November 5, 2002

Copyright 2002 Sun Microsystems, Inc. and Motorola, Inc.
All rights reserved.
※ただしこの API リファレンスは英語仕様を一語一句正確に翻訳したものではなく、一度私が英語の仕様原文を読んだ上で元の意味と構造をなるべく保つように書き起こしたものです。このため一部は完全に異なる説明となっています。また CLDC 1.1 部分は同仕様の範囲外であるため、まったく参考とはしていません。

※仕様書のライセンス上、問題は無いと考えておりますが、万が一問題があるとお考えの関係者の方がいらっしゃいましたらメールにて連絡をいただけると幸いに存じます(第一言語に日本語、第二言語に英語を希望しますが、返信は基本的に日本語で行います)。

この API リファレンスは仕様書の日本語版という位置づけでは作成していませんし、仕様書ほど厳格でもありません。MUST、SHOULD、MAY などの仕様の条件を強調する文を維持していません(反映すらしていない個所もあります)。仮想マシンおよび MIDP の実装のために使用することは避けてください。そのような用途には必ず公式仕様書原文そのものを用いるべきです。
この API リファレンスに記載されている内容は"さかきけい"が Sun Microsystems, Inc や Motorola, Inc、Java Community Process が公開している各種公式資料を元に、独自に調査・編集したものであり、Sun Microsystems, Inc や Motorola, Inc、Java Community Process 等とは一切関係ありません。したがってこの API リファレンスに関する問い合わせを関係各社等に対して行うことを固く禁じます。
また、記載された内容には既知か否かに関らず誤りが含まれる可能性があり、一切保証はありません。本 API リファレンスを使用した結果、不利益が生じたとしても"さかきけい"は一切の責任を負いません。
許可無く公開/非公開および Internet/Intranet/LAN を問わず他サイトに転載すること、複写および複製すること、ローカル・ファイル等に保存することを禁じます。


Copyright© 2001-2002,2005-2009,2011 by KEI SAKAKI.
ALL RIGHTS RESERVED.
無断転載を禁じます。

Unofficial "CLDC 1.0 + MIDP 1.0" API Reference はこちらです。