VB对低层硬件访问控制

拐子

拐子

2016-02-19 18:28

清醒时做事,糊涂时读书,大怒时睡觉,无聊时关注图老师为大家准备的精彩内容。下面为大家推荐VB对低层硬件访问控制,无聊中的都看过来。
VB没有提供直接访问低层硬件的控件和方法,一度给对访问硬件感兴趣的编程者带来不便。目前我们可从网上搜索到支持低层硬件访问的DLL和ActiveX控件,通过它们可读写存储器单元、端口,甚至控制硬件中断。下面通过两个利用DLL和ActiveX控件示例介绍VB对低层硬件的访问控制。
  一、利用DLL读写端口

  若在应用程序中只是简单地读写端口,利用DLL编程实现较为简便。从http://personal.vsnl.com/sr网站可下载一个免费的32位VBIO.DLL,该连接库允许在VB4、5或6中使用,共有七个函数和过程,分别为:

AnjanDLL的解锁过程
  Inp端口读字节函数
  Inpw端口读字函数
  Out端口写字节过程
  Outw端口写字过程
  GetLptBaseAddr获取并口基地址的函数
  GetComBaseAddr获取串口基地址的函数

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)


  一个发声示例程序的窗体,在输入框中键入一频率值并按SoundOn钮,则在PC机的扬声器中发出指定频率音调,程序中对音调的变化、声音的开关是用VBIO.DLL的过程和函数访问发声系统的定时器/计数器和控制端口实现的。编程要点:
  1.应在Form_Load中加入Anjan解锁过程。
  2.若在模块中声明函数和过程,应去掉private或用Public替代。
  3.VBIO.DLL应拷贝到windowssystem子目录下。

  程序清单:

OptionExplicit
  PrivateDeclareSubAnjanLib
  “vbio.dll"()
  PrivateDeclareFunctionInpLib
  “vbio.dll"(ByValport&)AsInteger
  PrivateDeclareFunctionInpwLib
  “vbio.dll"(ByValport&)AsLong
  PrivateDeclareSubOutLib
  “vbio.dll"(ByValport&,ByValbyt%)
  PrivateDeclareSubOutwLib
  “vbio.dll"(ByValport&,ByValwrd&)
  PrivateDeclareFunctionGetLptBaseAddrLib
  “vbio.dll"(ByVallpt&)AsInteger
  PrivateDeclareFunctionGetComBaseAddrLib
  “vbio.dll"(ByValcom&)AsInteger

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

PublicSubSetFreq(soundHzAsInteger)设置频率
  IfsoundHzThen
  DimdivisorAsLong
  divisor=1193180/soundHz计算时间常数
  Out&H42,&HB6
  8253-5通道2设置为方式3
  Out&H42,divisorMod256送时间常数
  Out&H42,divisor256
  SpeakerTrue
  Else
  SpeakerFalse
  EndIf
  EndSub

PublicSubSpeaker(sOnAsBoolean)开关声音
  DimportValAsInteger
  portVal=Inp(&H61)
  IfsOnThen
  portVal=portVr3
  低位为通道2的门控信号
  Else次低位为整形与门控制信号
  portVal=portValAnd(Not3)
  EndIf
  Out&H61,portVal
  
  EndSub

PrivateSubForm_Load()
  Anjan软件解锁
  EndSub

PrivateSubSoundOff_Click()
  SpeakerFalse
  EndSub

PrivateSubSoundOn_Click()
  SetFreqVal(TextHz)
  EndSub


  二、利用ActiveX处理硬件中断


  在应用程序中如果需要访问存储单元、端口以及处理硬件中断,使用TVicHW32ActiveX控件是一很好的选择,该控件是一个共享软件,支持Windows95/98/NT,可从http://www.entechtaiwan.com/tools.htm处下载。该控件除具备直接访问存储单元和端口的功能外,还提供了丰富的处理并口的属性和方法,以及处理硬件中断的属性、方法和事件,极大地拓展了VB对低层硬件的访问控制。下面通过一个显示键盘中断次数和按键扫描码的示例介绍控件的使用过程。
  下载TVicHW32压缩软件包并解压到一个目录中,如HW。把driver子目录下的vichw00.vxd文件拷贝到windowssystem子目录下,该文件是控件访问硬件的驱动程序,使用控件前先用OpenDriver打开,最后用Close_Driver方法关闭。
  把ocx子目录下的tvichw32.ocx拷贝到windowssystem子目录下,并在DOS命令行状态下键入以下命令进行注册:
  regsvr32tvichw32.ocx
  在VB环境下通过菜单工程--部件--控件并选择TVicHW32ActiveXControlModule将控件添加到工具箱中。
  相关的属性、方法及事件
  方法OpenDriver打开支持访问硬件
  的驱动程序vichw.vxd(windows95下)
  方法CloseDriver关闭驱动程序
  属性ActiveHWAsBool驱动程序打开
  则为True;关闭为False
  中断事件OnHwInterrupt(ByValHwCounterAsLong,
  ByValLPT_DataRegAsInteger,
  ByValLPT_StatusRegAsInteger,
  ByValScanCodeAsInteger
  )
  参数
   HwCounter:中断次数
  LPT_DataReg:如果使用IRQ7,
  则为打印并口的数据
  LPT_StatusReg:如果使用IRQ7,
  则为打印并口的数据
  ScanKode:如果使用IRQ1,
  则为按键的扫描码
  属性IRQNumber指定中断号,
  范围IRQ1--15
  属性IRQMasked中断非屏蔽则为True;
  屏蔽为False。


  示例的窗体,程序运行后首先按Open_Driver钮打开驱动程序,然后选择Unmarsk复选框开放中断,此时每按一次键框中分别显示该键的扫描码和中断次数。处理其他中断只需更改中断号即可(中断号1—15)。

  程序清单:

PublicSubShowButtons()
  Open_Driver.Enabled=NotHwCtrl.ActiveHW
  Close_Driver.Enabled=HwCtrl.ActiveHW
  B_Unmask.Enabled=HwCtrl.ActiveHW
  EndSub

PrivateSubForm_Load()
  ShowButtons
  EndSub

PrivateSubOpen_Driver_Click()
  HwCtrl.OpenDriver打开驱动程序
  IfNotHwCtrl.ActiveHWThen
  MsgBox(“ThedriverVICHWxxnotfound")
  Else:
  HwCtrl.IRQNumber=1中断号为1,键盘中断
  EndIf
  ShowButtons
  EndSub

PrivateSubClose_Driver_Click()
  HwCtrl.CloseDriver关闭驱动程序
  B_Unmask.Value=0
  ShowButtons
  EndSub

PrivateSubB_Unmask_Click()
  IfB_Unmask.Value=0Then
  HwCtrl.IRQMasked=True
  Else
  EndSub

->

展开更多 50%)
分享

猜你喜欢

VB对低层硬件访问控制

编程语言 网络编程
VB对低层硬件访问控制

利用VB实现对IE的调用与控制

编程语言 网络编程
利用VB实现对IE的调用与控制

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

vb如何控制鼠标

编程语言 网络编程
vb如何控制鼠标

VB访问SQLServer的探讨

编程语言 网络编程
VB访问SQLServer的探讨

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

访问控制大师 使用pam来支持login的访问控制

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
访问控制大师 使用pam来支持login的访问控制

数据访问控制--多客户环境下VB数据库编程之(2)

编程语言 网络编程
数据访问控制--多客户环境下VB数据库编程之(2)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

粘贴预览 Excel2010粘贴效果未卜先知

粘贴预览 Excel2010粘贴效果未卜先知

VisualBasic制作透明的表单(Form)

VisualBasic制作透明的表单(Form)
下拉加载更多内容 ↓