5、カーソルをSub RelayTest()の次の行に移動し
次の4行を記述する
Dim ret As Integer
Dim i As Integer
ChDir ThisWorkbook.Path
ChDrive Left(ThisWorkbook.Path, 1)
上の2行は、プログラムで使う変数の宣言。retは、DLLからの戻り値を格納する変数で、iはポートに出力する値を格納する。
下の2行は、DLLの在り処を指定する。重要なのは、Excelファイルを保存したフォルダに、「ioscm.sys」と「vbioscm_DLL.dll」が必要になるということ。これらのファイルは、xlsファイルを保存したあとで「EXIOSCM」フォルダからコピーしておこう。
6、パラレルポートの使用開始処理を記述
'IOSCM開始処理をコール
ret = IOSCM_Start
If ret And 1 Then 'エラーの時は直接I/O制御不可のため終了
MsgBox "IOSCM Init Error!!"
Exit Sub
End If
この一連の処理は、パラレルポートの使用開始と初期化を行なう部分。「ret = IOSCM_Start」で開始処理をリクエストし、変数retに利用可能かどうかが戻り値として返ってくる。retの値が0以外の場合は、現在利用できないのでエラーメッセージを出力してプログラムを終了している。
8、リレーユニットに0~255の値を出力する
For i = 0 To 255
Call OutB(&H378, i)
Application.Wait Now + TimeValue("00:00:01")
Next
For i=0 To 255とNextの間で、プリンタポートに0~255の値を出力する。実際にDLLを呼び出しているのは、Call OutB(&H378, i)の部分だ。
カッコ内の左の引数が、プリンタポートのアドレス。16進数で表記するので、必ず「&H」を頭に付加する。右側の引数は、出力する値を示している。iの値はForで1ずつカウントアップされるので、0から順に255まで出力されるわけだ。
「Application.Wait Now + TimeValue("00:00:01")」の部分は、1秒間プログラムを一時停止させている。この行を書かないと、あまりにもプログラムが速すぎてリレーの動作が確認できない。ここでは処理を簡単にするため1秒間一時停止しているが、0.2秒ぐらいの停止でも十分動作は確認できる。
9、パラレルポートの開放
プログラムの最後には、必ずパラレルポートの開放を行なう。
'IOSCM終了処理をコール
ret = IOSCM_Stop
(次ページへ続く)
この連載の記事
-
第8回
ゲーム・ホビー
あの電池実験はこうやった! リレーユニットの製作を全公開! -
第7回
ゲーム・ホビー
電池を越えた電池! 電池と言えない電池を発見! -
第6回
ゲーム・ホビー
大電流で電池も加熱! ミニ四駆で無茶してみた~コンビニPB軍団×100円ショップ帝国 -
第5回
ゲーム・ホビー
大電流で電池も加熱! ミニ四駆で無茶してみた~有名メーカー編 -
第4回
ゲーム・ホビー
コンビニPB連合 VS 100円ショップ帝国勝負! 連続使用決戦! -
第3回
ゲーム・ホビー
有名メーカー電池ガチンコ勝負! 連続使用決戦! -
第2回
ゲーム・ホビー
12時間電池耐久レースはコンビニ&100円ショップ対決に! -
第1回
ゲーム・ホビー
有名メーカー対抗! 12時間耐久電池間欠使用レース! -
ゲーム・ホビー
驚愕の結果! アルカリ乾電池性能比較実験! - この連載の一覧へ