ダイナミクス、RS_Baseと連携したビデオ画像入力、自動ファイリングシステムの作り方

2002.2.17 森園徹志

最初から既製品で満足できるものがあれば購入していたと思いますが、これはと思うものがなかったので作っちゃいました。
ダイナミクス、RS_Baseと同じ精神?
ハンダゴテが使えて、プログラムをいじることに抵抗がなければ、日曜大工的に自作可能です。

【ビデオ入力ボードを入手する】

品質が良さそうなのと、「開発ガイド」がダウンロードできるのでCanopus製にした。
自作可能かどうかわからなかったので、yahooオークションで中古品を購入した。
http://www.canopus.co.jp/catalog/catalog_video.htm
現在販売中の製品で開発ガイドがあるもので選ぶとすれば Power Capture Pro, Power Movie PCI 。
静止画のみで良ければ画質が良いのは Power Movie PCI、動画も取り込みたければ Power Capture Pro を選択。
【ビデオボードのドライバをコンピュータにインストールする】
【キャプチャー用のvisual basicプログラムを作る】

Canopusのビデオ入力ボード用の開発ガイド
http://www.canopus.co.jp/catalog/pcapro/pcapro-dguide.htm
に含まれているvisual basicのプログラム
と、Tsuyoshi Horo氏作:「VBでゲームを作ろう」中のジョイスティックの使い方
http://hp.vector.co.jp/authors/VA012457/
と、画像をjpeg保存するための明熊 at@akikuma.cx 氏作:明熊JPEG保存DLL V.3.10
明熊工房 http://www.akikuma.cx/
を組み合わせ、
山下先生に教えていただいた、RS_Baseで自動保存するためのファイル名をつける部分を追加しただけ。
ほとんど切り貼りのみのプログラムで動いている。
【visual basicからjpeg保存するためのdllをwindowsのフォルダに移動する】

明熊氏作成のもの。単に移動するだけ。

【リモコンを作る】

http://www.ipic.co.jp/  にアクセスして、無線送受信モジュール、エンコーダ/デコーダICを注文する。
電子部品屋さんをさがして、フットスイッチ、適当なケース、プリント基板、IC、トランジスタなどを購入する。
コンピュータ屋さんに行って、適当なジョイスティックを買う。
無線の知識は不要で、テスターとハンダごてとハンドドリル、ドライバー、ラジオペンチ、ニッパー程度の道具で簡単に製作でき、微妙な調整などいっさい不要。

【ダイナミクスの改造】
慣れるとダイナミクス画面のボタンは使用せず、ショートカットキーのみ使用しているので、(1),(2)は省略し、(3),(4)だけでも良い。(1)(2)と(3)(4)は同じ結果となる。

(1) フォーム 患者マスター に画像キャプチャー起動用のボタン(A)を追加する


(2) モジュール Form_患者マスター に(A)をクリックしたときのイベントプログラムを追加する


Private Sub コマンド932_Click()

Dim stAppName As String
Dim KD As Long, F As Form

Set F = Forms![患者マスター]
KD = F.[カルテ番号]
KD = Int(KD / 10)

stAppName = "C:\Program Files\Capture\Save.exe " _
& Format$(KD)
Shell stAppName, vbNormalFocus

End Sub


(3) モジュール MJ_KEY にキャプチャー起動用の関数を追加する


Public Function CAPTURE_OPEN() '森園追加、画像キャプチャースタート 2001.12.10

Dim stAppName As String
Dim KD As Long, F As Form

Set F = Forms![患者マスター]
KD = F.[カルテ番号]
KD = Int(KD / 10)

stAppName = "C:\Program Files\Capture\Save.exe " _
& Format$(KD)
Shell stAppName, vbNormalFocus

End Function


(4) マクロ Autokeys に画像キャプチャースタート用のキーを登録する
私の場合は ^{1} (control-1) とした。
このマクロのアクションに、上の関数 capture_open() を割り当てる