Access で USBカメラを。再び。

以前、Access で USBカメラを。的な話題を書きました。

http://www.matsumasa.com/blogs/codetech/archives/365

実際に以前の記事を参考にプログラムを動かすと、微妙に不具合がでます。
Access2013の場合だと、動いたり、動かなかったり。
規則性がありそうなのだけど、APIを使っているので根本的解決というのが難しい。

で、あれの解決を独自にやってしまいました、C#で…が、しかし…
うーん。ちゃんと動くし、カメラキャプチャも保存もDB登録も、いやぁ、我ながらなかなかの出来なのですが…

ちょっと、これを一般向けに提供は難しい。めんどくさい。
反則的というか、C#とAForge.NETで作ったツールをVBAで呼び出すのですが…これのライセンスどうなんだろう?…めんどくさい。
アメリカあたりのアレはすぐに訴訟沙汰になるからなぁ。面倒に巻き込まれるのはゴメンです。

申し訳ないけど、AForge.NETでUSBカメラから画像キャプチャは本当に簡単に出来てしまうので、各自でがんばって下さい。
多分、半日もあれば実用的なのが出来ます。

私は、ちゃんと仕事しながら、その日のうちにできました。
仕事って、プログラミングではないですよ。本業の方です。

では、がんばって下さい。

追伸

さて、AForge.net についてはLGPLというライセンスを適用されているらしく、
そのライセンスについての制限や、リンクや再配布について読んでみたが…
正直よくわからない。
ソースファイルの公開は必要ないみたいだが、リバースエンジニアリングを妨げてはならないとかなんとか。
うーん、うーん。
よくわからない。

も、ええか。めんどくさいからやっぱりやめとこ。

シリアルをVBAで

シリアルというと、RS-232C というやつです。
まだ生き残ってますね。果ては、USB-シリアル 変換ツールというのも日常的にあったりして、まだまだ廃れないようです。
USBのインターフェース仕様がブラックボックスになっていうのが一因だとか言われている。
いや、詳しくないのでよくわからないまま適当なこと書いてます。

さて、VBAからシリアルをさわること、よくあるよね。うんよくある、よくあ…ねぇよ!
まぁ、そういうレアなケースに巻き込まれたと思ってください。
救いの女神登場。名前は EasyComm

フリーのツールですばらしいツールだが、既にツールの提供及びサポートは終了しています。
http://www.activecell.jp/
俺、ここの文章よんで涙がでそうになったよ。作者の人、苦労したんだろうなぁ。

EasyComm 自体は探せば見つかりますし、マニュアルを読む限りでは、使用に制限はないもよう。
この執筆時点での最新バージョンは 1.84 です。
感謝して使わせて貰いましょう。

使い方、ソースなどはここを参考にしました。
http://bluefish.orz.hm/sdoc/vba_memo.html

もう、本当にありがたい。
おかげで課題が一つ、解決しました。

AForge.NET

えー、C#と、英語しか情報がない AForge.NET (なんと読むのだ?アフォゲ ドット ネット?)というのを使って、画像キャプチャに挑戦してみた。

結論。超かんたん。

しかし、使いこなすには英語のドキュメントを読めるのが条件になりそう。
ちょっと凝った事をしようとすると、ちょっとしんどい。

とりあえず、USBカメラを使って得た映像からスナップショットを取ってbmpにして保存するのは、どこにでも転がっているサンプルだけで間に合う。

C#ならば、jpgに変換して保存というのも超かんたんだった。笑っちまうほど。

特定のUSBカメラを指定したり、サイズを指定したり、そういうのにはひとひねり必要なようです。
モニカー(Moniker)って、調べてもロクに出てきませんな。

この複雑怪奇な処理をC++とかでやっている人の事を、とても尊敬するなぁ。
MSの技術情報は、なぜか大抵あてにならない。そう思っているのは俺だけなんだろうか???

TechNet Subscription

サービス終了してしまったMicrosoft のTechNet サブスクリプションですが、
残念だなぁ。

なんだかんだで、一番私のような中途半端プログラマには心地よいサービスだったのに。
MSDNなんか、中小企業どころか極小企業のうちのような会社では入れないよ。

アクションパック サブスクリプション は、… … … …

ちょっと使えない。

Window8以降しかラインナップがないのは非常に不満。
過去のOSを切り捨てるMSの経営姿勢がよく見えます。

微妙にライセンスも変えられてるみたいで、ちょっと窮屈な感じです。嫌です。

なんだかんだ言って、OSはMS一択の時代が長かったし、資産的にもMSでという流れがあったけど、自ら過去の資産を切り捨てる戦略ならば、もうプラットフォームはLinuxでもアンドロイドでも、何でもいいよね。

個人的にはアップルという選択肢は無いと思ってるので、色々なソフトがMS以外で動く/提供されるなら、そっちへ移行でいいんじゃないかと。

Visual Studio 無償化するなら、過去のOSも無償にするとか、ちょっとお金払ってもいいから研究開発用には残しておいて欲しいものだ。

大体、うちの場合は MS-Access (97)が現役という客先が多いので、アクションパックほんとつかえねー。
動いてるのもXP上だったりするので、古いOSが使えないと開発(というか、メンテと改良)なんかできねーYo!

そりゃ、新OSに移行してOfficeも新しいのにすればいいんだけど、同意してくれる客なんて、本当にいないのは、もう笑うしかない。

田舎なんてそんなもんだ。ちゃんと動いてるものになんでカネかけないとダメなの? 壊れたら直して使えばいいんだ。的な古きよき中小企業の正しい姿。

明治時代の機械が現役で動いてたりする会社を相手に、MSの都合が通るはずもない。

顧客の立場にたつつもりが少しでもMSにあるのなら、こういう切捨て方は本当にやめて欲しいものです。

レガシー資産は無償公開するぐらいの度量は欲しいよね。ほんとに。

C# Access(*.accdb) と接続するときの問題点

64bit化して久しいWindowsですが、
やっぱりというか、未だにとしうか、そりゃそうだな問題が出ています。

なぜかOffice製品は64bit環境でも、32bit版がデフォルトらしい。
コンパイル時に気をつけないと64bitプログラムでコンパイルされてしまい、接続できない

避けられないのでどうしようもないですが、なぜかMSはWOW64を推奨のご様子。

くわしくはこちらを。

なかなかめんどくさいですね。
ミドルウェアで吸収してくれたらいいのに。