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

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-08 [金] [長年日記]

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

さて、Welcat e-frontのICカード/ICタグ リーダ・ライタEFG-400をJavaで制御しよう企画の続きですが、今度はTCP/IP通信でタグを読み取ろうと思います。

Javaにはjava.net.Socketが用意されていて、getOutputStreamメソッド, getInputStreamメソッドによって、java.io.InputStream, java.io.OutputStreamを取得できるので、TCP/IPの低レベル処理を気にせずにコーディングが可能になります。以下のようにして入力・出力を得ます。

Socket socket;
OutputStream out;
InputStream in;

socket = new Socket("192.168.254.250", 10001);
out = socket.getOutputStream();
in = socket.getInputStream();

2005/07/01の日記と似ています。なんと、この入出力の取得方法が異なるだけで、他の部分のコードをまったく変更する必要がありません。これはアプリケーション層のプロトコルは同じだからです。なので、あとはコンストラクタあたりでどっちの通信方式を使用するか指定できるようにして、メソッドを呼び出せばEFG-400へのリクエストおよびにレスポンスをやり取りできるようなクラスを作れば完成です。

EFG-400をお持ちの方は純正のActiveXコントロールを使用されているんですかね? Visual Basicはできるだけ使いたくなかったので、JNIを使用してC++のプログラムを経由してJavaで制御しようと思っていたのですがVisual Studio .NET 2003のVisual C++で純正のActiveXコントロールをインポートしたら、プロパティが消えてて役に立たなかったので断念して、結局、RS-232C、TCP/IP経由で制御してしまいました。


Copyright © 2004-2008 SewiG All rights reserved.