WindowsCE5.0でパラレルポートを使用する

CEで、自作のデバイスをパラレルで接続して使用する場合の方法です。
本来であれば、CreateFile()を使用して、「LPT1:」などを開くところですが Platform Builderに付属の標準ドライバを使用したところうまくデータの出力ができませんでした。
その為、Win9x系の頃を思い出す方法を使用します。
XPや2000などで使用したい場合は、こちらなどを参考にしてください。

_inp()
_outp()
を使用します。
注意点は、ヘッダファイルが違うということです。
OSイメージはフルカーネルモードとかでビルドしなくても大丈夫なようです。CEでは通常に使えるみたいです。

では、サンプルです。

#include <stdio.h>
#ifdef WINCE
#include <ddkmacro.h> //CEの場合はこちら
#else
#include <conio.h> //他のWindowsではこちら
#endif

int _tmain(int argc, _TCHAR* argv[])
{
int out = 0xAA;
int in = 0;

_outp(PARALLEL_CONTROL_PORT,0x0); //出力モードへ変更
_outp(PARALLEL_DATA_PORT,out); //出力
_tprintf(TEXT("out:0x%x\n"),out);

_outp(PARALLEL_CONTROL_PORT,0x20); //入力モードへ変更
in = _inp(PARALLEL_DATA_PORT); //入力
_tprintf(TEXT("in:0x%x\n"),in);

return 0;
}

上記の状態だとx86系でしかビルドができないので下記の関数に変更するとMIPSIIやSH系でもビルドできるようになります。
WRITE_PORT_UCHAR()
READ_PORT_UCHAR()