私の学校では、私のプロジェクトはLEDライトを制御する簡単なプログラムを作成することです
私の教授は、outp()はconio.hにあると言いましたが、conio.hは標準的なものではないことを私は知っています。
outp()の例
//assume that port to be used is 0x378
outp(0x378,1); //making the first LED light
前もって感謝します
私の学校では、私のプロジェクトはLEDライトを制御する簡単なプログラムを作成することです
私の教授は、outp()はconio.hにあると言いましたが、conio.hは標準的なものではないことを私は知っています。
outp()の例
//assume that port to be used is 0x378
outp(0x378,1); //making the first LED light
前もって感謝します
/dev/port
書き込み権限がある限り、Linux のユーザー空間からこれを行うことができます/dev/port
(root または書き込み権限を持つユーザー)。シェルで次のように実行できます。
echo -en '\001' | dd of=/dev/port bs=1 count=1 skip=888
(10 進数の 888 は 16 進数の 378 であることに注意してください)。私はかつて、Linux 用の動作するパラレル ポート ドライバーを完全にシェル スクリプトでこのように書きました。(ただし、かなり遅かったです!)
次のように、Linux の C でこれを行うことができます。
f = open("/dev/port", O_WRONLY);
lseek(f, 0x378, SEEK_SET);
write(f, "\01", 1);
明らかに、追加#include
とエラー処理。
あなたは2つのことを混同しています。コンパイラは、OS 用のプログラムを作成します。学校のプロジェクトで DOS 用のプログラムを作成しました。outp(0x378,1);
基本的にDOS機能です。パラレルポートに書き込みます。他のオペレーティング システムでは、他のコマンドを使用します。
GCC は、複数のオペレーティング システムを対象とするコンパイラです。各 OS で、GCC はそのシステムの特定のヘッダー ファイルを使用できます。
通常はもう少し複雑になります。DOS は一度に 1 つのプログラムを実行するため、 port の競合はありません0x378
。他のほぼすべての OS は、はるかに多くのプログラムを同時に実行するため、最初に誰がそれを取得するかを把握する必要があります。
パラレル ポートへの書き込み方法は、コンパイラではなく OS に依存します。/dev/lp1
Linux では、 PC ハードウェアのポート 0x0378 にあるパラレル ポート用の適切なデバイス ファイルを開きます。
次に、MS docs for を_outp
解釈すると、値が 1 の 1 バイトをパラレル ポートに書き込みたいと思われます。それだけです
FILE *fp = fopen("/dev/lp1", "wb");
// check for errors, including permission denied
putc(1, fp);