2011.12.17
前へ
次へ
目次へ戻る
ホームページトップへ戻る

パソコンをつくろう!(パソコン自作のすすめ)
組み立てキットを使って自作に挑戦!

[第272回]


●パラレルポート出力プログラム(3)

前回からの続きです。
前回はパラレルポート出力プログラムから#include <sys/io.h>を削除したらどうなるか、を試してみました。
その結果はコンパイル時に「outbが未定義」というエラーが出てコンパイルできませんでした。
このことからするとoutbはsys/io.hで定義されているようです。
そこで、今度は#include <sys/io.h>はもとに戻し、その代わりに#include <unistd.h>を削除してみました。

●#include <unistd.h>を削除してみる

もとのプログラムから#include <unistd.h>を削除してouttest4.cとしました。
そしてこれをコンパイルしました。
今度はコンパイルはエラーがでることもなく完了し、その後実行してLEDが10回点滅することを確認しました。

このように作業を進めてきますと、いままでなんとなく鉄壁の構えを誇っていたかのような城壁の一角が崩れたように思えます(むむ。なんと大げさな)。
つまり、ここはさわってはいかん、さわることはできないもの、と先入観で思い込んでいたものが崩れたわけであります。
そうしますと。
まだいけるじゃないの?
ということに気が付きます。
stdlib.hもいらないのではないだろうか?

●#include <stdlib.h>を削除してみる

そこで今度は#include <stdlib.h>を削除してみました。
outtest5.hです。
これをコンパイルし、実行してLEDが10回点滅することを確認しました。

そういうことだったんだ。
やっと納得できた感じです。
めでたし、めでたしです。

ここで、この件は終わり、のつもりだったのでありますが…。
聡明な読者諸賢におかれましては、すでにお気づきのことと思います。

そうです。
そこまでやるのならば。
stdio.hだって、いらないのではないの?

●#include <stdio.h>を削除する

#include <stdio.h>も削除してしまいました。
outtest6.hです。
これをコンパイルし、実行してLEDが10回点滅することを確認しました。


おお。
実にすっきりしたプログラムになってしまいました。
最終的なリスト(outtest6.c)は上の画像に見えていますが、下にもリストとして表示いたします。

/* outtest6.c */

#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;
}

いかがでしたでしょうか?
このようにした結果、Ubuntu11.10でパラレルポート出力プログラムを書くにはこうすればよい、というところがすっきりと理解できたのではありませんでしょうか?

パソコンをつくろう![第272回]
2011.12.17upload

前へ
次へ
目次へ戻る
ホームページトップへ戻る