CEで、自作のデバイスをパラレルで接続して使用する場合の方法です。
本来であれば、CreateFile()を使用して、「LPT1:」などを開くところですが Platform Builderに付属の標準ドライバを使用したところうまくデータの出力ができませんでした。
その為、Win9x系の頃を思い出す方法を使用します。
XPや2000などで使用したい場合は、こちらなどを参考にしてください。
_inp()
_outp()
を使用します。
注意点は、ヘッダファイルが違うということです。
OSイメージはフルカーネルモードとかでビルドしなくても大丈夫なようです。CEでは通常に使えるみたいです。
では、サンプルです。
上記の状態だとx86系でしかビルドができないので下記の関数に変更するとMIPSIIやSH系でもビルドできるようになります。
WRITE_PORT_UCHAR()
READ_PORT_UCHAR()
<Category : C/C++>
本来であれば、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[])
{
#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;
}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()