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

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 对 低 层 硬 件 的 访 问 控 制。 下 面 通 过 一 个 显 示 键 盘 中 断 次 数 和 按 键 扫 描 码 的 示 例 介 绍 控 件 的 使 用 过 程。
下 载TVicHW32 压 缩 软 件 包 并 解 压 到 一 个 目 录 中, 如\HW。 把 driver 子 目 录 下 的vichw00.vxd 文 件 拷 贝 到\windows\system 子 目 录 下, 该 文 件 是 控 件 访 问 硬 件 的 驱 动 程 序, 使 用 控 件 前 先 用OpenDriver 打 开, 最 后 用Close_Driver 方 法 关 闭。
把ocx 子 目 录 下 的tvichw32.ocx 拷 贝 到\windows\system 子 目 录 下, 并 在 DOS 命 令 行 状 态 下 键 入 以 下 命 令 进 行 注 册:
----regsvr32 tvichw32.ocx
在VB 环 境 下 通 过 菜 单 工 程 - - 部 件 - - 控 件 并 选 择TVicHW32 ActiveX Control Module 将 控 件 添 加 到 工 具 箱 中。
相 关 的 属 性、 方 法 及 事 件
方 法 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

实现画面的各种切换方法-VB资料 实现屏幕变暗的效果 -VB资料 实现图像切换效果 -VB资料 提取Win9x拷贝的动画-VB资料 一个图像滤光处理程序-VB资料 一个用VB5.0 实现的鼠标绘图程序 用VB6.0制作画图板 用VB6设计有趣的动画场景 用VB编程绘制网格图像 用VB绘制抛物线动画曲线 用VB绘制正弦动画曲线 用VB实现“百叶窗”的图形特效 用VB实现托盘动画图标 用Visual Basic 定制BMP文件 用Visual Basic的Move方法实现动画效果 用Visual Basic与MS-Draw开发通用作图软件 在VB中获取可执行文件及Windows 95快捷方式的图标 在VB中进行各种图形切换的方法 在VB中制作可滚动的图像显示 在图片上平滑移动文字 -VB资料 VB怎样使程序的标题条闪烁? VB制作图像的Mask图 CWinInetConnection-一个封装了WinInet API函数的类 -VB资料 MODEM通讯意外处理-VB资料 MsComm 文字传输-VB资料 PING一个IP地址(向它发送一个数据包并等待回应) -VB资料 SMTP协议简介 (Simple Mail Transfer Protocol) -VB资料 VB5.0 中远程数据库的访问 VB下如何编写CRC校验程序 Visual Basic 6中发送邮件的新方法 Visual Basic通信程序设计 sos 十万火急,请大侠指教 转让书刊* 谁能帮帮我的这个问题?对与VECTOR的问题? 有什么好的软件在不格盘的情况下分区 游戏引擎和3d真实感图形渲染器源代码和开发文档出售 急急急!!!:::请问ATX电源没有主板如何启动工作?(现在有个ATX电源,一个光驱,想听听cd ,可不知道如何加电?) 求救 ! 关于sql 的问题 我只问一个扩展名和文件位置(在线等候) linux急救 白给分---请问改变字体 java小问题 游戏引擎和3d真实感图形渲染器源代码和开发文档出售 主 题:要用vc做报表(含mschar图形内容),用什么控件好? linux急救!!!!! 谁能提供求矩阵的秩的算法,高分相送。 高分求书!! 关于Client/Server系统的问题 TStringGrid中设置颜色的问题!! 迷惘 不该在此问的问题,希望你们能帮我!!!进来看看吧!!! 谁有系统开发的功能定义(function spec.)样例? SB其实是外来语 数据表里的数据排序问题。(ADO) 谁知道怎样进入 WWW.MICROSOFT.COM 的原代码区? 我想学vc++请问我该看什么书? 读密码(*****)的软件有哪些?(答对就有分) 如何重复使用自己以前开发的库文件*.pbl文件? 关于用DELPHI6的WebSnap开发网络应用程序的讨论 为什么在线程里,在以CString做为返回值的函数总出错? 哪位大哥能指点迷津? 采用中文变量名或者过程名或者函数名有没有什么副作用? 怎么用udp协议发送信息? bdk1.1 WinXp和Win2000对等网的连接 前两年做的软件,竟然出现在D版盘里面,觉得跟高兴。 如何将实数转化为字符串? 求助!!有谁用过LINUX下的UCD-SNMP? jBuilder6 for windows的注册码 winsocket的简单问题 [Linker Fatal Error]Fatal:Expected a file name:这个错误怎么解决? 大家都来看看怎么实现这个效果。。。 关于cscrollview 我下载了delphi6的补丁2,还未安装是否要先装补丁1。要如何?? 数字签证的问题 关于cscrollview 使用专利技术是什么概念啊?高手指点。 vb6.0中如何将dbgrid里的内容添加到数据库里? 谁能告诉我哪里有第三方控件下载吗?高分相送 游戏编程是否要用到物理知识? 数据库启动时出现错误"Cannot mount database in exclusive mode" 如图,圆O的直径AB的长为10,弦AC长为6,∠ACB的平分线交圆O于D,则CD长为( ) 新年活动要挂彩气球.六(1)班有13人参加了吹气球小组.男同学每人吹8个,女同学每人吹7个一共吹好100个气球请你用列表法计算男女同学各有多少人 英语翻译④请把外套穿上.⑤令她惊讶的是,她获得了第一名.⑥他想有自己的房间.⑦或许你可以把它关掉.(电源) 如图,圆O的直径AB的长为10,弦AC长为6,角ACB的平分线交圆O于D,则CD长为( ) 一个班级要搞活动 吹气球 .有13人吹 男的平均每人8个 女的平均每人7个 .一共吹好100个.男同学几个人? 我们要办一张地理手抄报,我是初一的,谁能提供点儿材料?SOS!课内知识占大部分,最好再加一些可读性课外知识. 一次测得5人的平均身高比其中3人的平均身高矮2厘米,另两个的平均身高166,这5的平均身高?方程 关于历史、地理、生物、政治的手抄报 作文 :《记一次劳动》开头结尾要优美,务必十分钟内回答, 破坏生态平衡的事例 生物地理手抄报的题目. 我懂得了珍惜 400字 如图所示,BD是∠ABC的平分线,DE⊥AB于E,DF⊥BC于F,S△ABC=36cm²,AB=18cm,BC=12cm.(1)求DE的长;(2)试说明:S△ABD:S△CBD=AB:CB. 六2班用气球布置教室庆祝元旦 9人共挂了88个气球男同学每人挂10个 女同学每人挂9个 参加挂气球的男女各有几人 (解方程或用假设法) 作文 对父母劳动的感悟 600字 如图,BD是∠ABC的平分线,DA⊥AB于A,S△abc=36cm²,BC=18cm,AB=12cm,则DA的长是多少? 我的愿望是画家的作文800字 家长会后的感受 500字作文 如图,BD是∠ABC的平分线,DE垂直AB于E,DF垂直BC于F,S三角形ABC=36cm的平方,AB=18CM,BC=12CM,求DE的长.要有过程啊 我的心愿 作文 800字快 百货商店日记喜欢可以慢慢休息的店如题,怎么让他们变常客啊 关于小制作的作文300字 学会生存作文600字不用太深的 也不要太普及的 最好没几个人看到过的 会写的人最好给我写一下 比如说游泳啊火灾啊 最好是第三人称转述的 求一篇800字的 我的愿望 作文 (1)3又5分之3小时的3分之1是?分钟(2)某班级男生有12人,男生人数是女生人数的3分之2男生总人数是?(3)一个正方形的周长是3分之1米,它的面积是?平方米(4)一个分数约分后是7分之5,原 《学会生存》600字作文咋写?急(#`′) 调换加数的位置,和( ),( )同( )相加结果等于被减数, 额定电压与电功率相等的电风扇,白枳灯和电热器在额定电压下工作相同的时间,所产生的热量 学会生存作文600 英语翻译:你和你老婆争吵之后接下来发生什么事? 如图,已知圆o的弦CD垂直于直径AB,点E在CD上,且EC=EB.如图,已知圆O的弦CD垂直于直径AB,点E在CD上,且EC=EB.求证三角形CEB相似于三角形CBD若CE=3,CB=5,求DE的长 学会生存的作文600字及例子 英语翻译句型:angry with sb over/about sth. 两个数相加的和是其中一个加数则另一个加数是 如图,BD是∠ABC的平分线,DE⊥AB于E,S△ABC=36cm^2,AB=18cm,BC=12cm,求DE的长 内容 《活着需要自信》五百字作文 急用! 我的愿望作文400字要350字以上长大以后当电脑专家的急 办一份关于地理的手抄报.要关于人土的风情. 如图,AB是圆O的直径,弦CD⊥AB于P.(1)已知:CD=8cm,∠B=30°,求圆O的半径;(2)如果弦AE交CD于F,求证:AC²=AF*AE 验算加法时,可以利用调换加数的位置,( )不变的算理,也可以用( )减去( ),看得数是不是等于另一个加数. 地理对日常生活、民族特色等的影响 如图,ab、cd是圆o的弦,角a等于角c,求证:ab等于cd 用和减一个《 》,看是不是等于《 》,可以验算加法. 初一地理手抄报内容.急呀~~~~~~~~~~~~快呀,马上. 如图,AB是圆O的直径,AC是弦,∠BAC的平分线AD交○O于点D,DE⊥AC交AC延长线于点E,OE交AD于点F.(1)求证:DE是圆O的切线 (2)若AC/AB=3/5,求AF/DF的值《第一问我已证出》 验算加法时可以用什么减去什么看是不是等于什么 英语翻译,你不能跟他吵架,而是跟他好好相处 一个加数加另一个加数表示什么? 是关于日本的,请问应该用什么题目. 玩具的说明方法作文 一个加数加上0还得什么 怎么取? 介绍一种玩具的作文 一个加数一定,和与另一个加数成什么比例? 地理手抄报的题目怎样做? 关于玩具的作文四年级300-500 如图,圆O的直径AB的长AC为10,弦AC的长为6,∠ACB的平分线交圆O与点D,则CD的长为? 我们现在学的是世界地理题目不要太长 作文 ,自己制作个玩具,介绍它有20追分
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘