如何测试并口

如何测试并口,第1张

电脑并口测试盒的制作方法及测试程序下载!

不知各位是否遇到像我这样的尴尬情况,辛辛苦苦花了大半天的工夫和一大把接口芯片银子把HP6L修好。(HP6L不联机)。客户把电脑搬来要求试打一下, 天啦,刚刚修好的机子又不打了。(在维修部的电脑上试了N次都可以的)。是什么原因?客户电脑的并口有短路。真是赔了夫人又折兵,打落牙齿往肚里吞。

各位修打印机的朋友是怎样测试电脑并口的,反正这支前我是用3200+试的,因此损失了不少的74LS05,好在74LS05又多又便宜。但经常拆机总是很烦。好了,废话少说,还是把程序上传上来供大家参考!

测试盒制作方法:

相信大家都有那么几根不通的并口打印线吧。什么,扔了,那你就亏大了,你需要花3块大洋买一根新的,而且更痛心的是我还要你把它从接电脑那头边根剪断,(够狠的吧)

然后按下面的顺序用导线连好。

1-----------13

2-----------15

14----------12

16----------10

17----------11

如果下图画红筐的全是PASS,恭喜你,可以放心的接打印机^_^

如果下图画红筐的其中有一个是fail,请千万不要接打印机,请先维修电脑主板并口!

并口

IEEE 1284 Standard在1994年为并口传输定义了5种模式:

1) Compatibility Mode兼容模式

2) Nibble Mode 半字模式

3) Byte Mode 字节模式

4) EPP 增强型并口模式

5) ECP 扩展并行口

并口的硬件连接器为DB25,被分成了三组,如下图

1) Data lines (data bus) 数据线

2) Control lines 控制线

3) Status lines 状态线

数据线用来传输数据,控制线用来控制外围设备,外围设备通过状态线返回状态信号,这些线分别与内部的数据寄存器,控制寄存器和状态寄存器相连。

DB25管脚信号如下:

Pin No (DB25)

Signal name

Direction

Register - bit

Inverted

1

nStrobe

Out

Control-0

Yes

2

Data0

In/Out

Data-0

No

3

Data1

In/Out

Data-1

No

4

Data2

In/Out

Data-2

No

5

Data3

In/Out

Data-3

No

6

Data4

In/Out

Data-4

No

7

Data5

In/Out

Data-5

No

8

Data6

In/Out

Data-6

No

9

Data7

In/Out

Data-7

No

10

nAck

In

Status-6

No

11

Busy

In

Status-7

Yes

12

Paper-Out

In

Status-5

No

13

Select

In

Status-4

No

14

Linefeed

Out

Control-1

Yes

15

nError

In

Status-3

No

16

nInitialize

Out

Control-2

No

17

nSelect-Printer

Out

Control-3

Yes

18-25

Ground

-

-

-

并口寄存器:

数据,控制,状态线分别与计算机内部相配的寄存器相连,所以可以通过编程来 *** 作这些寄存器,可以通过’C’或者’BASIC’语言轻松读写并口。

标准并口寄存器有:

1) data register数据寄存器

2) Status register 状态寄存器

3) Control register控制寄存器

通过写这些寄存器,将在相应线上传输相应的电压信号,可以通过万用表来测量,给并口的这些信号也可以通过这些寄存器读出来,例如:我们写入”1”到数据寄存器,Data0将被提高为+5V电压,这样,我们就可以通过编程打开或关闭数据线或控制线。

这些寄存器在哪里?

在IBM PC中,这些寄存器是IO映射的,并且是唯一的地址,典型的PC上,LPT1的基地址是0x378,LPT2的基地址是0x278,LPT3的基地址是0x3bc。

数据寄存器在基地址上,状态寄存器在基地址+1控制寄存器在基地址+2,因此,当我们一旦知道基地址,我们可以通过计算出其他寄存器的地址

Register

LPT1

LPT2

LPT3

data registar(baseaddress + 0)

0x378

0x278

0x3bc

status register (baseaddress + 1)

0x379

0x279

0x3Bd

control register (baseaddress + 2)

0x37a

0x27a

0x3be

编程规范:

几乎所有的编程语言都提供一些库函数来存取并口,例如:Borland C 提供了"Inportb" 和 "Outportb" 函数去读或写外部设备的IO映射地址。此教程提供了VC的例子,但是很容易移植到其他编译器如:Borland C和TC。VB不直接提供对并口的存取函数,但是可以通过DLL很容易增加这个功能,VC提供两个函数存取外围设备的IO映射,“_inp”读,”_outp”写。这些函数在“conio.h”中声明。

简单硬件测试程序:

VC++范例:

第一步:建立工程:

点完成后在example.cpp中输入代码:

#include "stdafx.h"

#include "conio.h"

#include "stdio.h"

#include "string.h"

#include "stdlib.h"

int main(int argc, char* argv[])

{

short data

if(argc<2)

{

printf("Usage\n\n")

printf("partest1.exe ,,\n\n\n")

return 0

}

if(!strcmp(argv[1],"read"))

{

data = _inp(atoi(argv[2]))

printf("Data read from parallel port is ")

printf("%d\n\n\n\n",data)

}

if(!strcmp(argv[1],"write"))

{

_outp(atoi(argv[2]),atoi(argv[3]))

printf("Data written to parallel port is ")

printf("%s\n\n\n\n\n",argv[3])

}

return 0

}

编译这个程序,并将其复制到"c:\"

如何测试程序?

连接硬件,打开命令提示框,切换到C: 输入:partest1.exe write 888 255按下回车,如果所有都正确,那么LED1-LED8都会发光,这里的888是0x378,即LPT1的基地址(数据寄存器)。255是写入数据寄存器的数据,如果输入“partest1 read 888”程序将从并口读出数据寄存器的值并显示。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/10970469.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-12
下一篇 2023-05-12

发表评论

登录后才能评论

评论列表(0条)

保存