トップ «前の日記(2005-06-30 [木]) 最新 次の日記(2005-07-02 [土])» 編集

SewiGの日記

2004|01|04|05|06|07|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|

2005-07-01 [金] [長年日記]

[Programming] ICカード/ICタグ リーダ・ライタ (2)

JavaでRS232Cなどのシリアル・パラレルポートへアクセスには、Comunication APIを使用します。まず、以下のサイトで必要なファイルをダウンロードします。

http://java.sun.com/products/javacomm/index.html

以下、Windowsの場合のインストール方法を示します。

  • javacomm20-win32.zipを解凍
  • win32com.dll を <JAVA_HOME>\bin にコピーします。
  • comm.jar を <JAVA_HOME>\lib にコピーします。
  • javax.com.properties を <JAVA_HOME>\lib にコピーします。

JREもインストールされている場合は、以下も行います。

  • win32com.dll を <JRE_HOME>\bin にコピーします。
  • comm.jar を <JRE_HOME>\lib にコピーします。
  • javax.com.properties を <JRE_HOME>\lib にコピーします。

コンパイル・実行時に CLASSPATH に comm.jar を指定します。

あとは読取装置の通信方式に従って、通信するだけです。EFG-400の場合は、シリアル通信の場合、「調歩同期式, RS232C, 57600bps, データビット8bit, ストップビット1bit, パリティチェックなし」なので以下のようにして、ポートの取得をし、入力と出力を得ます。

CommPortIdentifier ports;
SerialPort port;
OutputStream out;
InputStream in;

ports = CommPortIdentifier.getPortIdentifier("COM1");
port = (SerialPort)ports.open("RS232C", 1000);
port.setSerialPortParams(57600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
out = port.getOutputStream();
in = port.getInputStream();

javax.comm.CommPortIdentifier.open(String arg0, int arg1)のarg1はタイムアウト時間です。あとは、引数を見れば動作が予想できるのではないでしょうか。詳しくはリファレンスをご覧ください。シリアル通信をここまで抽象化して通信できるとは便利です。java.io.InputStream, java.io.OutputStreamが得られれば、あとは、RFIDを読み取る命令などをラップしたメソッドや操作設定のフィールドを集めたクラスを作るなりして、ライブラリにしてしまえばJava用のEFG-400制御ライブラリができます。

EFG-400はTCP/IPもサポートしていますが、これについては後日ということで。

→TCP/IP編


Copyright © 2004-2008 SewiG All rights reserved.