利用WinIo实现并口数据通信(2)

时间:2025-07-09

利用WinIo实现并口数据通信

 50计 算 机 与 现 代 化2009年第8期

行端口的目的。但是在Windows2000/XP/NT系统下,不能直接访问这些寄存器,只有借助WinIo来实现对这些寄存器的访问,

这正是本文要解决的问题。

图1 PC机中并行端口的体系结构

在通用PC机上,插口(,相对应,用这个插口可以实现PC机与外部设备的并行口互连。

根据并口标准IEEE1284的规定,并口有多种工作方式,也就是在PC机上的并行端口接口电路与外部设备通信的协议有所不同。协议的不同导致在PC机上控制的寄存器个数和寄存器各个位的定义不同。如早期的打印机就是用的兼容方式(CompatibilityMode),也称为SPP(StandardParallelPort)方式。在这种工作方式下,它只能从PC机向打印机单方向传送数据,并且每输出一个字节,都要用软件产生数据选通信号,从而实现数据传输的握手协议。数据传送率很低,一般为每秒100K到150K字节。随着计算机技术的发展,对速度的要求越来越高,同时希望数据的互传,随即出现了半字节方式(NibbleMode)、字节方式(ByteMode)、EPP方式(EnhancedParallelPort

[1,3]

Mode)、ECP方式(ExtendedCapabilityPortMode)。高级方式传输的速度越来越快,较早的工作方式使用软件来产生数据选通信号,实现传输协议,而如在ECP模式下,数据传输完全通过硬件自动完成,也就是由硬件实现数据传输中的握手协议。

在不同的工作方式下,传输协议是不同的,所以在实现数据通信时,应用程序必须根据不同的工作方式来编程。有的需要在应用程序中用软件实现传输协议,而有的工作方式只需控制数据寄存器,其余的由硬件自动完成。

通常有两种方法解决Windows2000/XP/NT下I/

[425]

O端口操作问题,一是编写一个运行在RING0级(设备驱动程序级)的虚拟设备驱动程序(c,VXD),它可以不受限制地访问硬件设备、捕获I/O端口操作和内存访问等,甚至可以截获硬件中断,这样就可以在USER方式下实现Windows2000/XP/NT下I/O端口的访问操作。I/O允许位图设置I/O端口。这允许I()按照I/O端口。

Io器和其它几种底层编程技巧,绕过了Windows系统的保护机制,从而允许在Windows2000/XP/NT下应用程序直接对I/O端口和物理内存进行操作。需要注意的是,在Windows2000/XP/NT下,WinIo函数库只允许被具有管理员权限的应用程序调用。WinIo程序库含有相应驱动程序的源代码和VisualC++例程,下载地址为:/utilities/winio.zip。

在WinIo函数库中,WinIo.DLL提供了一些函数

[6]

直接对I/O端口和物理内存进行操作。

3 在VC中借助WinIo实现并口操作

在VisualC++中,按照一般的工程建立的步骤,建立一个关于并行端口的数据传输工程后,还必须完成下面的操作才能对并口进行访问。

(1)将WinIo函数库中的winio.dll,winio.vxd和winio.sys

文件放到执行文件夹里;

(2)通过在VisualC++中的工作区间的工程名上单击右键和

选择“AddFilestoProject...”把winio.lib文件添加到工程中;

(3)在源代码文件中添加#include“winio.h”声明;(4)调用函数InitializeWinIo;

(5)调用库中的函数访问I/O端口和物理内存;(6)调用函数ShutdownWinIo。

在上面的步骤中,第5步还需要进一步细化,具体要完成的功能如下。3.1测试并行端口的存在

(1)对基地址对应的寄存器进行读写数据测试

2 WinIo简介

Windows2000/XP/NT对硬件实现了屏蔽,对I/O端口进行了严格的控制,许多在Windows9X下正

常运行的用户应用程序,在Windows2000/XP/NT中直接访问硬件会引起系统异常,因此不能在Windows2000/XP/NT下直接访问I/O端口。

端口的存在。

标准并口的地址为378H、278H或3BCH,在ECP、EPP及PS/2模式中,默认工作方式都是SPP模式,数据是单方向写。标准并行口基址(以下程序中以BasePortAddr表示)对应着数据寄存器,且该数据寄存器接有回卷寄存器,因此无论哪一种工作模式,该寄存器都是可以读写的,可以通过对该寄存器进行读写来加以判断的。

[7]

利用WinIo实现并口数据通信(2).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219