编辑: 迷音桑 2019-07-01

var B:byte;

begin ASM MOV DX, Port;

IN AL, DX;

MOV B, AL;

END;

Result:=B;

end;

//写端口过程 procedure WritePort(Port:WORD;

ConByte:BYTE);

begin ASM MOV DX, Port;

MOV AL, ConByte;

OUT DX, AL;

END;

end;

//控制 LPT 口D0 数据,使之输出为

1 var B:byte;

CP+ CP- U/D+ U/D- PD+ PD- Pin

2 / Data

0 (Data) Pin

3 / Data

1 (Data) Pin

4 / Data

2 (Data) Pin

5 / Data

3 (Data) Pin

6 / Data

4 (Data) Pin

7 / Data

5 (Data) Pin

10 / NAck (Status) Pin

11 / Busy (Status) Pin

12 / Paper-out (Status) Pin

13 / Select (Status) Pin

25 / Ground CP+ CP- U/D+ U/D- PD+ PD- X 向步 进电机 控制放 大器 Y 向步 进电机 控制放 大器 X+过位 X-过位 Y+过位 Y-过位 PC 机LPT 端―34 ― 机电设备

2004 年第

4 期begin B:=ReadPort($378);

B:=B or $01;

WritePort($378,B);

End;

这样的代码在Win98 里是正常的,但在Win2000/XP 里会报错,因为 Win2000/XP 不能直接 对硬件进行操作,它是虚拟硬件层,NT 核心的 Windows(如NT4.

0、Win

2000、WinXP)的驱动不 是一个 VxD 就能实现的,而需要 WDM 驱动, 这样 就会加大难度.Porttalk 是一个很好的设备驱动,用 它能很方便地实现对底层端口的操作,建立一个 Porttalk.sys 的Delphi 接口函数 InPortB、OutPortB、 OpenPortTalk、ClosePortTalk 等以后,就可以很方 便地调用. //控制 LPT 口D0 数据,使之输出为

1 var B:byte;

Begin if not OpenPortTalk then exit;

B:=InPortB($378);

B:=B or $01;

OutPortB($378,B);

ClosePortTalk;

end;

//读取 LPT 口 ACK 状态数据 var B:byte;

Begin if not OpenPortTalk then exit;

B:=InPor........

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题