Freeバーコード

 さて、HomePC+Netさんからバーコードペンが無料配布されているのは前述の通りです。
このペンはバーコードのデコーダまで入っているという優れものです。(JANだけかも知れませんが...)
バーコードを書くのはこのサイトにあるような「BarClip」のようなソフトを使って作ることができます。
 このコーナーではHomePC+Netさんから配布されたバーコードペンを普通のバーコードリーダとして使うための企画です。
 尚、本内容は独自に調査実験したものであり、HomePC+Netさんやメディアポータルジャパンさんとは全く関係ありません。また内容に関しては動作を必ずしも保証するものではありません。ソース等は全て公開いたしますし、アマチュア利用を念頭においた非商用のものです。色々な形で皆様のお役に立つことを祈って公開いたします。 

必要なもの
必要 ・まずは無料バーコード!!
 前述のように日本でも無料配布されています。月刊誌の「HomePC+Net」さんです。まずはこれをGetしてください。2001年初から配布されていますが、締め切りがあります。(終わったのかな?)

 インターフェイスはUSBです。アマチュアにとってUSBは敷居が高いものです。しかしあきらめてはいけません。柏野氏が素晴らしいソフトを公開されています。(同氏はCQ出版のインターフェイス誌にも寄稿されています。)その名は「UUSB.DLL」です。ここにありますからダウンロードしてください。
 uusbdv10.zip 約144K byte (uusbd.dll一式とソースファイル)
というのがそれです。使用条件は柏野氏の記載内容に準じます。(このファイルはZipですので解凍ソフトも準備ください。)  
ドライバを入れ替える
ドライバを入れる ・ドライバの入れ替え
 以下に手順を示します。元へ戻せますから安心してください。慎重にやってください。
1)普通にインストールする
 まずはHomePCさんのバーコードリーダ(以下BCR)を普通通りにインストールしてください。インストール手順は添付の手順書に従ってください。またユーザ登録も手順に従って行ってください。そして正しく動作することを確認してください。
2)新しいドライバを作る
上でGetしたuusbd10.zipを解凍すると、Setupというフォルダが現れます。ここに
・UUSBD.SYS
・UUSBD.INF
の1つのファイルがあります。このUUSBD.INFを以下のものを解凍したものに置き換えてください。
bcr_uusbd..lzh
これはエディタで開けばわかりますが、柏野さんのオリジナルをこのBCR用に変更したものです。
・UUSBD.SYS
・UUSBD.INF
を同じフォルダに入れておきます。
3)ドライバを入れ替える
・コントロールパネルを開けます。
・システムを開きます。
・デバイスマネージャーのタブを開きます。
・ユニバーサルシリアルバスコントローラを指定し、その下の「InternetBarcode2001USBDriver」を指定します。
・このプロパティを開きます。
・プロパティのドライバタブを開きます。
・ドライバの更新ボタンを押します。
ここで「デバイスドライバの更新ウィザード」が起動します。
・「ドライバの場所を指定する」を選んで次へ
・「特定の場所にある...」を選んで次へ
・「ディスク使用」にして先ほどの「UUSBD.SYS・UUSBD.INF」を指定します。
・「USBドライバ(BarCode)」が出るのでそれを選んで次へ
・インストールが終わったら「完了」を押す。
*UUSBD用ドライバにUSBドライバ(Barcode)が入れば成功です。
!マークなどがついていないように注意してください。
<注意>
これで柏野さんのドライバUUSBD.SYSに置き換わります。
ただ私の場合はやっても1回では素直に入らなかったです。最悪(というかだいたいというか)フリーズする場合があります。(^^!その場合にはリセットして何度かやってみてください。必ず「完了」を押すまでやってください。根気良くやれば必ずインストールできます。(^^!
<元へ戻したくなったら...>
・コントロールパネルを開けます。
・システムを開きます。
・デバイスマネージャーのタブを開きます。
・先ほどの「USBドライバ(Barcode)」を削除します。
・ユニバーサルシリアルバスコントローラを指定し、「更新」を押します。
他にも、先ほどのようにして更新から「InternetBarcode2001USBDriver」を指定してもいいです。
<情報>
このBCRの製造は東北Richoさんのようです。正式な型番はEP1000というらしいです。
開発する
開発 この章は開発者向けです。ユーザは読み飛ばして次に行ってください。
・開発する

 さて無事ドライバがインストールされたものとします。動かないと意味がないですね。
 UUSBD.SYSを動かすにはUUSBD.DLLというDLLを使えばできます。UUSBD.DLLは先ほどの柏野さんのHomePageにCのサンプルがあります。OpenしてRead(又はWrite)してCloseするという簡単さです。素晴らしいです。Cのサンプルもありますので、それを元にすればできると思います。
・DelphiでUUSBD.DLLを使う
 これをやるにはUUSBD.DLLを使うCのヘッダファイルUUSBD.HをPascalに変換する必要があります。私はDelphiを主に使用しているので、このためにUUSBD.PASというファイルを作りました。中にはDelphiでのサンプルもコメントとして入っています。
 UUSBD.PASは全てのテストが終わっている訳ではありませんが、一応このBCRでの動作は確認してあります。シビアなPascalですから文法も大丈夫でしょう。しかし全部を保証するわけではありません。
 これでDelphi使いのあなたも今日からUUSBD.DLLを使えます!!下をクリックしてください。
uusbd_pas.lzh
<情報>
 UUSBD.DLLのReadは一旦発行すると戻って来ません。(^^!
 したがってBCRのような非同期な装置を使う場合はReadはスレッドで処理する必要があります。また終了時がうまくないので最後に入力を一回行う必要があります。
 本件に関して柏野さんの方でも要望が多いため、タイムアウト設定を行う方向だそうです。間もなく(?)CQ出版からUSBの本が出るそうで、そこでの収録にはなんとかしたいとか...。
 インターフェイスの別冊TechIの「USBハード&ソフト開発のすべて」みたいです。
 汎用Comポートのサンプルも掲載されています。(しかし目下うまくいきません。)UUSBD.SYSもVerUpしています。
テストする
試験 まずは同じ物を作ってみます。
・原理を知る

 HomePCの仕掛けはやはりサーバにバーコードの番号を渡して、それをURLに変換してURLジャンプさせる方式です。例えばHomePCはこういう感じです。
http://www.mediapj.com/bar.php?kind=01&sno=000000000000000000001&bno=1808102000015
・http://www.mediapj.com/bar.php
が読み替えサーバです。PHPで書かれているんですね。
・kind=01
はバーコードの種類でしょうか?
・sno=000000000000000000001
はユーザ番号です。自分の番号が知りたい場合はレジストリエディタで覗きます。
¥HKEY_LOCAL_MACHINE¥Software¥MediaPJ¥MediaPJのSidの21桁の番号がそうです。
・bno=1808102000015
がバコードのデータです。
 ここまでわかれば動作させられますね。
・テストプログラム
 それでは似たようなものを作ってみます。
 その前にDLLを準備しましょう。先ほどの柏野さんのuusbdv10.zipを解凍した中のLIBフォルダにUUSBD.DLLがあります。これを動かすにはこのDLLが必要です。
usb_test.lzh
これを解凍するとEXEが出てきます。DLLはこのEXEと同じフォルダにおいてください。
うまくEXEが起動されるとBCRのランプ(赤)が点灯しているはずです。消えていたらドライバを確かめてリブートしてみてください。チェックを外せば、URLジャンプせずに番号だけが読めます。
例えば本の裏のバーコードを読むと読めますね。JANは色々な商品についています。
HomePCでは番号はわかりませんが、これで読むと番号がわかります。
実は欠点もあって終了しようとしても終わらない場合があります。これがReadでループしている状態なので、この場合もう1回バーコードをスキャンすれば終わります。(^^!
 では開発者用にコードを公開します。
usb_test_src.lzh
 これはDelphi5で書かれています。
 柏野さんのUUSBD.DLLを使えば、Cでも簡単に書けます。むしろDelphiの方が変換が面倒なのですが、先のヘッダの変換で支障なく使えます。
 ただUUSBD.DLLの現仕様でReadには「抜けてこない」問題があります。柏野さんのVerUpを待っているのですが、それより(サイズを下げて)常駐させてDDE通信させるのも悪くないかも知れません。
 いずれにしてもプログラマの方々が多くのアイデアで色々なツールを開発される一助となれば幸いです。
 Cの方々は柏野さんのサンプルがそのまま通用します。ただしReadはスレッドにするか、全く常駐させるかのどちらかは必要です。
<情報>
 バーコードは拙作のBarClipで書けます。(このHomePageにあります)
 例えば、「あちゃら」のインターネットバーコードをバーコード印刷しておいて、HomePCのBCRで読んでジャンプさせることも可能です。
 インターネットバーコードバトラーもできますね。
 どなたかチャレンジしませんか?
その他
・配布者へのお願いと皆様へのお願い
 最近興味を持ったのがこれです。このような開発をするにあたって、配布側の理解を求めるものです。
 米国ハッカーもそうですが、「配布者の利益を落とす」目的ではなく「使用者の利益を上げる」という考えで行われていると聞きます。日本も是非そうあってほしいと願います。または安くメーカさんが売られてもいいと思います。またAPIも公開いただけると有難いです。
 素晴らしいペンの無料配布という英断には心から感謝しています。
 多くのプログラマがこの素晴らしいバーコードペンでよりよいアイデアのアプリケーションを開発されることを心から望むものです。またそれは、多くの力によってより良い社会や発展につながると信じています。
 このコーナはソースも全部公開しています。決して私利私欲や営利目的で行っているものではありません。社会的な意義というほど大げさでなくてもインターネットの力でのより多くの方々の協力とアイデアを求めているものです。
 配布者の方々及びこれをお読みの皆様のご理解をお願い申し上げます。