プロジェクト

全般

プロフィール

Javaシリアル通信

計算機の通信手段として古くから使われ、現在でも組み込み・制御系でよく使われているシリアル通信をJavaから利用する方法をまとめます。

シリアル通信の構成

RS-232としてPCなどの端末装置(Data Terminal Equipment: DTE)とモデムなどの回線終端装置(Data Circuit Terminating Equipment: DCE)とを結ぶ通信のための電気信号・コネクタ等が規定されました。汎用性が高く、DTEとDCEの間の通信だけではなく、産業機器の機器間通信に広く使われています。RS-232Cの信号は10m程度は通信可能とされていますが、さらにノイズ耐性を高めたRS-485では1000m以上の距離の通信も可能とされています。

Javaからシリアル通信を使う方法

Javaはマルチプラットフォームで同じコードを実行するため、OS毎に異なるAPIが用意されているシリアル通信を、Javaアプリケーションから共通で利用できるようJava Serial Communication API
という統一APIが定義されました。

このAPIの実装は当初Sun Microsystems社から提供されましたが、バージョン2.0からはWindows版が除外され、その後アップデートもされなくなりました。

Java Serial Communication APIに準拠した、RXTXと呼ぶオープンソースのシリアル通信ライブラリが存在します。配布サイトは維持されていますがバージョンアップは久しく行われていません。
http://rxtx.qbang.org/wiki/index.php/Main_Page

RXTXの実装にはいろいろ課題もあるようです。RXTX以外にもいくつかオープンソースのシリアル通信ライブラリが登場しています。

jSerialComm
http://fazecast.github.io/jSerialComm/
APL2とLGPLv3のデュアルライセンス。RXTXの安定した代替を目指している。

PureJavaComm
http://www.sparetimelabs.com/purejavacomm/purejavacomm.php
修正BSDライセンス。JNAを使いネイティブコードを使わない実装をしている。

T.B.D.

クリップボードから画像を追加 (サイズの上限: 1 GB)