2016年5月18日水曜日

Excel VBA, CONTEC DIO の割り込みでつまずく

CONTEC DIO-48DX 割り込みをExcel VBAで使用する。

【困った現象】
  • VB6サンプル通りにしても全くダメ
  • ウィンドウハンドルでエラー停止してしまう
  • 何か定義が抜けているのかセキュリティ設定のせいなのか分からない
  • ウィンドウハンドルに、数値を書けば次に進む
自分自身のウィンドウハンドルを調べる方法からアプローチしていたら、入力補助がヒントをくれた。

【解決】
  • サンプルではCMassage.Window としかないが
  • MyUserfom.CMassage.Window としないとならない
  • オブジェクト名を入れさえすればOK
サンプルコードでうまくいくことが多いので、よく分からず、調べず使ってしまっている。分かってしまえば、「コントロールを貼り付けたフォームを指定する必要があるよね」となるのだけれど。
今回は、VBAのサンプルが無いのと、ネットでも出てこないので困った。

【論理ビット番号】
指定する BitNoが論理ビット番号であり、全ビットが対象の 0~47 の数字(=48点入出力ユニット)である。説明書をよーく読んで気がついた。よく分からずやっている。

--------------------------------------------------
【資料まとめ】
  1. ActiveXコントロールはドライバと一緒にインストールされている
  2. CMessageコントロールを登録する
    MSComm の時と同様に、フォームのツールボックスに[ CONTEC Message Control ]が現れ、それをフォームに張り付ける(フォームは何でもいい)
  3. コードウィンドウのドロップダウンに"CMessage1"があるので、このプロシージャが、イベントメッセージルーチンになる
  4. ポスとされるメッセージを解析して、対応するプロシージャを作成すればいい