このページの本文へ

驚愕の結果! アルカリ乾電池性能比較実験! 第9回

電池実験装置の全貌公開! リレーユニットの製作【ソフト編】

2009年09月29日 20時00分更新

文● 藤山哲人

  • この記事をはてなブックマークに追加
  • 本文印刷

5、カーソルをSub RelayTest()の次の行に移動し
次の4行を記述する

まずは次の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


(次ページへ続く)

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

ASCII.jpメール アキバマガジン

クルマ情報byASCII

ピックアップ