制御用ソフトウェアのダウンロード
通常はアプリケーションからプリンタポートを直接制御することはできないが、その抜け道を作ってくれたのがmag44さんの開発した「ioscm」と呼ばれる一連の関連ソフトウェア群だ。
ダウンロードページから、デバイスドライバのみ、Visual C++6.0から利用できるライブラリ、Visual Basic 6.0から利用できるライブラリに加え、表計算のExcelで制御するサンプルプログラムや、プログラミングしなくても動作を確認できる実行プログラムつきのサンプルまで用意されている。
まずは手軽に動作確認できるLPTCheckをダウンロードしてみよう。圧縮ファイルを解凍すると、次のファイルが同梱されている。
プリンタポートを直接制御するドライバに加え、Visual Basic 6.0のソースプログラムに、実行可能なプログラムも同梱されている。
製作したリレーユニットをパラレルポートに接続して、ユニットの電源を投入。その後LPTCheck.exeを起動してほしい。
画面左上にあるのが、プリンタポートのIOポートアドレスだ。これをBIOS画面で確認したアドレスにセットしよう。頭についている「0x」は16進数を表すものなので、もともと16進表記されているIOポートアドレスなので無視してかまわない。
次に「IO制御」フレームに囲まれている[I/O制御開始]ボタンをクリックする。このボタンは、これからパラレルポートを使用するために各種の初期化を行なうボタンだ。プログラム起動時に1回クリックするだけでかまわない。
リレーのON/OFF状態を指定するのは、「データレジスタ」フレーム内にある[OUTPUT]ボタン横にあるテキストボックス。16進数表記で入力する場合は、左側のHEX欄(&hや0xのプリフィックスは省略可能)に、10進数で入力する場合は、中央のDEC欄に、2進数で入力する場合はBIN欄に入力する。
ここでは直感的な2進数で入力してみよう。
パラレルポートのデータは8ビットあるので、8桁の2進数を入力する必要がある(8桁未満を入力した場合は、上位に0を指定したとみなされる)。それぞれの桁に1を指定した場合はリレーがONになり、0を指定した場合はOFFになるという具合だ。
ここではすべてのリレーをONにするので「11111111」(1を8桁)指定し、[OUTPUT]ボタンをクリックしよう。
出力してよいかの確認メッセージが表示され、[OK]をクリックするとリレーユニットのリレーが一斉にONになり、モニターのLEDが全部点灯するだろう。確認メッセージが邪魔な場合は、左下にある「OUT時に確認する」のチェックを外せばいい。
今度は「00000000」を入力し[OUTPUT]ボタンをクリックすると、すべてのリレーがOFFになるのを確認できるだろう。
また「00000001」を出力して、リレーユニットの一番右がONになるのか、一番左がONになるのかを確認しておくこと。接続によっては左右反転する場合がある。入力した値とリレーの順番が気になる場合は、リレーユニットの信号線の配線をやり直してほしい。
動作確認を終了したら[I/O制御終了]ボタンをクリックして、プログラムを終了しよう。
ステータスレジスタやコマンドレジスタって何?
ここではデータレジスタのみを変更したが、プログラムではステータスレジスタの読み込み、コマンドレジスタの読み書きが可能になっている。これらはプリンタポートを制御しているLSI(8255)のモード切り替えなどを行なうものだ。
プリンタポートを使ってさらに複雑な制御をやりたいという場合は、ネットなどで「8255 データシート」というキーワードで資料を探すといい。とはいえ、下手に値を変更すると動作が不安定になるので注意してほしい(再起動すれば元通りになる)。
(次ページへ続く)
この連載の記事
-
第8回
ゲーム・ホビー
あの電池実験はこうやった! リレーユニットの製作を全公開! -
第7回
ゲーム・ホビー
電池を越えた電池! 電池と言えない電池を発見! -
第6回
ゲーム・ホビー
大電流で電池も加熱! ミニ四駆で無茶してみた~コンビニPB軍団×100円ショップ帝国 -
第5回
ゲーム・ホビー
大電流で電池も加熱! ミニ四駆で無茶してみた~有名メーカー編 -
第4回
ゲーム・ホビー
コンビニPB連合 VS 100円ショップ帝国勝負! 連続使用決戦! -
第3回
ゲーム・ホビー
有名メーカー電池ガチンコ勝負! 連続使用決戦! -
第2回
ゲーム・ホビー
12時間電池耐久レースはコンビニ&100円ショップ対決に! -
第1回
ゲーム・ホビー
有名メーカー対抗! 12時間耐久電池間欠使用レース! -
ゲーム・ホビー
驚愕の結果! アルカリ乾電池性能比較実験! - この連載の一覧へ