阅读:6122回复:9
怎样用VC++读写并口
本人刚涉入开发程序行列,没有找到相关资料,恳请高手多多赐教。在下深表衷心感谢!
|
|
最新喜欢:wm_cre... |
沙发#
发布于:2002-03-17 13:57
一般来说,对于打印口1(LPT1):数据寄存器地址0x378,状态寄存器地址0x379,控制寄存器地址0x37A,对于打印口2(LPT2):数据寄存器地址0x278,状态寄存器地址0x279,控制寄存器地址0x27A。以LPT1为例:
BYTE nRead,nWrite; nRead=_inp(0x379);//读状态寄存器 nWrite=0x80; _outp(0x37A,nWrite);//向控制寄存器写0x80 _outp(0x378,nWrite);//向数据寄存器写0x80 |
|
板凳#
发布于:2002-03-18 20:08
带索引的端口的访问
BTYE bIndex,bData; //Read I/O _outp(0x3c4,bIndex); bData = _inp(0x3c5); //Wrtie I/O _outp(0x3c4,bIndex); _outp(0x3c54,bData); _outp()和_inp()可以采用汇编语言定义一个函数 |
|
|
地板#
发布于:2002-03-21 14:58
在windows下可以利用 CreateFile和WriteFile对并口进行操作。应该注意,必须将DB25输入插座的11脚和12脚接地,否则,操作将不能顺利进行。此两脚分别对应打印机的BUSY和PE(纸尽)信号。 源程序如下:
... HANDLE hFile;//定义文件句柄 CString m_LPTString=_T(\"LPT1\"); BYTE* pOut=new BYTE[16]; DWORD number; //获取文件句柄 hFile=CreateFile(m_LPTString, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, NULL, NULL); //如果文件句柄无效 if(hFile==INVALID_HANDLE_VALUE) { AfxMessageBox(\"Invalid LPT or LPT1 is not open\"); } else { for(int i=0;i<16;i++) pOut=\'a\'; //发送数据 if(!WriteFile(hFile,pOut,16,&number,NULL)) { AfxMessageBox(\"Fail to send data.\"); } else { UpdateData(FALSE); } } //通知用户过程结束 Beep(800,600); |
|
|
地下室#
发布于:2002-03-22 11:49
对于大家的帮助真是非常感谢!!!
|
|
5楼#
发布于:2002-03-22 11:54
请问高手,如何做到消息驱动对并口的读?多谢!
|
|
6楼#
发布于:2003-11-02 11:46
看你楼上给位大虾的看法,真是获易良多。我也正在写并口驱动。
但是在win2000下不能用in 和out。只能构造iorang类。。 谁是这方 面的高手。一定要指教小弟下;;;qq22493208 |
|
|
7楼#
发布于:2003-11-02 17:03
win2k下无法直接通过_inp(),outp()访问io端口。如果不用readfile()和writefile()的话,可以去网上down一些现成的驱动来调用。比如说有一个dll叫inpout32.dll,它提供两个函数inp32()和outp32(),调用这两个函数的话就可以写出在win9x/nt下通用的并口读写程序。给你两个有用的网址:www.logix4u.net
www.lvr.com/parport.htm |
|
8楼#
发布于:2004-06-24 14:19
如果用readFile和WriteFile应该如何操作?必须将11、12管脚接地吗?
|
|
9楼#
发布于:2005-03-16 11:16
inpout32.dll的源代码是怎么写的?有没有高手指点一下啊
|
|
|