「JavaCommAPI」の編集履歴(バックアップ)一覧はこちら
「JavaCommAPI」(2006/06/15 (木) 00:56:24) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
Java Communication API
Javaからシリアル・パラレルポートを制御するためのAPI。ネイティブメソッドを使用している。
http://java.sun.com/products/javacomm/index.jsp
Javadoc
http://java.sun.com/products/javacomm/javadocs/javax/comm/package-summary.html
※なぜかNon-Frameバージョンしかない。
なお、3rd Partyではあるが、
[[RXTX>http://www.rxtx.org/]]はJava CommAPI互換の上にI2C、RS485にも対応した実装を行っている。また対応するOSもWin32、Linux、Macと主要なものを網羅している。
パッケージ名が違うので注意。
*バージョン
最新版は3.0Update1(2006年3月現在)。
*対応するポート
現在対応しているor使用できるポートは以下の通りです。
-シリアルポート(RS-232C)
-パラレルポート
また下記はWindowsXP+ [[USB-シリアル変換器>http://www.hdl.co.jp/ftpdata/catalog/usb003cat.pdf]]での動作を確認しています。
-シリアルポート(RS-422)
-シリアルポート(RS-485)
RS-422,485においてもCommAPIの使用方法はRS-232Cとまったく同じです。
*対応するOS
**Windows
Sunがサポートしている。
※2005年11月15日現在ダウンロードできなくなっている。バイナリの機能はJREに標準装備されたとの噂もあるが、真相は定かではない。現在下記の方法で使える可能性があるらしいが、現在検討中。
++Java Comm APIのlinux版をSunのサイトからダウンロード
++jre/libにjavax.comm.propertiesをコピー
++jre/lib/extにcomm.jarをコピー
以上
追記(2005/11/15):やはり上記ではうまくいかないようだ。
jre/binにwin32com.dllがないから??
また裏技的に、下記のサイト
http://www-06.ibm.com/jp/developerworks/ibm/020913/j_i-barcd.html
の最下部にある「必要なcommポート・ファイルをダウンロードしてください。」というリンクをクリックすると以前のcomm.jar,javax.comm.properties,win32com.dllをダウンロードすることが出来る。
Sun公式サイト
http://java.sun.com/products/javacomm/downloads/index.html
参考
http://www.okakogi.go.jp/People/miwa/program/how2com/how2com.html
RXTXも使用可能。
http://www.rxtx.org/
**Solaris
Sunがサポートしている。
Sun Microsystems
http://java.sun.com/products/javacomm/downloads/index.html
**Linux
数年前からサンが正式にサポートしている。
http://java.sun.com/products/javacomm/downloads/index.html
RXTXも使用可能。
http://www.rxtx.org/
参考 http://www.viste.com/Java/CommAPI/CommAPI.htm
http://www.viste.com/Java/CommAPI/install-japanese.html
http://www.tini.prug.or.jp/linuxinstall.html
IBM版もある。
IBMJava2-JAVACOMM
http://www.novell.com/products/linuxpackages/enterpriseserver/i386/ibmjava2-javacomm.html
JCLという物もあったらしい。が、RXTXに吸収されているらしい。
JCL
http://www.geeksville.com/~kevinh/linuxcomm.html
**Mac
下記を使えばいいらしいが詳細は不明。動くかどうかも不明。使った方はご一報を。
http://homepage.mac.com/pcbeard/javax.comm.MRJ/
RXTXは使用可能。
http://www.rxtx.org/
**自作
下記を使えばどんなOSにも対応可能。というか、C言語の雛形しかないので、その先は自作する必要がある。腕に自身のある人向け。
http://www.openje.org/kommapi/
**製品版
Serialio.com SerialPort
製品版のため有償だが、PCから組み込みまで幅広いプラットフォームをサポートしている。
https://serialio.com/products/serialport/serialport.htm
**CommPortIdentifier
CommPortIdentifierを使うとパラレル・シリアル両ポートの高度な制御が可能となる。
具体的には
+名前によるポートの取得(COM1,/dev/ttyS0など)
+使用可能なポート名のリストの取得
+オーナー名を付けたポートのオープン
+オーナー情報を利用したポートのコントロール
などなど。Serial,Pararellにとらわれず、抽象的にコントロールできる。
なお、初期化はコンストラクタではなく
CommPort port = CommPortIdentifier.getPortIdentifier("COM1");
のように行う。
**使用可能なポートの取得
COM1や/dev/ttyS0などの機種やOSに依存する名前をソースコード中にハードコーディング{{fn ソース中に変更不可能な形で記述してしまうこと。特に文字列を決め打ちしてしまうことを指す場合が多い。}}するのはJavaの性質上好ましくない。
また、名前は合っていても、機種によってはそのポートは実際には存在しないことも多い。(特にノートパソコンなど)
そこでポート名を動的に取得し、GUIやコマンドラインから対話的にポートを選択するようにプログラムするのが最もスマートな方法だと言える。
使用可能なポート名を取得するには次のような方法を使う。
CommPortIdentifier portId;
ArrayList list = new ArrayList();
Enumeration en = CommPortIdentifier.getPortIdentifiers();
while (en.hasMoreElements()) {
portId = (CommPortIdentifier) en.nextElement();
list.add(portId.getName());
}
シリアルポートだけ取得する場合は
CommPortIdentifier portId;
ArrayList list = new ArrayList();
Enumeration en = CommPortIdentifier.getPortIdentifiers();
while (en.hasMoreElements()) {
portId = (CommPortIdentifier) en.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
list.add(portId.getName());
}
}
という風に条件を付ける。
パラレルの場合はPORT_SERIALをPORT_PARALLELにする。
**北陽電機(HOKUYO)製の測域センサURGの距離取得プログラム例
URG-X04LX(プロトコルはSCIP1.0)に対応(してるはず)。
※各自の責任において使用してください。作者は一切の責任を負いかねます。
&ref(URGSample.zip)
**リンク
FA のための Java プログラミング講座
http://www.javainthebox.net/JavaForFA/08-09CommAPI/No.08/commapi1.html
http://www.javainthebox.net/JavaForFA/08-09CommAPI/No.09/commapi2.html
Java Communication API
Javaからシリアル・パラレルポートを制御するためのAPI。ネイティブメソッドを使用している。
http://java.sun.com/products/javacomm/index.jsp
Javadoc
http://java.sun.com/products/javacomm/javadocs/javax/comm/package-summary.html
※なぜかNon-Frameバージョンしかない。
なお、3rd Partyではあるが、
[[RXTX>http://www.rxtx.org/]]はJava CommAPI互換の上にI2C、RS485にも対応した実装を行っている。また対応するOSもWin32、Linux、Macと主要なものを網羅している。
パッケージ名が違うので注意。
*バージョン
最新版は3.0Update1(2006年3月現在)。
*対応するポート
現在対応しているor使用できるポートは以下の通りです。
-シリアルポート(RS-232C)
-パラレルポート
また下記はWindowsXP+ [[USB-シリアル変換器>http://www.hdl.co.jp/ftpdata/catalog/usb003cat.pdf]]での動作を確認しています。
-シリアルポート(RS-422)
-シリアルポート(RS-485)
RS-422,485においてもCommAPIの使用方法はRS-232Cとまったく同じです。
*対応するOS
**Windows
Sunがサポートしている。
※2005年11月15日現在ダウンロードできなくなっている。バイナリの機能はJREに標準装備されたとの噂もあるが、真相は定かではない。現在下記の方法で使える可能性があるらしいが、現在検討中。
++Java Comm APIのlinux版をSunのサイトからダウンロード
++jre/libにjavax.comm.propertiesをコピー
++jre/lib/extにcomm.jarをコピー
以上
追記(2005/11/15):やはり上記ではうまくいかないようだ。
jre/binにwin32com.dllがないから??
また裏技的に、下記のサイト
http://www-06.ibm.com/jp/developerworks/ibm/020913/j_i-barcd.html
の最下部にある「必要なcommポート・ファイルをダウンロードしてください。」というリンクをクリックすると以前のcomm.jar,javax.comm.properties,win32com.dllをダウンロードすることが出来る。
Sun公式サイト
http://java.sun.com/products/javacomm/downloads/index.html
参考
http://www.okakogi.go.jp/People/miwa/program/how2com/how2com.html
RXTXも使用可能。
http://www.rxtx.org/
**Solaris
Sunがサポートしている。
Sun Microsystems
http://java.sun.com/products/javacomm/downloads/index.html
**Linux
数年前からサンが正式にサポートしている。
http://java.sun.com/products/javacomm/downloads/index.html
RXTXも使用可能。
http://www.rxtx.org/
参考 http://www.viste.com/Java/CommAPI/CommAPI.htm
http://www.viste.com/Java/CommAPI/install-japanese.html
http://www.tini.prug.or.jp/linuxinstall.html
IBM版もある。
IBMJava2-JAVACOMM
http://www.novell.com/products/linuxpackages/enterpriseserver/i386/ibmjava2-javacomm.html
JCLという物もあったらしい。が、RXTXに吸収されているらしい。
JCL
http://www.geeksville.com/~kevinh/linuxcomm.html
**Mac
下記を使えばいいらしいが詳細は不明。動くかどうかも不明。使った方はご一報を。
http://homepage.mac.com/pcbeard/javax.comm.MRJ/
RXTXは使用可能。
http://www.rxtx.org/
**自作
下記を使えばどんなOSにも対応可能。というか、C言語の雛形しかないので、その先は自作する必要がある。腕に自身のある人向け。
http://www.openje.org/kommapi/
**製品版
Serialio.com SerialPort
製品版のため有償だが、PCから組み込みまで幅広いプラットフォームをサポートしている。
https://serialio.com/products/serialport/serialport.htm
**CommPortIdentifier
CommPortIdentifierを使うとパラレル・シリアル両ポートの高度な制御が可能となる。
具体的には
+名前によるポートの取得(COM1,/dev/ttyS0など)
+使用可能なポート名のリストの取得
+オーナー名を付けたポートのオープン
+オーナー情報を利用したポートのコントロール
などなど。Serial,Pararellにとらわれず、抽象的にコントロールできる。
なお、初期化はコンストラクタではなく
CommPort port = CommPortIdentifier.getPortIdentifier("COM1");
のように行う。
**使用可能なポートの取得
COM1や/dev/ttyS0などの機種やOSに依存する名前をソースコード中にハードコーディング{{fn ソース中に変更不可能な形で記述してしまうこと。特に文字列を決め打ちしてしまうことを指す場合が多い。}}するのはJavaの性質上好ましくない。
また、名前は合っていても、機種によってはそのポートは実際には存在しないことも多い。(特にノートパソコンなど)
そこでポート名を動的に取得し、GUIやコマンドラインから対話的にポートを選択するようにプログラムするのが最もスマートな方法だと言える。
使用可能なポート名を取得するには次のような方法を使う。
CommPortIdentifier portId;
ArrayList list = new ArrayList();
Enumeration en = CommPortIdentifier.getPortIdentifiers();
while (en.hasMoreElements()) {
portId = (CommPortIdentifier) en.nextElement();
list.add(portId.getName());
}
シリアルポートだけ取得する場合は
CommPortIdentifier portId;
ArrayList list = new ArrayList();
Enumeration en = CommPortIdentifier.getPortIdentifiers();
while (en.hasMoreElements()) {
portId = (CommPortIdentifier) en.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
list.add(portId.getName());
}
}
という風に条件を付ける。
パラレルの場合はPORT_SERIALをPORT_PARALLELにする。
**北陽電機(HOKUYO)製の測域センサURGの距離取得プログラム例
URG-X04LX(プロトコルはSCIP1.0)に対応(してるはず)。
下記の添付ファイルをダウンロードしてください。
※各自の責任において使用してください。作者は一切の責任を負いかねます。
**リンク
FA のための Java プログラミング講座
http://www.javainthebox.net/JavaForFA/08-09CommAPI/No.08/commapi1.html
http://www.javainthebox.net/JavaForFA/08-09CommAPI/No.09/commapi2.html
表示オプション
横に並べて表示:
変化行の前後のみ表示: