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

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

智能家居持续升温:苹果HomeKit合作伙伴Honeywell发布恒温器 欲与谷歌、亚马逊抗衡,苹果推CloudKit拥抱云服务 针对新一代物联网应用 Atmel推全新32位微控制器 实时计算,流数据处理系统简介与简单分析 Cue:秒杀HealthKit,打造自己的家庭医生 新iPhone要来:4.7就够了么?我们还有更大的 Docker迈入云(DockerHub)+端(Docker引擎)时代 《近匠》壹枱智能钢琴:改造音乐行业的新“玩”家 圣何塞Hadoop Summit 2014看点 唯快不破!90后大学生9天完成近670页的Swift语言文档翻译 一周消息树:Java、.NET、Web技术应用特点 苹果生态格局:软硬件之后,iLifestyle才是王道 小米互娱总经理尚进:独立游戏当为发烧而生 哪些编程语言、框架/平台最受企业青睐? 高德LBS应用大赛:百万大奖、千万基金等你来拿! Gartner:有数据有真相 从浪潮看服务器市场走势 PhoneGap 3.5.0发布,不再支持iOS 5和ARM64 “中美青年创客大赛”之“创客·教育论坛” 以创客教育支持创新人才培养 授之以渔,谷歌发布开源秘密武器Kubernetes 炫耀分数已经out!ShareSDK发布游戏内视频录制SDK Android开发者必知的5个开源库 UCloud完成B轮融资5000万美元 Git远程操作详解 《近匠》iMAG:移动应用快速跨平台开发工具 Facebook斥资30亿美元购Snapchat遭拒后,推Slingshot 全球开发者报告:程序媛崛起,企业应用更赚钱! 土豪经济 E人E本发布首款4G安全手机 内忧外患:Android版FuelBand应用来得太迟? MongoDB 2.6.2 发布,大大改进查询功能 清华毕军&华为马云:SDN是学术和产业都看好的领域 向三星和苹果发难:亚马逊FirePhone 3D手机强势来袭 如何在servlet中自动post 怎么把vb程序的安装包减小到1.44m 新手的问题!!!!!! 非常简单!!!!!!!!!!!!!!!!!! php 配置,急! 求助:哪里有Sybase认证的试题!! 有北京的程序员同志吗? xml与网格问题,高手请进!! 在ISAPI中如何用相对路径取得绝对路径,即类似asp中的Server.MapPath()! 如何学习??? 大侠帮忙!!!!关于打印问题(客户端控制服务端的打印),把分全送了!! 为什么我用了ejbstore就报错 启动2k时事件管理器中总有4个错误 高分求教 为什么提问前不自己查查以前的帖子 如何插入如下的结果集??? 如何吧一个xml文件写入byte[]流,然后再读出来写入另一个xml文件 关于ADO的问题。。很麻烦 救急 一个问题 谁有VB编的管理系统?能发个给我吗?? 如何解决VC++编译器的代码转换问题! 谁申请过电子信息技术应用贴息贷款? LDAP问题请指教,在线等待各位高手 有关DATAGRID中的DROPDOWNLIST问题 哈哈,两条三角裤啦!散分! adsl和windows2000 sever的问题 如何获得系统目录下的system路径? 请教一个双机间网卡互连的问题。 如何将 页面的条件转移 和 动态参数传递 结合起来? ftp传送文件 请教一个双机间网卡互连的问题 我在vs.net中使用cdo组件发信,编译出来的程序在没有安装vs.net的机器上报错(装了.net framework) 接着昨天的问题,Process.GetProcess()里的marchinename可以添别人的机器名。 写字板的颜色组合框是怎么做的? 错误代码:80020009??? 十万火急!谁知道怎么看sql都执行了哪些操作! 一个小问题? 哪有mandrake完整版下载? 他今天落荒而逃了!非常兴奋!!散分!!! 各位大虾帮忙,一个很菜的问题 请问如何在388手机上显示超过一屏幕的文本? 用vb6.0做的ftp下载的客户端程序 请问有为SUNPLUS16位机(MIUnSP™)开发平台的高手吗? 几经努力,没有经果.......(#if)真的很难吗? 涨分好机会,我有大问题:用什么方法可以实现——联接 电话网络(有线、无线)与电脑服务器,实现消息即时通信 欢迎多一些高手朋友提供 JAVA开发中的B/S方式,C/S方式到底是什么? 关于delphi中的查找赋值 >>>>>>关于new,delete 的简单问题《〈〈〈〈? 全国各地接吻比赛(想学习经验、姿势的进来) 数据挖掘关联规则算法的原代码能在哪里找到,譬如apriori算法? 请问16个主要颜色的RGB值。 使用过存储过程的大家帮忙呀。。。。。 骨传导和空气传导哪个效果好 那珊瑚虫又是不是生物?别说那么多话,我看过其他的答案还是不明白 只需要讲“是”和“不是”就好了 合外力为零时,物体的速度一定不变 这句话对吗? 如果一开始是静止的,则推理要大于最大静摩擦力物体才会运动是对是错 珊瑚是不是生物,为什么? 0.01%二氯苯醚菊脂溶液这个真的很关用吗 植物生理学或遗传学什么意思在考研科目中出现848植物生理学或853遗传学时什么意思?指只考其中一门,还是两门都考, 含4molSi-O键的SiO2晶体中,氧原子的数目是 呼和浩特那里可以买到“0.01%二氯苯醚菊脂溶液”? 如何做英语课题研究 人耳区分回声和原声的最短时间间隔是0.1秒.是什么意思啊?请问是不是只要人与反射物体的距离小于17米,那就只听 到一个声音?? 瞬时速度不变没运动,一定是匀速直线运动为什么不是静止呢?打错字了,不变的运动 逻辑主语问题i ma going to shanghai to attend an important meeting tomorrowdo you have anything to be taken to your brother为什么用to be taken而不是to take呢就像i have a lot of homework to do一样 人耳能区分回声和原声的时间间隔应不小于 s ABCD由一段倾斜直轨道和水平轨道相接,连接处以一小段圆弧来过度ABCD由一段倾斜直轨道和水平直轨道相接,连接处以一小段圆弧来过渡,小滑块在A点从静止状态释放,沿着轨道滑下,最后恰好停 喝酒上脸有什么特殊含义吗?喝酒后,脸立马就特别红了,有什么特殊的含义吗? 请问人耳能区分回声和原声的时间间隔应不小于多少秒呢?为什么? 一半径为R =25 m的四分之一光滑圆弧轨道,其下端与很长的水平雪道相接,如图所示,滑雪运动员在光滑圆弧轨道的顶端以水平速度v0=5 m/s 飞出,在落到光滑圆弧轨道上时,运动员靠改变姿势进行缓 酒精滴入水中,不振荡,是否会分层?在盛有2mL水的试管中滴入2~3滴红墨水(用红墨水是为了显色,利于观察),振荡,然后再用滴管缓缓加入约两毫升乙醇,不震荡,观察溶液是否分层.然后震荡,有什 对于同一声音,比较由空气传导和由骨传导,人们听到的声音强弱( )对于同一声音,比较由空气传导和由骨传导,人们听到的声音强弱( )A.空气传导的较强B.骨传导的较强C.一样强D.无法比较 求翻译 内容如下 用途:随着声音大小波动灯光效果,适用于贴车上或衣服上 将少量碘晶体放入酒精中振荡,形成什么颜色的溶液 空气传到和骨传导听到的声音哪个较大,说原因 遗传学 统计 卡方检验 X^2=∑(O-E)^2/E中后面的^2有什么意义?=∑(O-E)^2/E中的^2有什么意义?没有^2算出来的也是相差值啊 酒精和什么物质加在一起会发生冲击 这样喝酒有什么意义上次和朋友到KTV玩,我就意思点点,而我姐叫来的那些人都在玩那个,然后喝酒,结果埋单时花了两千多,我觉得很傻,自已花钱叫别人来喝酒,又不是生意应酬的,也不是什么好 教学目标≠教学目的(为何提出以“教学任务”取代教学目标?) 若物体在运动过程中受到的合外力不为零,那么物体的动量一定改变吗? 谁能告诉我喝酒的意义 如果把中国所有人一天浪费的水集中起来,会不会让塔克拉玛干沙漠变成绿洲呢? 当物体受到合外力为零时,物体的动量一定为零,哪里不对? 别的男人替我喝酒是什么意思 假设某门课程一学期要留10次作业,每次老师要进行批改,给出分数后还要进行登记.用mfc实现 物体的动量不变,则受到的合外力一定为零, 珊瑚是生物吗? 教师批改作业时为什么在成绩下面划双线? 动量 合外力为零质量为M的大炮打炮,炮身与水平呈@角,炮弹质量m,问 炮身反冲速度答案上“水平方向上合外力守恒,动量就只在水平上守恒”为什么水平上合外力会守恒呀?水平上也有份呀 珊瑚到底是不是生物?找了很多,有人说是珊瑚虫的排泄物形成的珊瑚,可是也有蛮多人说是生物,到底是不是丫?(不要复制一大堆话给我) 教师批改作业时为什么再成绩下面划双线 牛郎星织女星属于什么天体 珊瑚是生物吗?详细回答! 什么成语,【风】字开头 牛郎星是什么星 骨传导耳机空气中也有声音? 匀速直线运动就是瞬时速度不变的运动是正确的吗? 牛郎星和织女星的距离是多少千米? 我们听到的声音,是骨传导和空气传导声音的结合 还是仅仅是气传导 若有200g溶脂质量分数为8%的氢氧化钠溶液,电解一段时间后,溶质分数变为10%,则电解水的质量为多少克?跪求 !急需! 亚都 YC-E311空气加湿器调节旋钮只有指向最大时候出雾, 有时出雾不是连续,其他时候只吹风. 遗传学的Tilling技术是啥 芳基硼酸与氢氧化钠水溶液反应吗? 用伏安法测电阻时,电流表坏了不能用,只用电压表和滑动变阻器测出定值电阻Rx用伏安法测电阻时,电流表坏了不能用,已知电源电压是U,滑动变阻器阻值是R‘,只用电压表和滑动变阻器测出定值 分子标记在遗传学上有什么应用价值 韩少华(老师窗内的灯光)还是母亲的奶最养人什么含义 骨传导与空气传播的音调有区别吗假如我唱歌自己听不跑调 别人听跑调吗 如何运用遗传学定律解概率问题 为什么绿洲一定有水源 骨传导和空气传导的差别有多大?我在物理课上学了骨传导,我自己听我自己的声音非常的好听,我不知道别人听见的会是什么样子的?差别会不会很大?有什么会发生改变?我录过自己的声音,可 珊瑚是不是生物 灯光(老师的智慧) 仿写灯光(老师的智慧) 灯光( )灯光( ) 灯光( ) 墨西哥糖果厂爆炸致1人死40人伤 仍三名驻阿富汗英军官涉嫌私刑处决塔利班日议员质疑安倍 称应给首相出席国会次逾2.8万人白宫网站请愿 “杀光中国澳联邦贸易部长大赞华为 支持重估宽带新加坡办第四届“亚洲群英会” 特邀名澳大利亚借调英国电信精英助力国际宽带韩军警独岛防御联合演习 抵御外敌“入韩国前科技官员称福岛土壤污染可通过微克里称美国最大威胁非对手 而是内部机日民主党前干事长年内成立新团体 被疑巴西总统批美国监听默克尔 称美反恐理吉议会否决吉加金矿开采合作备忘录 股马达加斯加大选民众盼稳定 中国应邀派逾2.8万人白宫网站请愿 “杀光中国联合国继续准备销毁叙化武 瑞典提供运默克尔打破沉默亲评美监听事件:朋友间韩军警在韩日争议岛演练登陆 旨在抵御贝卢斯科尼女友否认系同性恋 索赔千万伊核问题引美以分歧 美同意合法保留以俄外交官被指在美国招募间谍 美联邦调提供不出年检报告8部电梯遭“封存”武松打虎何须景阳冈领导班子同意奔腾B50伙伴车型河北盛美上市邢台重污染天气黄色预警拍出太行山的英雄魂4月份40个公园将实现便民服务东莞36名警察涉黄被查处和问责失联客机曾发出不完整数据链请求 或助非首都核心职能向京外疏解今年河北出入境旅客有望首破30万国务院六方面积极推进注册制改革澳总理称将继续支持搜寻MH370部分街道本周维修京津冀将“陆海空”全方位对接Honda获美国IHS“顶级安全评定什么是“伪基站”3月车市价格降字当头在线访谈关注医疗改革与医患关系信用卡催款对象三成为年轻人杭州限购限行市民扎堆上牌刘玉岭:“科研成果要和市场有效对接”
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘