http://mubo814.bokee.com/inc/PortTalk.rar
在工程目录下拷进这两个文件:PortTalk.sys;PortTalk.h 。这两个文件已经放在附件里了。直接调用PortTalk.h里面的函数即可操作PC的任意地址,并口地址基址为0x378,以下是一个范例:
OpenPortTalk(); //打开地址操作
outportb(0x378,0xaa); //向并口数据寄存器写0xaa;
inportb(0x379); //读并口状态寄存器;
ClosePortTalk(); //关闭地址操作
我实验了一下,并口在ECP/EPP模式下不可以从外部数据线上读入数据,在BIOS里把并口模式改为EPP就可以了,让EPP读外部数据的操作方法如下:
EPP模式下控制口中有一个决定EPP数据口输入输出的位:第5位,把这一位写1则可以从外部读入数据,写0则EPP是输出数据的。程序如下:
//-----------------------读外部数据
static CtrlWord;
CtrlWord = inportb( 0x37A );
CtrlWord |= 0x20;
outportb(0x37A, CtrlWord);
Edit1->Text = "0x" + IntToHex(inportb( 0x37C ),0);
//------------往外输出
static i;
static CtrlWord;
CtrlWord = inportb( 0x37A );
CtrlWord &= 0xDF;
outportb(0x37A, CtrlWord);
i = StrToInt( Edit4->Text );
outportb(0x37C,i);
其中,EPP的数据口地址为0x37C,即基址0x378 + 4,我试了一下,其实用0x37C和0x378是一样的结果。
tengjingshu_112148725 2009-3-30 09:19