搜索
bottom↓
回复: 112

电脑并口(打印机接口)资料收集及编程示例 【恢复】

[复制链接]
头像被屏蔽

出0入0汤圆

发表于 2008-12-2 20:02:48 | 显示全部楼层 |阅读模式


图1:电脑侧打印口示意图 (原文件名:200832573749798.jpg) 





并口彩图 (原文件名:Ppdb25.png) 





软件对应引脚 (原文件名:Softwarepinout.png) 







 (原文件名:1222.gif) 







表中名称前有斜杠的表示低电平有效,寄存器位代表该引脚在8位寄存器中对应的位置。打印口有3个端口:数据端口、状态端口和控制端口,对应的3个寄存器地址分别为:378H、379H和37AH。其中378H可以写,部分电脑通过配置控制寄存器的第5位为1时可以读,部分电脑则不能读,只能写。37AH可读可写,而379H为只读端口。










并口用作电脑打印机接口时,打印口各引脚的定义:



1.     选通,                PC->Printer

2-9.   数据(D0-D7)        

10 .   应答(ACK),                    Printer->PC

11.    忙(BUSY),                     Printer->PC

12.    无纸(PE),                     Printer->PC

13.    联机(SLCT),                   Printer->PC

14.    自动换行(AUTO FD),   PC->Printer

15.    错误(ERROR),                  Printer->PC

16.    初始化(INIT),        PC->Printer

17.    选择输出(SELECT IN)  PC->Printer

18-25. 地(GND) 








在雕刻机软件 mach2 的端口与引脚设置里,以下5条引脚是作为输入脚的: 10,11,12,13,15

以下的12条脚,作为输出脚:1,2,3,4,5,6,7,8,9,14,16,17








直接访问和控制电脑的打印口(并行口)

for Windows 98/ME/NT/2000/XP/2003



Victor Chen, (C++ 爱好者)





--------------------------------------------------------------------------------

本程序利用直接端口 I/O 操作来访问并行口。

支持操作系统: Windows 98/ME/2000/XP/2003

程序编译环境: C++ Builder 5.0 / C++ Builder 6.0。



程序演示了:

① 直接向打印机输出数据, 这种方法可以行为单位打印, 每打印一行, 纸走一行的距离。

② 直接控制打印口输出脉冲信号, 输出如右图所示的 LED 循环轮流点亮/闪烁。

  



--------------------------------------------------------------------------------





 (原文件名:12345.gif) 



--------------------------------------------------------------------------------



程序提供了 TParallelPort 类, 可直接对打印口操作。



属性:

__property unsigned short Base; //并行口的开始地址, 默认值为 0x378

__property unsigned char  Data; //并行口的数据 D0-D7, 可读写

__property unsigned char  Flag; //并行口的状态, 包括 ~BUSY, ACK, PE, ONLINE, ~ERROR 等, 这个属性是只读的

__property unsigned char  Ctrl; //并行口的状态, 包括 ~INIT, AUTOFD, STORE 等, 这些属性是可写的。



Flag 的各个位的定义:

enum TPrnFlags

{

  pfIdle    = 0x80, //F7 = ~BUSY

  pfAck     = 0x40, //F6 = ACK

  pfPE      = 0x20, //F5 = PE

  pfOnLine  = 0x10, //F4 = ONLINE

  pfNoError = 0x08, //F3 = ~ERROR

};



Ctrl 的各个位的定义:

enum TPrnCtrls

{

  pcIRQE   = 0x10, //C4

  pcSelect = 0x08, //C3

  pcFInit  = 0x04, //C2 = ~INIT

  pcAutoFD = 0x02, //C1

  pcStore  = 0x01, //C0 = STORE

};



__property bool NoException; //这个属性是控制打印的, 默认为 false, 如果这个属性为 true, 打印不会抛出异常, 而是返回错误码





事件: 

__property bool __fastcall (__closure *OnMakeSure)(TPrnError ErrCode); //产生错误时会触发这个事件, 默认的处理是询问是否重试





错误代码:

enum TPrnError

{

  peNoError = 0,

  peNotOnLine = -1,

  peOutOfPaper = -2,

  pePrinterErr = -3,

}; 



方法:

int printf(const char *format,...); //参数与标准 C 的 printf 相同, 返回值为错误码, 这个函数是从打印机输出数据 

int vprintf(const char* format, va_list paramList); //参数与标准 C 的 vprintf 相同, 这个函数是从打印机输出数据

void InitPrinter(int iInitDelay=2000, int iInitWait=1000); //初始化打印机, 两个参数分别是初始化时间和初始化之后的延时(ms) 





程序还提供了以下函数, 是大家所熟悉的端口操作函数, 可直接操作电脑的硬件端口, 这些函数可直接使用:



unsigned char  inportb(unsigned short);

unsigned short inportw(unsigned short);

unsigned long  inportd(unsigned short);

void outportb(unsigned short, unsigned char );

void outportw(unsigned short, unsigned short);

void outportd(unsigned short, unsigned long ); 





--------------------------------------------------------------------------------



程序采用 Yariv Kaplan 的 WinIo 2.0 来进行端口操作。

Yariv Kaplan 的主页: http://www.internals.com/



WinIo 2.0 使用非常简单, 提供一个初始化函数 InitializeWinIo(); 和 关闭结束函数 ShutdownWinIo();

在调用初始化函数成功之后, 就可以进行任意端口操作了, 在程序结束时调用关闭结束函数。





--------------------------------------------------------------------------------



相关下载: WinIo 2.0 (含源代码和帮助) ourdev_526457.zip(文件大小:195K) (原文件名:winio_20.zip) 

直接操作并行口 - 下载完整的程序源代码ourdev_526458.rar(文件大小:184K) (原文件名:prnport_bcb_src.rar) 

出0入0汤圆

发表于 2009-1-14 09:46:23 | 显示全部楼层
【25楼】 wenming 

 

大哥能否提供图片中这块板的资料,链接吗

本贴被 au730 编辑过,最后修改时间:2009-01-14,09:47:35.

出0入0汤圆

发表于 2008-12-19 20:11:23 | 显示全部楼层
wenming



怎么说,可否再图上标出来?

我知道ISA可以直接用于扩展并口,PCI如何实现?我指在不另外插卡的前提下。

出0入0汤圆

发表于 2008-12-19 10:09:11 | 显示全部楼层
真是好东西,收下了,还好我的T23还有并口

出0入0汤圆

发表于 2008-12-10 21:19:12 | 显示全部楼层
【23楼】 cjq0728

积分:6

派别:

等级:------

来自:

        晕啊,现在用的电脑没并口啊,真的用并口的话,买了阿莫的机子怎么用啊



-----------------------------------------------------------------------------



没并口就找PCI转接卡用呀。

本贴被 jjj206 编辑过,最后修改时间:2008-12-10,21:20:08.

出0入0汤圆

发表于 2008-12-6 21:23:23 | 显示全部楼层
记号

出0入0汤圆

发表于 2008-12-6 20:38:04 | 显示全部楼层
 标记!

出0入20汤圆

发表于 2008-12-5 18:07:08 | 显示全部楼层


 (原文件名:SBC.jpg) 



提另外一个可行的方法.上图的单板机的SUPER IO 芯片包括并口,串口等,是挂在LPC或者PCI总线上的.
头像被屏蔽

出0入0汤圆

 楼主| 发表于 2008-12-5 17:58:04 | 显示全部楼层
【23楼】 cjq0728  晕啊,现在用的电脑没并口啊,真的用并口的话,买了阿莫的机子怎么用啊  

---------------------------------------

你得学会向现实妥协: 目前国内玩雕刻机,基本上全部是玩并口的。国外也基本如此。



基本上可以这样下结论:要玩雕刻机,就要有并口。



我们迟些会试图自行开发USB的上位机软件。不过这是一个庞大的系统工程,不是短时间就能实现的。

出0入0汤圆

发表于 2008-12-5 17:50:44 | 显示全部楼层
晕啊,现在用的电脑没并口啊,真的用并口的话,买了阿莫的机子怎么用啊

出0入0汤圆

发表于 2008-12-5 13:46:31 | 显示全部楼层
快要消失的并口。

出0入0汤圆

发表于 2008-12-2 23:33:56 | 显示全部楼层
如果能实现外部事件驱动,而不是轮巡的方法就好了,轮巡实在是太占CPU,并且不容易做到实时处理

出0入0汤圆

发表于 2008-12-2 22:47:50 | 显示全部楼层
并口是越来越少了 虽然并口操作很爽的说

出0入0汤圆

发表于 2008-12-2 21:49:55 | 显示全部楼层
好资料

出0入0汤圆

发表于 2008-12-2 21:40:30 | 显示全部楼层
现在能用MACH3的电脑基本都是EPP,ECP模式的。这给扩展PCI LPT卡的双并口方案多了一些选择,如果愿意,可以有较多的输入脚。



MACH 3 好像设置端口方向的,这个可找熟悉MACH3的人问一下。

出0入0汤圆

发表于 2008-12-2 20:54:59 | 显示全部楼层
好资料啊,可惜现在电脑带并口的少得可怜了啊!

出0入0汤圆

发表于 2008-12-2 20:53:17 | 显示全部楼层
要找电脑并口资料,可搜索Supper I/O Datasheet

出0入0汤圆

发表于 2008-12-2 20:45:29 | 显示全部楼层
兼容性或其他考虑吧。并不是所有电脑都有EPP,ECP模式的
头像被屏蔽

出0入0汤圆

 楼主| 发表于 2008-12-2 20:16:24 | 显示全部楼层
【1楼】 qwert ,



你说2-9脚,在SPP模式下是输出方向。 在EPP,ECP模式下为可控双向?



MACH2软件可以使用ECP端口的。按你这么说,它的2-9脚应该是可控的双向,即可以作输出,也可以做输入。 为何MACH2只用它们做输出脚?

出0入0汤圆

发表于 2008-12-2 20:14:14 | 显示全部楼层
在SPP模式下是单向,在EPP和ECP模式下为可控双向

出0入0汤圆

发表于 2008-12-5 11:53:10 | 显示全部楼层
mark

出0入0汤圆

发表于 2008-12-4 09:35:26 | 显示全部楼层
这里有个可以直接用C51控制电脑并口的软件,不会VC,BCB等高级语言的可玩玩



点击此处下载 ourdev_528058.rar(文件大小:580K) (原文件名:Virtual51.rar) 

出0入0汤圆

发表于 2008-12-4 08:24:19 | 显示全部楼层
从来没有标记过,这个一定要标记一下。同时顶一下,在网上搜并口的资料很少的!

出0入0汤圆

发表于 2008-12-4 08:08:27 | 显示全部楼层
顶一个

出0入0汤圆

发表于 2008-12-5 08:15:37 | 显示全部楼层
用并口,不如直接使用PCI。

出0入0汤圆

发表于 2008-12-3 22:58:08 | 显示全部楼层
现在并口真的少见了,不过好像USB的实时性不如并口,学学还是有必要的

出0入0汤圆

发表于 2008-12-3 19:37:00 | 显示全部楼层
凑个热闹,发一本电子书<<并行端口大全>>。比较老的书了,加上现在有并口的电脑越来越少,玩并口的也少了。



点击此处下载 ourdev_527657.rar(文件大小:7.25M) (原文件名:并行端口大全.rar) 

出0入0汤圆

发表于 2008-12-3 17:04:56 | 显示全部楼层

出0入0汤圆

发表于 2008-12-3 12:51:48 | 显示全部楼层
mark

出0入0汤圆

发表于 2008-12-3 12:44:11 | 显示全部楼层
还有一幅

已经被阿莫更新到楼主位。

出0入0汤圆

发表于 2008-12-3 12:42:13 | 显示全部楼层
上传一个好看的彩图

已经被阿莫更新到楼主位。

出0入0汤圆

发表于 2009-3-1 08:36:50 | 显示全部楼层
好资料,谢了!

出0入0汤圆

发表于 2009-3-1 11:57:46 | 显示全部楼层
收藏了

出0入0汤圆

发表于 2009-3-4 20:40:47 | 显示全部楼层
收藏一个

出0入0汤圆

发表于 2009-3-5 10:18:49 | 显示全部楼层
收下

出0入0汤圆

发表于 2009-3-5 10:19:42 | 显示全部楼层
好贴,收藏。

出200入0汤圆

发表于 2009-3-13 21:22:59 | 显示全部楼层
收下

出0入0汤圆

发表于 2009-3-14 08:56:53 | 显示全部楼层
脚印

出0入0汤圆

发表于 2009-3-15 14:48:19 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-3-15 18:22:32 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-3-16 10:07:16 | 显示全部楼层
标记!

出0入0汤圆

发表于 2009-3-18 19:36:44 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-3-18 19:50:50 | 显示全部楼层
强大的说明。。。

不过买个PCI转并口卡,也不过20多元而已。

出0入0汤圆

发表于 2009-3-18 20:42:22 | 显示全部楼层
MARK

出0入0汤圆

发表于 2009-3-19 16:05:47 | 显示全部楼层
学习

出0入0汤圆

发表于 2009-3-19 16:51:23 | 显示全部楼层
MARK

出0入0汤圆

发表于 2009-3-19 16:51:26 | 显示全部楼层
MARK

出0入25汤圆

发表于 2009-3-19 16:52:49 | 显示全部楼层
Mark!

出0入0汤圆

发表于 2009-3-20 02:34:30 | 显示全部楼层
如果无法找到并口可采用USB转并口芯片,非常容易实现端口的双向操作而且无需绕开XP的限制。我觉得这个部分的控制难度主要是在脉冲延时上,可有人计算过16细分的情况下IO的频率,然后用何种延时函数可以实现?如果128细分呢?

出0入0汤圆

发表于 2009-4-10 15:35:15 | 显示全部楼层
并口彩图

是用什么搞出来的

很漂亮

出0入0汤圆

发表于 2009-6-3 15:21:20 | 显示全部楼层
对我的打印机项目有帮助
收下

出0入0汤圆

发表于 2009-6-3 16:15:31 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-7-2 19:16:07 | 显示全部楼层
mark

出10入10汤圆

发表于 2009-7-2 20:38:41 | 显示全部楼层
我也收集了许多资料,就是一直没动手。

出0入0汤圆

发表于 2009-7-2 21:33:15 | 显示全部楼层
用USB转并口接雕刻机可行吗?有经验的大侠给点看法哦.

出0入4汤圆

发表于 2009-7-8 20:12:54 | 显示全部楼层
收藏

出0入0汤圆

发表于 2009-7-8 20:14:07 | 显示全部楼层
记号一下

出0入0汤圆

发表于 2009-7-9 23:14:40 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-7-10 14:38:25 | 显示全部楼层
会好好保存的     谢谢

出0入0汤圆

发表于 2009-9-26 11:09:59 | 显示全部楼层
mark 研究中...

出0入0汤圆

发表于 2009-11-13 17:33:33 | 显示全部楼层
收藏

出0入0汤圆

发表于 2009-12-23 10:42:07 | 显示全部楼层
这边能人太多了,值得这这里转转

出0入0汤圆

发表于 2009-12-23 12:10:02 | 显示全部楼层
作标记。

出150入0汤圆

发表于 2009-12-23 15:00:04 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-12-23 19:35:00 | 显示全部楼层
是个不错的资料,谢谢

出0入0汤圆

发表于 2009-12-24 09:03:48 | 显示全部楼层

出0入0汤圆

发表于 2010-1-22 21:30:32 | 显示全部楼层
留个爪子

出0入0汤圆

发表于 2010-2-3 11:46:56 | 显示全部楼层
是个不错的资料,谢谢

出0入0汤圆

发表于 2010-2-3 11:52:45 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-2-8 23:19:21 | 显示全部楼层
到底什么样的PCI卡莫大的JJ可以用呢?

出0入0汤圆

发表于 2010-4-6 10:15:38 | 显示全部楼层
mark留印

出0入0汤圆

发表于 2010-4-6 10:16:54 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-7-12 21:08:25 | 显示全部楼层
mark留印

出0入0汤圆

发表于 2010-7-12 22:10:27 | 显示全部楼层
经典,实用

出0入0汤圆

发表于 2010-7-15 13:29:15 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-8-13 13:40:40 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-23 20:48:17 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-23 23:50:53 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-24 00:13:26 | 显示全部楼层
收藏。并口开发。

出0入0汤圆

发表于 2010-9-24 00:52:54 | 显示全部楼层
收藏!

出0入0汤圆

发表于 2010-9-24 11:59:23 | 显示全部楼层
记号

出0入0汤圆

发表于 2010-9-25 20:42:45 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-25 20:49:41 | 显示全部楼层
有用的资料 标记下

出0入0汤圆

发表于 2010-9-25 21:41:53 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-25 22:48:55 | 显示全部楼层
记号

出0入0汤圆

发表于 2010-10-9 16:47:54 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-10-9 19:42:07 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-10-9 20:56:29 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-10-10 12:54:32 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-11-3 12:40:36 | 显示全部楼层
不顶不行,早看到就好了!

出0入0汤圆

发表于 2010-11-4 01:29:23 | 显示全部楼层
呵呵,够老的帖子,既然来了就顶一下mark吧

出0入0汤圆

发表于 2011-3-28 19:20:57 | 显示全部楼层
很有用的帖子。来一次顶一下。

出0入0汤圆

发表于 2011-5-14 22:35:56 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-5-15 12:58:24 | 显示全部楼层
留下爪印

出0入0汤圆

发表于 2011-5-15 13:48:07 | 显示全部楼层
Mark!

出0入0汤圆

发表于 2011-6-3 08:46:12 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-3 13:42:43 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-3 14:01:14 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-9 18:38:32 | 显示全部楼层
并口很有用的资料。

出0入0汤圆

发表于 2011-7-9 19:06:22 | 显示全部楼层
回复【2楼】armok 阿莫
【1楼】 qwert ,
你说2-9脚,在spp模式下是输出方向。 在epp,ecp模式下为可控双向?
mach2软件可以使用ecp端口的。按你这么说,它的2-9脚应该是可控的双向,即可以作输出,也可以做输入。 为何mach2只用它们做输出脚?
-----------------------------------------------------------------------

的确是这样,以前我用过。印象不太深了,记得是某个寄存器的D5置为1时,就可以通过2-9读回。在SPP下,只有378H、379H、37AH,在EPP和ECP模式下又新增了几个端口。在这种条件下,CMOS里好像不能设置为SPP模式,要改成ECP+EPP模式。另外要注意,想用并口操作的话,那个PE(Paper Empty)要接好地。
mach2软件我没有用过,不知道它的原因。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-3 10:57

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表