阅读:2086回复:8
请问:如何向打印口传递数据。
在VC中,我想直接传递数据给打印口,如何才能做到呢?最好能够提供例程,20分相送!
|
|
|
沙发#
发布于:2002-03-28 16:37
用户被禁言,该主题自动屏蔽! |
|
板凳#
发布于:2002-03-28 17:23
师兄,详细介绍一下嘛。
|
|
|
地板#
发布于:2002-03-28 19:34
根据你的需要,选择你需要的方式,并口地址(378,379,37a)
1、_outp, _outpw, _outpd 软出一个字节/一个字/双字节 2、_inp, _inpw, _inpd 读入一个字节/一个字/双字节 详细的并口资料,请访问http://asm.yeah.net |
|
|
地下室#
发布于:2002-03-28 20:02
先写个驱动,调用
Ke386IoSetAccessProcess Ke386SetIoAccessMap 授予Ring3直接IO的权限。 然后就可以了。 具体的函数说明你在网上查查看,我记不清了。 总之,这两个函数没有公开。 楼上说的不对,在NT下,Ring3不可能直接访问端口。 |
|
5楼#
发布于:2002-03-29 15:17
打印口是个.dll文件,如果是你自己写的,是不是可以自己加一个导出函数?我没试过
|
|
6楼#
发布于:2002-03-30 04:00
没有那麽麻烦吧!VC中使用CFile.createfile(\"lpt.....)就可!
|
|
|
7楼#
发布于:2002-03-31 23:18
并行口的访问有三中方式:spp方式,epp方式,ecp方式.
其中ecp方式我不太了解,好像和dma有关 spp方式和ecp方式可以直接通过i/o端口的访问来实现,在win98下不需要驱动程序. spp方式下有三个端口:数据端口,状态端口,控制端口,其中数据端口只能够单向传输数据,即只能向外写数据,读数据的时候仅仅是读回写 入数据端口的数据 epp方式比spp多了几个端口,且数据端口可以双向传输数据.特别是虽然此时对端口的访问是通过对的i/o读写来实现,但是在并行口的引脚的信号不再是一般的锁存器输出,或缓冲器输入,它更类似于一个处理器发出的访问信号.当然这种转变由接口控制芯片来完成的,用户不用预.因此在用这种方式访问并口时,要注意各个引脚信号的定义已经不同于spp方式下引脚信号的定义了,这样相应的硬件接口电路也就不同了. |
|
|
8楼#
发布于:2002-04-01 13:45
各位兄弟,我已经用下列代码实现了,谢谢!!
//支持立即打印 CPrintDialog dlg(FALSE); if(!AfxGetApp()->GetPrinterDeviceDefaults(&dlg.m_pd)) { continue; } unsigned long writeLen = 0, readLen = 0; HANDLE hPrt; hPrt = CreateFile(dlg.GetPortName(),GENERIC_READ|GENERIC_WRITE,0,NULL, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,//|FILE_FLAG_OVERLAPPED, NULL); if(hPrt == INVALID_HANDLE_VALUE) { AfxMessageBox(\"无法打印!\"); continue ; } WriteFile(hPrt,sPrintBuffer,iPrintBufLen,&writeLen,NULL); CloseHandle(hPrt); 可惜不知道设置打印端口超时函数是啥,打印机没接就会锁死...BTW,分数少,不够分,大家凑合一下吧,呵呵。 |
|
|