阅读:1100回复:1
tangwise,以前的并口通信问题如何解决的?
tangwise:
你好,看见你关于并口通信的贴子,向您请教一下,不知道你最后如何解决的? 谢谢。 |
|
最新喜欢:wm_cre... |
沙发#
发布于:2004-06-24 13:54
曾经看见过一篇文章,如下,但是我的writeFile就是不能正常进行。我不知道是不是要将11、12脚接地?谁以前做过啊?
其实并口通信比串口通信更简单。 : 关于并行口(25针)针脚的定义可参见PC_CLUB版精华区“与硬件有关的东东” : 目录下的“串、并行口针脚的定义”一文,其中数据位0到数据位7分别对应于 : 针脚2到针脚9。 : 从并口发送和接收一个字节数据可通过读写I/O端口完成,与并口有关的 : 端口有3个,默认的地址是378H、379H、37AH,由于并口主要用来与打印机 : 连接,所以这3个端口的功能也是为控制打印机设计的,若用于通信,可从 : 378H发送和接收数据,另两个口作为握手信号用。 : 如果用VC编程,不必编.DLL,因为VC中可以直接读写I/O端口(当然只能在 : Win95/98下)。 补充一点吧。。。 虽然在NT环境下,内核安全模式禁止直接对端口进行操作。但在用VC++编程时, 可以利用NT的API函数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_READIDENERIC_WRITE,0, NULL,OPEN_EXISTING,NULL,NULL); //如果文件句柄无效 if(hFile==INVALID_HANDLE_VALUE) { AfxMessageBox("老板,LPT或者LPT1还没打开啊,别骂偶啊:P"); } } else { for(int i=0;i<16;i++) pOut='a'; //发送数据 if(!WriteFile(hFile,pOut,16,&number,NULL)) { AfxMessageBox("数据传输时死翘翘乐。。。"); break; } else { UpdateData(FALSE); } } //通知用户过程结束 Beep(800,600);//吵死你,呼呼 |
|