- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
并行接口程序设计
并行接口程序设计
本章介绍在Windows 2000/XP下的并行接口直接I/O方式
并行接口的编程在不同的操作系统下采取不同的方法,在DOS和Windows95之前的操作系统下,可以直接对端口进行读写,根据并行接口的不同模式的寄存器进行读写操作就可以完成各种模式的接口编程。
在目前的Windows 2000/XP操作系统下,不能直接对端口寄存器进行访问,这是由于Windows2000/XP对系统底层操作采取了屏蔽的策略,对用户而言,系统变得更为安全,但这却给接口和接口软件开发人员带来了不小的困难,因为只要应用程序中涉及到底层的操作,开发人员就不得不深入到Windows的内核去编写属于系统级的设备驱动程序。对并行口的读写操作就是如此,由于Windows对系统的保护,应用程序不允许直接I/O操作。
indows2000/XP操作系统下,正规的接口程序的编程方法(Device Development Kit:设备驱动程序开发包)Inpout32
Inpout32:由LOGIX4U提供的免费软件,可以在/网站下载。
Inpout32提供了以DLL文件和AxtiveX的OCX文件两形式提供了直接访问I/O端口的函数,在文件中只封装了2个函数,Inp32( )和Out32( )。支持从Windows 95/98/Me到Windows NT/2000/XP的多种操作系统。
Inpout32只提供对I/O端口的访问,不针对具体的接口类型,原则上可以完成所有面向寄存器访问编程的应用程序。但Inpout32没有提供中断的支持,所以只能完成以查询控制方式的程序,不能实现中断控制方式的程序设计。这可能会影响接口的传输速度,同时也使得软件的CPU占用率很高。
很可贵的是,在下载的软件包中提供了DLL和OCX文件的VC++源程序代码,这对于开发接口相关的DLL程序和OCX控件程序很有参考价值。
TVicPort
EnTech提供了用于接口编程的多个软件产品,包括TVicTW32、TVicLPT和TVicPort等,这些软件可以在EnTech的网站/dev/index.shtm上获得,其中TVicPort是一个免费的软件,是TVicHW32的简化版。
TVicPort是需要安装的,默认的目录是C:\TVicPortPersonal,在该目录下有Docs和Samples两个目录,分别是说明文件和程序例子源文件。核心模块被安装到了系统目录。
TVicPort功能说明
TVicPort的功能包括:
直接I/O访问;
通过一个指针将物理存储器影射用户程序的存储空间;
增强对并行接口的支持,可以直接控制和检测并行端口的信号线;
提供获得IDE硬盘的制造商信息的函数,如硬盘序列号,可以实现软件的硬盘邦定;
支持Windows XP 64bit。
TVicPort提供的核心模块文件包括icPort.sys、TVicPort.vxd、TVicPort.dll和TVicPort.ocx四个。其中TVicPort.vxd是用于Windows 9x/ME的虚拟设备驱动程序,TVicPort.sys是用于Windows 2000/XP的内核模式驱动程序,DLL和OCX是应用程序接口模块,实现应用程序与设备驱动程序的连接。虽然TVicPort支持多种语言平台,但DLL函数更适合用于VC++编程,而OCX文件适合用于VB编程。
TVicPort提供两种对于端口的访问方式,即“Hard”和“Soft”方式,其中“Soft”方式的读写速度比较快,但当被读写的端口地址被另一个内核模式驱动程序占用时会访问失效。而“Hard”方式可以避免这种情况,即使端口被另一个内核模式驱动程序占用也能完成可靠的读写,但其访问速度比“Soft”方式慢。函数默认的访问方式是“Hard”方式,可以使用SetHardAccess( )函数更改访问方式。TVicPort的DLL函数
下面介绍TVicPort的DLL文件提供的VC++接口函数。TVicPort.h中,在VC++中加入TVicPort.h后可以直接按照下面介绍的格式实现调用。
如果在VB中调用这些函数,可以在VB工程中加入\Samples\VB\PortLib.bas模块,在模块中对全部函数作了声明,可以参照模块中的声明细节实现在VB中的调用。
TVicPort.dll提供的公共函数
BOOL OpenTVicPort( ):打开(加载)TVicPort.vxd或TVicPort.sys设备驱动。
参数:无。
返回:打开成功返回TRUE,失败返回FALSE。
BOOL IsDriverOpened( ):测试驱动程序是否打开。
参数:无。
返回:驱动程序已打开返回TRUE,未打开返回FALSE。
void CloseTVicPor
原创力文档


文档评论(0)