xiaxueyi
驱动小牛
驱动小牛
  • 注册日期2004-06-24
  • 最后登录2006-12-14
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望122点
  • 贡献值0点
  • 好评度122点
  • 原创分0分
  • 专家分0分
阅读:1100回复:1

tangwise,以前的并口通信问题如何解决的?

楼主#
更多 发布于:2004-06-24 13:47
tangwise:
  你好,看见你关于并口通信的贴子,向您请教一下,不知道你最后如何解决的?
谢谢。

最新喜欢:

wm_createwm_cre...
xiaxueyi
驱动小牛
驱动小牛
  • 注册日期2004-06-24
  • 最后登录2006-12-14
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望122点
  • 贡献值0点
  • 好评度122点
  • 原创分0分
  • 专家分0分
沙发#
发布于: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);//吵死你,呼呼
游客

返回顶部