パソコンをつくろう!(パソコン自作のすすめ)
組み立てキットを使って自作に挑戦!
[第267回]
●パラレルポート出力プログラム
前回書きましたように、J大学のI先生からリナックスでパラレルポートを制御するプログラムが紹介されているサイトを教えていただきました。
こちら(http://funini.com/kei/io/)のサイトです。
とってもシンプルでわかりやすいプログラムです。
Cで書かれたプログラムですけれど、余計なことは一切書いてなくて、必要なことだけが簡潔に書かれていますから、Cについてはズブのドシロートな私でもなんとかわかります。
ウェブとか雑誌とかで紹介されている「サンプルプログラム」なるものは、やたら長くて最初からやる気を無くしてしまうものとか、肝心の部分が省略されてしまっているために、そのままではコンパイル不能なものとかがよくあって、悪戦苦闘した結果ついにお手上げになってしまうということを、しばしば経験しております。
その点、今回I先生からご紹介いただいたような、簡潔!明瞭!なプログラムに出会いますと、もううれしくなってしまいます。
さっそくご紹介いただいた上記サイトを訪問させていただいて、そこにありましたパラレルポート出力プログラムをほとんどそのままいただいて、リナックスパソコン組立キットで実行可能なプログラムにしましたのが下記のリストです。
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/io.h> #define OUT_PORT 0x378 int main(void){ int i; ioperm(OUT_PORT, 4, 1); for(i = 0; i < 10; i++){ outb(0xff, OUT_PORT); sleep(1); outb(0x00, OUT_PORT); sleep(1); } return 0; } |
I先生からご紹介いただいたサイトにありましたもともとのプログラムでは4行目は
#inclode <asm/io.h>
になっていますが、そのままではUbuntu11.10ではコンパイルエラーになります。
それから5行目でOUT_PORTに0x378を割り当てていますが、この0x378はパラレルポート(プリンタポート)のベースアドレスです。
大抵はこのアドレスですが別のアドレスが割り当てられている場合もありますから、BIOSで確認してみてください。
ioperm(ポートアドレス,バイト数,ON)
はポートアクセスを許可するための命令です。
バイト数はポートアドレスから連続した指定バイト分のI/Oアドレスに対してアクセス許可を得るために指定します。
パラレルポート(プリンタポート)は連続する4バイトですから、ここは4を指定します。
なお実際に8ビットのデータを出力するのに使われるアドレスは0x378のみです。
ですからデータを出力するだけでしたら、バイト数=1で構いません。
”ON”は許可/不許可を指定するためのもので、0を指定したときに不許可、0以外を指定したときに許可されます。
このioperm()がないと、実行時にSegmentation Faultエラーになります。
outb(出力データ,ポートアドレス)
を実行すると、指定したポートに8ビットのデータが出力されます。
このプログラムでは8ビットのポートに11111111(0xFF)と00000000(0x00)を交互に10回出力します。
Sleep(1)は1秒のタイマーです。
●先に作業用のフォルダを用意する
絶対に必要なものではありませんが、「端末」でコンパイルをしたり、作成されたオブジェクトプログラムを実行したりしますから、そのための作業用フォルダを用意しておいた方がわかりやすくて何かと便利です。
ランチャーのホームアイコン(家のマークのアイコン)をクリックして、ファイルマネージャ(Nautilus)を開きます。
開いた状態でマウスを画面の一番上の黒いところに持っていくとツールバーが表示されますから、そこで「ファイル」→「新しいフォルダの作成」をクリックします。
最初は「無題のフォルダ」という名前のフォルダとして作成されますから、作成されたあと、適当な名前に変更します。
ここでは「WORK」という名前にしました。
●ソースプログラムはテキストエディタで作成する
ソースプログラムはテキストエディタで作成します。
Ubuntu11.10のテキストエディタはgeditです。
Ubuntu11.10には標準でインストールされていてすぐに使うことができます。
ランチャーの一番上のdashホームをクリックして、検索窓に ge と入力すると、テキストエディタが表示されますから、それをクリックします。
プログラムを書く要領はWindowsのメモ帳と全く同じです。
プログラムを入力したら、名前をつけて保存します。
「ファイル」→「別名で保存」をクリックします。
保存するフォルダとしてさきほど作ったWorkを指定します。
ファイル名はouttest1.cにしました。
Cのプログラムなので、拡張子 .c をつけるのを忘れないようにします。
「保存」をクリックします。
拡張子 .c をつけて保存すると、Cのソースプログラムとして認識されるため、テキストに色がついて表示されます。
これで準備ができました。
いよいよコンパイルなのですが、本日は時間がなくなってしまいました。
説明の途中ですけれど、この続きは次回にすることにいたします。
パソコンをつくろう![第267回]
2011.12.12upload
前へ
次へ
目次へ戻る
ホームページトップへ戻る