[データコレクタ] OPTICON OPN-2001からデータをダウンロードする

OPN-2001からバーコードデータをダウンロードするアプリをC#で書いてみる。

情報収集

開発者向け情報はメーカーのWikiにまとめられている。

OPN-2001 – Opticon Technical Support Portal
https://wiki.opticonusa.com/techsupport/en/OPN-2001

OPN PC SDKをダウンロードする。レジスト不要で自由にダウンロードできる。

OPN PC SDK Ver.6
http://ftp.opticonusa.com/Downloads/OPN2001SDKv6.zip

デモソフトを動かす

SDKには.NET Demoというアプリが同梱されているので、実行して動作を確認してみる。

VS2013でデモアプリのプロジェクトを開くと、古いバージョンのVSで作成されたために変換が必要と言われる。SDKにリリースノートが同梱されていないので、いつ作成されたプロジェクトなのかわからん。ファイルの日付からおそらく2012年2月だろう。

プロジェクトを変換してビルドを試みると、リファレンス欠如によるエラー多数。

1つ上のディレクトリにあるOpticon.csp2.net.dllのリファレンスを追加するとビルド成功。ちなみにOpticon.csp2Ex.netのリファレンスを追加しようとすると、CPUタイプがマッチしないというエラーになる。

実行しようとすると以下のエラー。

0001

プロジェクトにデモソフト作成者のマシン上のパスが直指定されているのが原因。この設定は余計なので、プロジェクトのプロパティを開いて[Debug]ペインの[Working directory]を空白にしてやればいい。リリース前の見落としか?>メーカー

csp2.net.test

これでデモアプリは実行できるようになったので、ソースを眺めながら挙動を確認する。デモアプリというよりはAPIのテストプログラムという感じ。実際の処理には必要ないAPI呼び出しが多数含まれるので、自分でアプリを書くときには必要なAPIだけ呼ぶように配慮する必要がありそう。ドキュメントにはそういう実装上のヒントは書かれていないのがちょっと不親切。

スクラッチからアプリを作る

デバイスからバーコードをダウンロードしてMS-Accessのテーブルを処理するアプリを書いてみた。

ざっと留意事項。

  • プロジェクトにOpticon.csp2.net.dllのリファレンスを追加する
  • 実行パスにCsp2.dllも配置しておかないとdll不足で動作しない
  • Opticon.csp2.net.dllはCsp2.dllを単にラップしているだけっぽい
  • Opticon.csp2.net.dllのメソッドは全てスタティックなのでインスタンス化とか不要
  • 逆に言えば一度に1デバイスしか処理できない
  • メソッドに関してはSDK同梱の”Windows SDK Reference”を参照