说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

VB对低层硬件的访问控制

HTML文档下载 WORD文档下载 PDF文档下载
VB对低层硬件的访问控制
淄博学院职业技术学院
王军
---- VB没有提供直接访问低层硬件的控件和方法,一度给对访问硬件感兴趣的编程者带来不便。目前我们可从网上搜索到支持低层硬件访问的DLL和ActiveX控件,通过它们可读写存储器单元、端口,甚至控制硬件中断。下面通过两个利用DLL和ActiveX控件示例介绍VB对低层硬件的访问控制。

---- 一、利用DLL读写端口

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

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

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

---- 程序清单:

Option Explicit
Private Declare Sub
Anjan Lib "vbio.dll" ()
Private Declare Function
Inp Lib "vbio.dll" (ByVal port&) As Integer
Private Declare Function
Inpw Lib "vbio.dll" (ByVal port&) As Long
Private Declare Sub
Out Lib "vbio.dll" (ByVal port&, ByVal byt%)
Private Declare Sub
Outw Lib "vbio.dll" (ByVal port&, ByVal wrd&)
Private Declare Function
GetLptBaseAddr Lib "vbio.dll" (ByVal lpt&) As Integer
Private Declare Function
GetComBaseAddr Lib "vbio.dll" (ByVal com&) As Integer

Public Sub SetFreq(soundHz As Integer)
’设置频率
If soundHz Then
Dim divisor As Long
divisor = 1193180 / soundHz
'计算时间常数
Out &H42, &HB6
'8253-5通道2设置为方式3
Out &H42, divisor Mod 256
'送时间常数
Out &H42, divisor \ 256
'
Speaker True
Else
Speaker False
End If
End Sub

Public Sub Speaker(sOn As Boolean)
’开关声音
Dim portVal As Integer
portVal = Inp(&H61)
'
If sOn Then
portVal = portVal Or 3
'低位为通道2的门控信号
Else
'次低位为整形与门控制信号
portVal = portVal And (Not 3)
End If
Out &H61, portVal

End Sub

Private Sub Form_Load()
Anjan
’软件解锁
End Sub

Private Sub SoundOff_Click()
Speaker False
End Sub

Private Sub SoundOn_Click()
SetFreq Val(TextHz)
End Sub

---- 二、利用ActiveX处理硬件中断

---- 在应用程序中如果需要访问存储单元、端口以及处理硬件中断,使用TVicHW32 ActiveX控件是一很好的选择,该控件是一个共享软件,支持Windows 95/98/NT,可从http://www.entechtaiwan.com/tools.htm处下载。该控件除具备直接访问存储单元和端口的功能外,还提供了丰富的处理并口的属性和方法,以及处理硬件中断的属性、方法和事件,极大地拓展了VB对低层硬件的访问控制。下面通过一个显示键盘中断次数和按键扫描码的示例介绍控件的使用过程。

---- 1、下载TVicHW32压缩软件包并解压到一个目录中,如\HW。把driver子目录下的vichw00.vxd文件拷贝到\windows\system子目录下,该文件是控件访问硬件的驱动程序,使用控件前先用OpenDriver打开,最后用Close_Driver方法关闭。

---- 2、把ocx子目录下的tvichw32.ocx拷贝到\windows\system子目录下,并在DOS命令行状态下键入以下命令进行注册。

---- regsvr32 tvichw32.ocx

---- 3 、在VB环境下通过菜单工程--部件--控件并选择TVicHW32 ActiveX Control Module将控件添加到工具箱中。

---- 4、相关的属性、方法及事件

---- 方法 OpenDriver 打开支持访问硬件的驱动程序vichw.vxd(windows95下)

---- 方法 CloseDriver 关闭驱动程序

---- 属性 ActiveHW As Bool 驱动程序打开则为True;关闭为False 中断事件 OnHwInterrupt(ByVal HwCounter As Long,

ByVal LPT_DataReg As Integer,
ByVal LPT_StatusReg As Integer,
ByVal ScanCode As Integer
)
参数
HwCounter : 中断次数
LPT_DataReg : 如果使用IRQ7,则为打印并口的数据
LPT_StatusReg : 如果使用IRQ7,则为打印并口的数据
ScanKode : 如果使用IRQ1,则为按键的扫描码
属性 IRQNumber 指定中断号,范围IRQ1--15
属性 IRQMasked 中断非屏蔽则为True;屏蔽为False

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

---- 程序清单:

Public Sub ShowButtons()
Open_Driver.Enabled = Not HwCtrl.ActiveHW
Close_Driver.Enabled = HwCtrl.ActiveHW
B_Unmask.Enabled = HwCtrl.ActiveHW
End Sub

Private Sub Form_Load()
ShowButtons
End Sub

Private Sub Open_Driver_Click()
HwCtrl.OpenDriver '打开驱动程序
If Not HwCtrl.ActiveHW Then
MsgBox ("The driver VICHWxx not found")
Else:
HwCtrl.IRQNumber = 1 '中断号为1,键盘中断
End If
ShowButtons
End Sub

Private Sub Close_Driver_Click()
HwCtrl.CloseDriver '关闭驱动程序
B_Unmask.Value = 0
ShowButtons
End Sub

Private Sub B_Unmask_Click()
If B_Unmask.Value = 0 Then
HwCtrl.IRQMasked = True
Else
HwCtrl.IRQNumber = 1
Scan_Code = 0
HwCtrl.IRQMasked = False '开放中断
End If
End Sub

Private Sub HwCtrl_OnHwInterrupt(ByVal HwCounter
As Long, ByVal LPT_DataReg As Integer, ByVal
LPT_StatusReg As Integer, ByVal ScanCode As Integer)
Scan_Code.Caption = ScanCode
IRQC.Caption = HwCounter
End Sub

Github项目中使用率最高的Java/Ruby/JS库 2013中国大数据技术大会盛大开幕 从黑色星期五找到的六个规则 帮助网站转化 移动开发者的自学宝典:十大在线编程学习网站 MIT新技术:远程触摸和操纵实物 创新人机交互 中国移动研究院业务支撑研究所所长孙少陵:大数据实时处理技术发展趋势及中国移动实践和展望 “第一届中国大数据技术创新与创业大赛”主办方发言及创新分赛颁奖 中国移动研究院业务支撑研究所所长孙少陵:大会及与会嘉宾介绍 中国工程院院士、大数据专家委员会主任李国杰:能挖掘出价值的数据就是好数据 阿里飞天平台总架构师唐洪:飞天开放平台 百度大数据首席架构师林仕鼎:新计算时代 金山发布全系列IaaS平台 Google无人驾驶汽车与机器人组合,秒杀无人机 Google欲推新Chrome应用:适用于Android、iOS平台 comScore:美国市场苹果手机独占鳌头 Android和iOS双寡头垄断 一周消息树:新技术实现远程触摸和操纵实物 创新人机交互 研发周报:帮助网站转换的六大黑色星期五规则 【开源专访】JFinal作者詹波:以极简方式实现Web项目的极速开发 2013中国智能交通与大数据技术峰会:迎接交通大数据新时代 大数据应用技术(上):加速创新,重塑世界 英特尔百度携手推出首个跨平台应用商店 12月9日:计算机软件第一夫人Grace Hopper出生 触摸屏将成笔记本标配 电脑行业或将迎来又一春 触摸4G,你必须要知道的那些事儿 TIOBE 2013年12月编程语言排行榜:Transact-SQL冲刺年度语言 敏捷开发的6个实战经验 【图文】走近华为企业业务与支撑万人技术团队的云数据中心 《习惯联盟》陈晓冬:与京东云合作让我们没有后顾之忧 流计算与批处理同现:畅享大数据时代的开源实践 挑战和机遇并存:大数据时代机器学习与可视化 【企业开源系列】收发一条Twitter推文的背后 请问 怎样将table里面某几列的所有数据copy到另外一个表中? 知道对方的 IP地址 ,怎么得到他的机器名?我记得NET命令里有一个可以的,谁知道? 一个报表打印的问题,大家快来帮帮我啊!!! 报表问题快来帮帮我啊!!! 我的word每当保存总是提示内存不足????? 问一下个在VB中使用Oracle的问题? 紧急求救 请问这句话什么意思? 如何得到以前安装 SQL SERVER 的密码 如何把一个字符串中所有指定的字符删除? 那里有delphi深度历险下载,我怎么也搜不到 各位大虾帮帮忙 如何在LINUX下如何安装配置JSDK? 如何挂载usb硬盘?? 使用TrackBar控件的问题 挑战高手, 巨难问题. 有关不同系统(ACCESS, MSSQLSERVER) 的SQL语句兼容问题 奇怪问题:我的光驱,有的光盘能读,有的不能读(比如自己刻录的) SQL Server 安装时的密码,忘了,如何取得,在线等待 挑战高手, 巨难问题. 有关不同系统(ACCESS, MSSQLSERVER) 的SQL语句兼容问题 谁能告诉我,汇编论坛在哪?谢谢 调色板问题 挑战高手, 巨难问题. 有关不同系统(ACCESS, MSSQLSERVER) 的SQL语句兼容问题 如何在WLS7中部署一个Servlet和一个JSP? 挑战高手, 巨难问题. 有关不同系统(ACCESS, MSSQLSERVER) 的SQL语句兼容问题 新手问题: 一个简单的js效果实现问题 吐血送分!关于datagrid的数据更新问题! 为什么不能进大富翁论坛 谁有KV3000啊,传个给我行吗,我下载了好几个都不行, 我有原版盘坏了,谢 VB 怎么调入并执行写好的SQL文件. 今天我生日,郁闷散分 吐血送分!关于datagrid的数据更新问题! 请问powerdesigner生成.sql时,如何在.sql中包含Comment信息 DBGrid改变行的颜色 下载英文Windows的地址 我要在一個按鈕點擊后,開啟另外一個頁面,並且這個頁面自動處於打印預覽狀態,怎麼寫? 正在上升中,公司给自己加薪了,自己却突然心灰意冷. 我想问什么是temporary object?请高手指教 那位大哥在HP-UX下配置过PHP和ORACLE? 宝丽金120首金曲 Dialogs(wdDialogFileOpen)提示ActiveX不能创建对象? 那位朋友知道如何在网络上截取一个信息(数据包) 大家看过dvdrip的片子吗?有一个问题请问 (winform)我想编写一个简单的浏览器,问题1 在LINUX下如何安装软件啊? 苏州的朋友可以进来看看吗? 关于游标类型的问题 如何比较两幅近似图像并得出偏移的距离? 怎样处理鼠标拖动事件。 绘制图形时的自动滚屏问题 请教怎么去掉字符串后面带的空格? 请教关于双机通讯的问题,谢谢 黑帮的英文名叫什么?求解 Dokuz Eylul University 这是土耳其的大学,求中文翻译 It's time for you _____ (change)your lifestyle.应该填什么词,为什么? “在我们学校有浪费水,电,餐厅的食物,书本的现象.这样造成浪费资源的为害.”英语翻译 新加坡的英文拼写新加坡用英文怎么拼呀!还有中国大区总裁!中国大区总裁用英文怎么拼呢? 尊重他人就是尊重自己的作文怎么写? 黑社会 翻译成英文 新加坡英文拼写和所属国家 would you change your way if life or not?该怎么用英文回答?if you could afford the time and money,would you change your way if life or not?why?呵呵 是我打错了 是of! 起风了,黄山的云雾千变万化.改为比喻句 英语翻译 理有一块金属,在密度为P1的液体中称时,弹簧测力计的示数为G1;在密度为P2的液体中称时弹簧测力计示数为G2,求金属块质量 已经知道方程是p1vg+ G1= G2+ p2vg可是怎么解?可是你质量都不知道 起风了,黄山的云雾千变万化改为比喻句 黑帮犯罪 或 黑社会犯罪 用英语应该怎么说?如题. 海的最深处是像陆地一样没有水吗 起风了,黄山的云雾千变万化.改成比喻句. 黑帮用英文怎么说啊?就是黑帮啦,黑社会之类的,英文怎么翻译啊? 大海最深处有什么 如何培养孩子的创造力英语小作文 黑帮用英语怎么说?RT.我想问我们那的老外你们那有黑帮吗. time can change me什么意思? 关于创造力的培养的英文作文 What kind of man would defy a king?..What's the freedom?..What's the life?..What kind of man would defy a king?..What's the freedom?..What's the life?.. 关于对手这个作文怎么写? 《穷人》的作者是?著名作家?文章歌颂了主人公?的善良美好心灵. It's what makes our life colorful,and gives our life true meanings and fun.什么意思? 怎么写对手作文 The price of this skirt is too ___.A.cheapB.expensive C.dear D.high 假如你叫Tony.英语 对手作文怎么写 This skirt is too small.I want a l______ one 看过电影《美丽心灵》的进最近看完这个电影,没太明白这个故事和“美丽心灵”的具体联系,看懂的朋友谈谈吧,呵呵 寻求快速英语记忆软件 如题例:Kangaroo 袋鼠 记忆法:袋鼠扛(Kang)着一(a)块肉(ro)进了洞(o)读音:kang(读一音阶)a roo(拼ro 读四音阶)好想找这样的软件 或是动画 2.This black skirt is too _________(昂贵的).The price of the gray one is much _______(便宜).3.On my birthday,my friends _______(收到) a lot of p________ such as toys and hair _____ (夹子).4.There is always _________ (足够) money in his ___ 童年的小故事 she couldn't help feeling sad and tears would run down her cheeks( )she came back tothe ruins where her home was once built. 为什么答案是for the first time ?为什么不能用at the moment 英语翻译 Tony打算去踢足球英文怎样写 不包括,英语怎么说 tony的英文是啥 少儿故事 关于"对手"的作文,什么写?` 从什么方面着手,才可以使得文章更有内涵,更加的精彩紧凑?不喜欢范例,希望得到的是一些指导.有重赏! 怎么培养创造力 What's your views on the relation between routine shopping and quality of life?请用英语回答该问题. 作文 对手(侧重描写友谊)要有技术含量哈! 英语翻译Tepede beyaz bir saray.SARAY'da SOYTARI BİR KRAL.krallığını seveyim senin pabucumun Kralı.seninde saltanatın biter birgün Tony什么时候来中国 英文怎么写 如何写关于对手的作文,求大师指点, 怎样培养创造性 what's the meaning of life?the meaning of life is to seek for the truth and fulfill your dreams.or there is no meaning in life.you were born,you go through sorrowand happiness,you get matured,get married,get old and pass away.you are like a dust in t a poor student could become a good one200左右的英语作文 创造力应该如何培养 你想问tony昨天买了什么用英语怎么写 similar的用法、后面跟什么介词? 塞语翻译中文或中文翻译塞语在哪里翻译谢谢大师帮忙 尊重 作文怎么写快我非常急! similar接什么介词 《东北大森林》和《颐和园》写作顺序相同吗 如何培养创造力 尊重的作文怎么写啊!
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘