FrontPage 2009/01/09からのアクセス回数 9115

はじめに

評価キットも高価で簡単に手の出せなかったICタグですが、基板タイプのリーダー/ライターが安価に入手できましたので、例題を説明しながらご紹介します。

ここでは、以下の手順で説明します。

  • ICタグ・リーダー/ライターの選定
  • ターミナルソフトを使った、ICタグ・リーダー/ライターとの接続試験
  • ICタグのスキャン、読み込み、書き込みプログラムの作成
  • ICタグを使った書籍管理システムの構築

ICタグを使った例題のゴールは、

  • ICタグ活用システムを構築するための、基礎的な技術を例題を使って紹介すること

としました。

本当はICタグのテストプログラム

今回ご紹介するICタグを使った例題は、元々はSun SpotにICタグ・リーダー/ライターを接続するためのテストプログラムです。

そのため、ICタグ・リーダー/ライターの選定では、Sun Spotとの接続を考慮して以下の制限を付けました。

  • 基板タイプでアンテナ一体型
  • 稼働電圧が3.3V
  • UARTでの制御が可能

ICタグ・リーダー/ライターを探す

ICタグ・リーダー/ライターは、以下の条件でGoogle検索しました。

  • ICタグ・リーダー/ライター
  • 基板
  • 3.3V
  • RS232C (TTL)

この結果、大信機器のHF-04SR( http://www.daishin-kiki.com/products.html ) *1 にしました(サンプルのICタグが付いてきました)、価格も1万円程度です。電圧は5Vと3.3Vがありますので、購入の際には接続するシステムに合わせてください。

次に、使用するICタグですが、本やシートに貼ることを考慮して

  • 小型
  • シールタイプ
  • ISO15693準拠(HF-04SRのサポートしているICタグ)

なものを探しました。

販売量の多いメーカの方が、安く購入できると見込んで「ICタグ」でGoogleに広告を出している 「リンテック」に問い合わせてみました(サンプルのICタグを送っていただきました)。

その結果、TS-Lシリーズ( http://www.lintec.co.jp/e-dept/britem/ictag/products/tsdc_ts.html ) *2 は100枚から注文を受け付けるとの回答を頂き、サンプルのICタグをHF-04SRで動作確認後、TS-L102JCを100枚購入しました。

ICタグ・リーダー/ライターの動作確認

プログラムに接続する前に、ターミナルからシリアル接続し、 ICタグ・リーダー/ライターの動作を確認します。

秋月のUSB-シリアル変換モジュール

TTLレベルのRS-232C通信をテストする場合、レベルコンバータとUSB-シリアル変換モジュールが 必要ですが、秋月のAE-UM232R( http://akizukidenshi.com/catalog/items2.php?q=AE-UM232 )は、USBから電源(5V, 3.3V)を供給し、買ってすぐにブレッドボード上で 接続できるすぐれものです(これで950円は安い)。

写真1は、ブレッドボードにAE-UM232RとHF-04SRを接続したところです。

picture.jpg
写真1

AE-UM232RとHF-04SRの結線は、 図1*3 のようにしてください。HF-04SRからでている4本のケーブルにコネクタを付けて接続しています。

Breadboard.jpg
図1

AE-UM232Rのジャンパーは、以下のように設定してください。

  • J1: 1-2ピン間ジャンパ有り(ショート)で、VIOに3.3Vが供給されます
  • J2: 有り(ショート)で、USBバスから電源を供給します

デバイスドライバーのインストール

AE-UM232Rに組み込まれているUSB・シリアル変換チップはFT232RLで、 Future Technology Devices International Ltd.(http://www.ftdichip.com/Drivers/VCP.htm) のサイトからドライバーをダウンロードします。

  • MacOSXの場合には、FTDIUSBSerialDriver_v2_2_10.dmg
  • WIndowsの場合には、CDM 2.04.14.zip

からインストールしてください。

ドライバーの確認

次にドライバーが正常に動作しているか確認します。 AE-UM232RのUSBケーブルをパソコンに接続します。

MacOSXの場合

アプリケーション/ユーティリティのターミナルを起動し、以下のコマンドを入力します(プロンプト$を除く)。

$ ls /dev/cu.usb*
/dev/cu.usbserial-A5002yHm

のように/dev/cu.usbserial-xxxxxx と表示されることを確認し、この名前をメモしてください。

Windowsの場合

  1. マイコンピュータを右クリックし、「プロパティ」を選択します
  2. ハードウェアタグから、「デバイスマネージャ」ボタンを押します

図2のように、ポート(COMとLPT)にUSB Serial Port(COMx)が追加されたことを確認し、COMxの名前をメモしてください。

DeviceManager.jpg
図2

接続確認

MacOSXの場合

MacOSXでは、デフォルトの通信ソフトで手頃なものがないので、 「Macにシリアル(RS-232C)ポート」のサイト( http://www.zone0.ne.jp/2006/osxserial01.html ) から、Jerminal8095.dmgをダウンロードしました。

ターミナルからJerminal(jermコマンド)を以下のオプションで起動します。最後の/dev/cu.usbserial-A5002yHmは、先ほどメモした名前に変更してください。

$ jerm -b 38400 -p none -d 8 -s 1 /dev/cu.usbserial-A5002yHm 
  • ボーレート 38400
  • パリティなし
  • データ長 8bit
  • ストップビット 1

接続が完了すると以下のように表示されます。

Jerminal v0.8095  Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 candy
Type "Ctrl-M ~ ." to exit.
 ispeed 38400 ospeed 38400
 +IGNBRK -BRKINT -IGNPAR -PARMRK -INPCK -ISTRIP -INLCR -IGNCR -ICRNL -IXON
 -IXOFF -IXANY -IMAXBEL
 -OPOST -ONLCR -OXTABS -ONOEOT
 cs8 -CSTOPB +CREAD -PARENB -PARODD +HUPCL +CLOCAL -CCTS_OFLOW -CRTSCTS
 -CRTS_IFLOW -MDMBUF -ECHOKE -ECHOE -ECHO -ECHONL -ECHOPRT -ECHOCTL
 -ISIG -ICANON -ALTWERASE -IEXTEN
 -EXTPROC -TOSTOP -FLUSHO -NOKERNINFO -PENDIN -NOFLSH

ICタグ・リーダー/ライターとの接続を確認するために、バージョン表示コマンド V Ctrl-M を入力します(端末のようにエコーバックはしないので、VとCtrl-Mは表示されません)。

15693 V03.07

これで、ICタグ・リーダー/ライターとの接続が確認できました。使用したICタグ・リーダー/ライターのバージョンは、V03.07で、対応しているタグはISO15693です。

Windowsの場合

プログラム→アクセサリ→通信からハイパーターミナルを起動します。 接続ポートは、先ほどメモしたCOMxを選択してください。 ポートの設定は、図3のようにします。

ComSetting.jpg
図3

ハイパーターミナルの画面からV Ctrl-Mを入力すると図4のようにバージョンが表示されます。

HyperTerminal.jpg
図4

JavaからICタグ・リーダー/ライターを制御する

すべての準備が整ったところで、JavaからICタグ・リーダー/ライターを制御することにします。

Javaでシリアル通信をする

Javaからシリアルポート、パラレルポートを使用するためのAPIがSunの提供する Java Communications API です。 残念ながらSunの提供するAPIは、SPARC Solaris/x86 Solaris/x86 Linux版のみなのでMacOSXや Windowsでは使えません。

そこで、Java Communications APIに準拠したオープンソースのライブラリRXTXを使用します。*4

RXTXのサイトからrxtx-2.1-7-bins-r2.zipをダウンロードし、解凍します。

  • MACOSX_IDE/librxtxSerial.jnlib
  • Windows/i368-migw32/rxtxSerial.dll
  • Linux/i686-unknown-linux-gnu/librxtxSerial.so
  • RXTXcomm.jar

を取り出し使用しました。

使用するICタグ制御コマンド

javaで使用するICタグコマンドは

  • バージョン情報 : V
  • スキャンコマンド: 2XX
  • 連続スキャン開始コマンド: 2XS
  • 読出コマンド: 2R
  • 複数ブロック書込コマンド: 2WM

としました。詳しくは、HF-04SRに付属の「コマンド編MF4_V03_07.pdf」を参照してください。

各コマンドの書式では

  • UID: タグのUID
  • tt: タグ番号
  • bb: ブロック番号
  • nn: 数値
  • DATA: データ
コマンド書式戻り値成功時戻り値失敗時制約
バージョン情報V[CR]使用できるタグの種類 バージョンなし
スキャン2XX[CR]nn,UID{,UID,UID....}[CR]00[CR]複数タグ検知は最大8枚
連続スキャン2XS[CR]01,UID[CR]中断時None[CR]1文字を送信すると中断する
読出2R,tt,bb,nn[CR]tt,yy,DATA{,tt,yy,DATA...}[CR]00[CR]最大15ブロック
複数ブロック書込2WM,tt,bb,nn,DATA[CR]tt,OK[CR]tt,NG[CR]最大15ブロック

ICタグ制御クラスHF04SL

ICタグ制御クラスHF04SLに各コマンドの処理を実装します。

ICタグオープンメソッド

最初にICタグのオープンですが、バージョン情報を使って接続先がICタグかどうかをチェックします。今回はISO-15693のICタグを対象としているので、バージョン情報の15693の文字列をキーワードとしました。

	public boolean openICTag(String pname){
		if(openSerialPort(pname)){
			String returnCode="";
			for (int i = 0; i < RETRY_COUNT 
				&& (returnCode.indexOf("15693") < 0); i++){
				try{
					write("V\r");
					returnCode = readWithTimer(3000);
				} 
				catch (TimeoutException e1) {}
				catch (Exception e2){
					e2.printStackTrace();
					break;
				}
			}
			return true;
		}
		return false;
	}

連続スキャンメソッド

ICタグの読み込みを逐次チェックするよりも連続スキャンを使ってICタグの検出を待つようにした方が、 処理が簡単になります。

連続スキャンの処理は以下のようになります。

	public String contScanICTag() throws IOException {
		write("2XS\r");
		String res = read(3);
		if (res.equals("01,")) {
			String id = read(16);
			read(1);	// skip [CR]
			return (id);
		}
		else {
			read(2); // skip remain None[CR]
			return (null);
		}
	}

複数ブロック書込メソッド

書込もコマンドの仕様通りです。

	public boolean writeICTag(int tagNo, int blokNo, byte[] data) 
	throws IOException {
		int numBlock = (data.length + 3) / 4;
		StringBuffer buf = new StringBuffer();
		buf.append("2WM,");
		buf.append(String.format("%02x,", tagNo));
		buf.append(String.format("%02x,", blokNo));
		buf.append(String.format("%02x,", numBlock));
		for (int i = 0; i < data.length; i++) 
			buf.append(String.format("%02x", data[i]));
		buf.append("\r");
		write(buf.toString());
		
		read(3); // skip tt,
		String result = read(2);
		read(1); // skip [CR]
		return (result.equals("OK"));
	}

読出メソッド

読出は、ちょっと長くなりましたが、ほとんど仕様どおりです。ICタグの読み出しに失敗した場合には、空のリストを返します。

	public String[] readICTag(int tagNo) throws IOException {
		StringBuffer buf = new StringBuffer();
		buf.append("2R,");
		buf.append(String.format("%02d,00,0F\r", tagNo));
		write(buf.toString());
		
		String numStr = read(2);
		if (numStr.equals("00")) {
			return (new String[0]);
		}
		else {
			List<String>	list = new ArrayList<String>();
			int numTag = Integer.parseInt(numStr);
			String	str;
			int count = 1;
			for (int i = 0; i < numTag; i++) {
				if (count++ != 1) {
					numStr = read(2);
				}
				str = read(1); // skip ','
				String lenStr = read(2);
				str = read(1); // skip ',' or [CR]
				int len = Integer.parseInt(lenStr, 16);
				if (len > 0) {
					String data = read(len*2);
					str = read(1); // skip ',' or [CR]
					list.add(data);										
				}
			}
			return (list.toArray(new String[0]));
		}
	}

テストプログラム

必要な部品がそろったので、テストプログラムで動作を確認します。

	public static void main(String[] args) {
		HF04SL ictag = new HF04SL();
		try {
			ictag.openICTag("/dev/cu.usbserial-A5002yHm");
			System.out.println(ictag.contScanICTag());

			System.out.println(ictag.writeICTag(1, 1, "0123456789ABCDEF".getBytes()));
			String[] tagData = ictag.readICTag(1);
			System.out.println(tagData[0]);	
			System.out.println(ictag.hexToString(tagData[0], 4, 16));
		}
		catch (Exception e) {	
			e.printStackTrace();
		}
		finally {
			ictag.closeICTag();
		}
	}

実行結果は、

Stable Library
=========================================
Native lib Version = RXTX-2.1-7
Java lib Version   = RXTX-2.1-7
1A8FA410000104E0
true
000000003031323334353637383941424344454630303030000000000000
000000000000740069006F006E0020002000000000000000000000000000
0123456789ABCDEF
Experimental:  JNI_OnLoad called.

のように出力されます。

  • 検出されたICタグIDは、1A8FA410000104E0
  • ICタグへの書き込み結果は、true(成功)
  • 読み込んだICタグのデータを16進表示(30313233343536373839414243444546が01234567890ABCDEFに相当)
  • 16進表示のデータから先頭の5文字目から16文字を切り出し0123456789ABCDEFと表示

と期待通りの結果を表示しています。

サンプルプログラム

ICタグのサンプルプログラムとして「書籍管理システム」を作りました。

書籍管理システムでは、

  • 本の表紙裏にICタグを貼ります
  • 本の登録:ICタグを検出し、書籍情報と棚番号を入力する画面を表示します
  • 本の検索:文字列を入力し、一致するタイトル、著者の一覧を表示します
  • ICタグに書き込まれた棚番号を表示します。

の処理をします。

書籍登録の処理の流れ

ICタグは、本の表紙裏左上(背表紙の上部に近く)にセットします(写真2)。 *5

ictagSetting.jpg
写真2

ICタグをリーダー/ライターにかざし、バーコードリーダでISBNをスキャンします(写真3)。

barcordscan.jpg
写真3

BookダイアログでISBN 検索ボタンを押すと、Amazon Web Serviceから書籍情報を取得し、 ダイアログに表示します。4文字の棚番号を入力し、OKボタンを押すと棚番号がICタグに書き込まれます(図5)。

BookDialog.jpg
図5

サンプルプログラムの構成

サンプルプログラムは、図6のような構成となっています。

  • パソコンは、Windows, MacOSX, Linuxに対応しています
  • データベースは、MySQL, PostgreSQL, HSQLDB, CSVファイルに対応しています
  • ICタグリーダー/ライター(写真1のブレッドボード)
  • バーコードリーダISBN番号を読み込むために使用しています *6
Structure.jpg
図6

画面説明

簡単に各画面の使い方を説明します。

書籍画面

プログラム起動時に、書籍画面が表示されます(図7)。書籍画面には、メニューと書籍の登録された書籍の一覧が表示されます。書籍一覧で書籍を選択し、ダブルクリックするとBookダイアログが表示され、書籍情報の修正が可能です。

Frame.jpg
図7

メニューバーには、「ファイル」メニュー1つで、以下の項目があります。

検索検索文字列入力ダイアログを表示し、文字列にマッチした書籍を一覧に表示します。文字列が入力されない場合には、すべての書籍を表示します
書籍登録ICタグを検出し、Bookダイアログを表示し、書籍をデータベースに登録します
棚番号表示ICタグから4文字の棚番号を読み取り、表示します
終了プログラムを終了します

Bookダイアログ

Bookダイアログには、ICタグID, ISBN番号、書籍情報、棚番号が表示されます(図5)。

書籍登録の場合、

  1. ICタグを検出し、ICタグIDを含むBookダイアログを表示します
  2. キーボード(バーコードリーダの方が便利)からISBN番号を入力し、ISBN検索ボタンを押すと書籍情報がセットされます
  3. OKボタンを押すとデータベースに書籍が登録され、棚番号がICタグに書き込まれます
  4. Cancelボタンで登録を終了します

棚番号表示ダイアログ

メニューから「棚番号表示」を選択し、ICタグ・リーダー/ライターに書籍を近づけると、ICタグから棚番号を読み取り、表示します(図8)。

shelfID.jpg
図8

開発環境

サンプルプログラムは、Eclipseのプロジェクトになっており、コンパイルには、以下のツールが必要です。

  • java JDK1.5以降

http://java.sun.com/javase/downloads/index.jsp からJava SE Development Kit (JDK)6 Update 11 の Downloadボタンを押して、プラットフォームにあった JDKをダウンロードして、インストールしてください。

  • Eclipse 3.1以降

http://www.eclipse.org/ から、Download Eclipseをクリックして、 Eclipse IDE for Java DevelopersのWindowsを選択してダウンロードして解凍すれば利用可能になります。

GUIの構築

GUIは、Eclipseのプラグインの一つであるVisula Editorを使って作成しました。 画面でボタンやフィールドをマウスで配置しますので、初心者でも画面の編集ができるようになります(図9)。

VisualEditor.jpg
図9

ISBN検索ボタンの処理

ISBN番号から書籍の情報を取得するのは、アマゾンのAWS APIを利用しました。*7

AWSへのアクセス*8 と書籍情報XMLの解析は、JXPath *9 を使いました。

  1. DocumentContainerにAWS APIのURLをセットします
  2. JXPathContext#newContextメソッドで AWS APIを使って書籍XMLを取得します
  3. registerNamespaceメソッドで、ネームスペースawsを登録します
  4. context.getValue("//aws:Title")で書籍情報XMLからXPathで指定した書籍タイトルを取り出しています

こんなに簡単にAWS APIを使って書籍情報を取得できることに驚かれる方も多いのはないでしょうか。

	private void searchISBN() {
		String requestUrl = "http://webservices.amazon.co.jp/onca/xml?Service=AWSECommerceService&SubscriptionId=" 
		+ DataBaseHelper.getAwsAccessKeyID() + 
		"&Operation=ItemSearch&ResponseGroup=Medium&SearchIndex=Blended&Keywords="
		+ getIcbnField().getText();
		try {
			DocumentContainer container = new DocumentContainer(new URL(
					requestUrl));
			container.setNamespaceAware(true);
			JXPathContext context = JXPathContext.newContext(container);
			context.registerNamespace("aws",
							"http://webservices.amazon.com/AWSECommerceService/2005-10-05");

			String title = context.getValue("//aws:Title").toString();
			String author = context.getValue("//aws:Author").toString();
			int numOfAuthor = (int)Double.parseDouble(context.getValue("count(//aws:Author)").toString());
		
			for (int i = 1; i < numOfAuthor; i++) {
				String nextAuthor = "//aws:Author[" + (i+1) + "]";
				author = author + "; " + context.getValue(nextAuthor).toString();
			}

			String publisher = context.getValue("//aws:Manufacturer").toString();
			String publicationDate = context.getValue("//aws:PublicationDate").toString();
			String noPages = context.getValue("//aws:NumberOfPages").toString();
			String listPrice = context.getValue("//aws:Amount").toString();
			
			titleArea.setText(title);
			authorArea.setText(author);
			publisherField.setText(publisher);
			publicationDateField.setText(publicationDate);
			noPagesField.setText(noPages);
			listPriceField.setText(listPrice);

		} catch (Exception e) {
			e.printStackTrace();
		}
	}

プログラムの実行

AWS(Amazon Web Service)アカウントの作成

ISBNから書籍の情報を取得するのに、AWSのAPIを使っていますので、AWSのAccess Key IDが必要となります。

  • 最初にAWSのアカウントの作成

http://www.amazon.com/gp/aws/registration/registration-form.html

にアクセスして、必要な項目を入力し、登録ボタンを押すと完了です。

  • Access Key IDの取得

AWSのアカウントの登録が完了すると、Welcome to Amazon Web Services というタイトルのメールが届きます。

メールに記載されている、以下のサイトにアクセスします。

http://aws-portal.amazon.com/gp/aws/developer/account/index.html?action=access-key

Sign In画面で登録したメールアドレスとパスワードを入力すると、割り当てられたAccess Key IDが表示 されます。

プログラムのダウンロード

ソースおよびプログラム一式は、ZIPファイルとしてictag.zipに圧縮してあります。 fileictag.zip

ictag.zipを解凍すると、ictagディレクトリに

ictag/
     +src/
     +lib/
     +data/
     +ictag-1.0.jar
     +db.properties
     +librxtxSerial.jnilib
     +librxtxSerial.so
     +rxtxSerial.dll

があります。

  • src/以下にプログラムソースがあります
  • lib/以下に使用するライブラリがあります
  • data/以下にHSQLDBが使用するファイルとBook.csvファイルがあります
  • ictag-1.0jar: ICタグサンプルプログラムのjarファイルです
  • db.properties: データベース関連の設定ファイル
  • librxtxSeria.jlib, librxtxSeria.so, rxtxSerial.dll: RXTXが使用するファイルです

db.propertiesの設定

db.propertiesの設定情報について説明します。

JDBCドライバー情報

初期設定では、JDBCドライバー情報としてHSQLDBを使用する設定になっています。 ictag-1.0.jarのライブラリのパスに登録してあるデータベースドライバーは、

  • HSQLDB Ver. 1.8.0.7
  • MySQL Ver. 5.1.6
  • PostgreSQL Ver. 8.1.407

です。上記以外のドライバーを使用する場合には、ドライバーのjarファイルをクラスパスにセットしてください。

db.url=jdbc:hsqldb:data/book
db.driver=org.hsqldb.jdbcDriver
db.username=sa
db.password=
  • db.url: 接続するデータベースのURLを指定します
  • db.driver: JDBCドライバーのクラスパスを指定します
  • db.username:データベースのユーザ名を指定します
  • db.password: データベースのパスワードを指定します

SQL文の設定

データベースによってSQL文に若干違いがあるため、使用するSQLを設定できるようにしました。

初期設定はHSQLDBを使ってCSVファイルをテーブルと扱うようになっています。

db.createTable=CREATE TEXT TABLE Book (ID IDENTITY, ICTAG VARCHAR, ISBN VARCHAR, 
  TITLE VARCHAR, AUTHOR VARCHAR, PUBLISHER VARCHAR, PUBLICATIONDATE VARCHAR, 
  NOPAGES VARCHAR, LISTPRICE VARCHAR, SHELFID VARCHAR); 
  SET TABLE Book SOURCE   "book.csv;encoding=Shift_JIS";
db.insertSQL=INSERT INTO Book  (id, icTag, isbn, title, author, publisher, publicationDate, 
  noPages, listPrice, shelfId) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
db.updateSQL=UPDATE Book SET id=?, icTag=?, isbn=?, title=?, author=?, publisher=?, 
  publicationDate=?, noPages=?, listPrice=?, shelfId=? WHERE id=?;
db.selectAllSQL=SELECT * FROM Book;
db.selectWhereSQL=SELECT * FROM Book WHERE title like ? OR author like ?;
  • db.createTable: テーブルの作成用SQL文を指定します
  • db.insertSQL: レコードの挿入用SQL文を指定します
  • db.updateSQL: レコードの更新用SQL文を指定します
  • db.selectAllSQL: 全レコード検索SQL文を指定します
  • db.selectWhereSQL: 条件付き検索SQL文を指定します

AWS Access Key ID

先にAmazonから取得したAWS Access Key IDは、

aws.access.keyID=ここに取得したAccessKeyIDをセットしてください

に設定します。

ICタグ・リーダー/ライター使用の有無

ICタグ・リーダー/ライター使用の有無を指定します。 初期設定は、ICタグ・リーダー/ライターを使用する設定になっています。

ICタグ・リーダー/ライターを使用しないで、書籍の管理をする場合には、

use.ictag=false

に変更してください。

プログラムの起動

プログラムの起動は、ターミナルまたはコンソールから

$ java -jar ictag-1.0.jar シリアルデバイス名

を入力します。

例)MacOSXでの起動例

$ java -jar ictag-1.0.jar /dev/cu.usbserial-A5002yHm 
Experimental:  JNI_OnLoad called.
Stable Library
=========================================
Native lib Version = RXTX-2.1-7
Java lib Version   = RXTX-2.1-7

書籍データベース

登録した書籍情報は、データベースに登録されます。 初期設定では、HSQLDBを使ってdata/Book.csvファイルに書籍情報が保存されるようになっています。 文字コードをShift_JISに設定してありますので、そのままExcelで開いて編集できます。

本格的なデータベースを使う例として、MySQLを使う場合の設定を以下に示します。

MySQLで日本語を扱う場合、データベース作成後に

ALTER DATABASE データベース名 CHARACTER SET SJIS;

のように使用する文字コードをSJISに変更します。

次にdb.propertiesの設定では、db.urlで文字コード指定が必要となります。

db.url=jdbc:mysql://localhost/ictag?useUnicode=true&characterEncoding=SJIS
db.driver=com.mysql.jdbc.Driver
db.username=ictag
db.password=ictag

テーブルの作成は、以下のように変更します。

db.createTable=CREATE TABLE Book (ID LONG, ICTAG VARCHAR(16), ISBN VARCHAR(13), 
  TITLE VARCHAR(255), AUTHOR VARCHAR(255), PUBLISHER VARCHAR(64), 
  PUBLICATIONDATE VARCHAR(10), NOPAGES VARCHAR(5), LISTPRICE VARCHAR(5), 
  SHELFID VARCHAR(4));

あとがき

ICタグを使ったサンプルプログラムでは、

  • ICタグ・リーダー/ライターとの接続方法
  • ICタグを読み書きをする方法
  • ICタグを使って書籍を管理する場合の、書籍登録作業の軽減方法
  • java言語によってOSに依存することなくICタグ・リーダー/ライターを制御する方法
  • 特定のデータベースに依存しないで、書籍データベースを管理する方法

を紹介しました。

大信機器株式会社の野村秀夫さん、リンテック株式会社の佐藤誠子さんには、ICタグおよびリーダー/ライターの購入に際し、お世話になりました。感謝申し上げます。永山純一さん、橋本あづささん、戸張一夫さんには原稿に対し貴重なコメントを頂きました。感謝申し上げます。



*1 問い合わせ:Tel. 06-6641-7633 大信機器株式会社 営業第二部
*2 問い合わせ:Tel. 03-3868-7737 リンテック株式会社 アドバンストマテリアルズ事業部門 情報通信材料部
*3 ブレッドボードの図は、Electronic Breadboard Templates(http://code.rancidbacon.com/ElectronicBreadboardTemplates )を使用させていただきました。
*4 RXTXシリアル接続については、torutkの日記 ( http://d.hatena.ne.jp/torutk/20071224/p1 ) を参考にさせていただきました。
*5 HF-04SRではスキャン距離が3cmと短いので本の背表紙からのスキャンでは、タグを認識することができませんでしたが、スキャン距離の長いICタグ・リーダー/ライターを導入したときのためにこのように配置しました。
*6 大量の書籍を登録する場合にはとても便利です。USBタイプのものを使用しました。
*7 namespaceの指定方法については、ひびどく( http://yhd.cocolog-nifty.com/hibidoku/2005/11/index.html ) を参考にさせていただきました。
*8 日本語のAmaxon WEbサービスチュートリアル(http://forums.prospero.com/n/mb/message.asp?webtag=am-assocdevxml&msg=6951.2&ctx=4096 )を参考にしてください。
*9 日本語のドキュメント ( http://commons.jakarta.jp/jxpath/ ) を参考にしてください。

添付ファイル: fileictag.zip 498件 [詳細] fileBreadboard.jpg 1138件 [詳細] fileVisualEditor.jpg 553件 [詳細] fileStructure.jpg 553件 [詳細] fileFrame.jpg 569件 [詳細] fileshelfID.jpg 539件 [詳細] fileBookDialog.jpg 577件 [詳細] filebarcordscan.jpg 515件 [詳細] fileictagSetting.jpg 565件 [詳細] fileHyperTerminal.jpg 543件 [詳細] fileComSetting.jpg 547件 [詳細] fileDeviceManager.jpg 566件 [詳細] filepicture.jpg 568件 [詳細]

トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-01-17 (土) 18:32:25 (2987d)
SmartDoc