学院首页 软件应用 编程开发 创意设计 认证培训 软件论坛
ASP ASP.NET PHP JSP SQL MYSQL Java VB

您的位置:学院 >> 编程开发 >> VB >> Visual Basic实现对I/O端口操作


Visual Basic实现对I/O端口操作


天极IT资讯短信服务 电脑小技巧
资费:包月5元
手机:
介绍:细处着手,巧处用功。高手和菜鸟之间的差别就是:高手什么都知道,菜鸟知道一些。电脑小技巧收集最新奇招高招,让你轻松踏上高手之路。

  同时需要说明的是,_inp和_outp函数和inp和outp函数用法基本上相同,只是在使用时需要<conio.h>头文件,而且本人推荐使用_inp和_outp,而不是使用inp和outp。因为_inp和_outp在Debug和Release都可以使用,而inp和outp只能用于Release设置。如果在Debug设置时使用inp和outp,编译时不会错,但会产生链接错误。

  一、Visual Basic中操作I/O端口

  到此我们就可以在Visual Basic中通过动态链接库技术间接操作I/O端口了。在Visual Basic中动态链接库必须提前申明,其缺省为公有过程或函数。其格式为:“Declare Sub 过程名 Lib ‘库名’ [Alias ‘别名’] [(参数表)]”,或者“Declare Function 过程名 Lib ‘库名’ [Alias ‘别名’] [(参数表)] As 类型”。例如:

Public Declare Function Outport Lib "vcDll.dll" (ByVal portid As Integer, ByVal value As Integer) As Integer //IO输出函数
Public Declare Function Inport Lib "vcDll.dll" (ByVal portid As Integer) As Integer //IO输入函数

  这样定义后在程序中就可以直接使用上面定义的函数或过程来操作I/O端口了。

  二、Visual Basic中位操作

  上文介绍的I/O端口操作是一次从I/O端口中读取一个后更多字节的信号,而在工业控制领域中,往往是逐个信号的获取或操作,因此我们就有必要在读入信号时将一次读到的信号分离开来,而在输出信号时将不需要输出的其它位屏蔽掉。

  1. 分离读取到的I/O端口信号(需要读取D0位信号)

IOvalue=Inport(BASE)//首先读取BASE地址I/O端口信号
IOvaluer=IOvalue AND &1H// (屏蔽掉其他7位,只留下D0位)

  2. 屏蔽其它位信号并输出相应信号(D0位置1操作)

IOvalue=Inport(BASE)//首先读取BASE地址I/O端口信号
IOvalue = IOvalue OR &01H //(B00000001,屏蔽掉其他7位,将D0位置1)
CALL Outport(BASE,IOvalue)//输出相应信号

  在上面的位操作中,我们用到了逻辑运算符AND和OR,逻辑分析表如下。

AND 1 0
1 1 0
0 0 0
OR 1 0
1 1 1
0 1 0

  使用AND运算符可以对指定的位置0,例如:十六进制&H84的二进制为:10000100,它的第三位为1,若要将第三位置为0,且其它位不变,可以使用:&H84 AND &HFB = &H80,&H80的二进制值为B10000000。

  使用OR运算符可以对指定的位置1,例如:十六进制&H84的第二位为0,若要将第二位置为1,且其它位不变,可以使用:&H84 OR &H02 = &H86,&H86的二进制值为B10000110。

  三、使用计算机LPT打印口做I/O端口

  打印口有3个端口:数据端口、状态端口和控制端口,常用的打印口为LPT1,它的3个端口的地址分别为:378H、379H和37AH。其中378H和37AH可读可写,而379H为只读端口。

  与使用其他I/O卡一样,在运行DEBUG环境下,对打印口的各位进行检测如下。

  378H作数据输出口。键入指令 –O 378 00(01,02,04,08,10,20,40,80,FF),同时用万用表分别检测2'9脚的电压(25脚接万用表“地”),可分别测到对应位与所输入的数据相符合(”1” 对应5V,”0”对应0V)。说明此地址的8位可作为8个输出线。

  379H作输入端口。为了给各脚提供输入电平,我们先引入一个外部5V电源。电源地线接打印口的25脚,而后分别在10,11,12,13,15脚接入5V、0V,同时在DEBUG环境下执行 -I 379指令,读入此端口的数据。读到的各数据应与输入信号相符合。

  37AH口只能作输出口。检测方法与378H 相同。

  检测结果为:

   378各位输出电平和指令信号一致,D0~D8位都可以做端口输出位;

   37A各位输出电平和指令信号相反,D0~D3位都可以做端口输出位;

   379各位悬空状态下:11脚为“0”,10,12,13,15为“1”,故使用D3~D6做端口输入位。

  综上,通常使用打印口做I/O端口的共有12个输出位和4个输入位。

  四、Windows 2000/XP/NT下I/O端口操作

  Windows 2000/XP/NT对硬件实现了屏蔽,对I/O端口进行了严格的控制,许多在Windows 9x下正常运行的用户应用程序,在Windows 2000/XP/NT中直接访问硬件会引起系统异常,因此不能在Windows 2000/XP/NT下直接访问I/O端口。

  通常有两种方法解决Windows 2000/XP/NT下I/O端口操作问题,一是编写一个运行在RING0级(设备驱动驱动程序级)的虚拟设备驱动程序(Virtual X Device,VSD),它可以不受限制地访问硬件设备、捕获I/O端口操作和内存访问等,甚至可以截获硬件中断,这样就可以在USER方式下实现Windows 2000/XP/NT下I/O端口的访问操作。另一种方法就是修改I/O允许位图设置,允许一个特定的任务存取特定的I/O端口。 这允许USER方式的程序在RING3级(应用程序级)按照I/O允许位图设置, 不受限制地访问I/O端口。

  接下来本文介绍两种在Windows 2000/XP/NT下实现I/O端口操作的方法,WinIO和PortTalk。

  WinIO程序库通过使用一种内核模式的设备驱动器和其它几种底层编程技巧,绕过了Windows系统的保护机制,从而允许在Windows 2000/XP/NT下应用程序直接对I/O端口和物理内存进行操作。需要注意的是,在Windows 2000/XP/NT下,WinIO函数库只允许被具有管理员权限的应用程序调用。WinIO程序库含有相应驱动程序的源代码和Visual BASIC例程,下载地址为:http://www.internals.com/utilities/winio.zip。
PortTalk使用的是上述的第二种方法,它够让你现有的程序运行在windows 2000/XP/NT下, 但是需要注意的是,因为必须在RING0和RING3下来回切换,所以使用PortTalk会降低程序的运行效率。PortTalk设备驱动程序也提供了全部源代码,下载地址为:http://www.beyondlogic.org/porttalk/porttalk.zip。

技术文章快速查找

栏目导航
软件应用
·操作系统 ·杀毒防黑 ·应用软件
·聊天软件 ·网络软件  
Web开发
·ASP ·JavaScript ·CGI
·JSP ·VbScript ·Web服务器
·PHP ·XML  
开发语言
·VB ·VC ·ASP.NET
·Java ·C/C++ ·Delphi
数据库开发
·MySQL ·SQL/Access ·PowerBuilder
·Oracle ·DB2  
网站设计
·Flash ·Dreamweaver ·HTML/CSS
·Fireworks ·FrontPage  
平面设计
·Photoshop ·CorelDraw ·AutoCAD
·FreeHand ·Illustrator ·3DsMAX
媒体动画
·Director ·Authorware ·Maya
·视频处理    


相关软件 产品库推荐
·笔记本 ·台式机 ·服务器
·数码相机 ·手机 ·GPS
·DV摄像机 ·MP3 ·MP4
·CPU ·硬盘 ·内存
·主板 ·显卡 ·显示器
·打印机 ·投影机 ·路由器

还没人留言,抢个先,哈哈!
对"Visual Basic实现对I/O端口操作"的评论 - 快速回贴
内容:
  [完成后可按Ctrl+Enter发布]

百度中 Visual Basic实现对I/O端口操作 相关内容
Google搜索中 Visual Basic实现对I/O端口操作 相关内容
雅虎中 Visual Basic实现对I/O端口操作 相关内容
Sogou搜索中 Visual Basic实现对I/O端口操作 相关内容

相关软件 最新回复帖子:

·AutoCAD打造精致三维鸟笼实例详解
·Photoshop自定义水晶字特效样式
·AutoCAD三维基础实例教程
·PS为黑背景长发美女照片抠图换背
·用Photoshop自制个性摩托车贴花小经验
·轻松几步将美女照片处理为手工素描
·巧用Photoshop画笔轻松绘制创意特效
·用Photoshop通道将模糊肖像照片清晰化
·照片处理:Photoshop修复残破照片
·PS CS2新增形状模糊滤镜绘制花布图案


  相关软件 Visual Basic实现对I/O端口操作相关文章
利用API函数实现图像淡入淡出 利用Visual Basic命令操作文件
利用Visual Basic常用控件操作文件 VB中利用Windows API实现文件操作
VB中操作目录的Winodws API小结 用Viusal Basic命令操作目录解析
利用VB控件操作目录和文件夹 Visual Basic两行代码写播放器
VB中创建可以输出函数的DLL 在VB的ListView控件中动态加载记录
用VB远程控制可编程控制器 基于VB编程的链式存储技术浅析
VB开发客户服务器软件的设计与实现 在Visual Basic编程中运用数据结构
用VB判断网页文件是否在IE缓存中 向Visual Basic程序员介绍泛型
VB程序错误处理方法小结 VB中SQL合计函数的使用
用VB6实现程序多语言界面 Visual Basic自适应窗体设计经验