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

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

超350个政府项目托管在GitHub 政府开源会成主流? Kinect for Windows SDK 1.7正式发布,支持3D建模 SafeNet与风河系统联手推出VxWorks嵌入式系统软件货币化方案 Windows Server 2012中的动态负载均衡 Google等互联网公司将成为创新中心? 在Hadoop的战争中 MapR获新一轮3000万美元融资 初创公司DNNresearch:谷歌科技帝国的新“基石” 创业了,我们该如何起名? 乐视网联手富士康推新盒子C1S “0+290元”新浪微博发售 吸引开发者:只要开发新应用 微软便奖100美元 PaintCode - 将矢量图转化为Objective-C代码的开发神器 苹果发布iOS 6.1.3 封杀evasi0n越狱所用漏洞 [API快讯] Google开放实时协作API 58同城开源轻量级Java Web框架 Argo 初创公司AppNeta:4轮融资,4780万美元 MongoDB释放2.4版本:692更新及8大得意之作 十年6亿美元!Amazon云计算喜获CIA大单! 国人当自强:HTML5+联盟首次筹备会成功举行 开源框架TAAE发布 快速打造iOS音频应用 如何学会600多种编程语言 “第五届中国云计算大会”将于2013年6月5-7日在京召开 Ridiculous Fishing:游戏遭遇山寨如何一雪前耻 老游戏的今天:Doodle Jump每周进账2万美元 剑指Evernote 谷歌正式推出Google Keep 开源的JS MVC框架 Backbone.js 1.0发布 前Facebook资深员工王淮给技术创业团队的十点建议 微软发布Windows Embedded 8系列操作系统 Google Play 4.0抢先体验 中国 vs. 非洲:移动医疗的前世今生 Java大数据框架初创企业Concurrent获400万美元融资 基于Edge Animate开发CSS3 Animations 奇怪的问题,急!!!!!!!! 有没有客家人?进来报道一下。 帮忙看几行代码是什么错误? 请问listview的排序问题!!!!!!!!!!???????????????????????????? 其实如今的中国,一个字就可以概括 再VC7中加入对话框的问题 TCP连接发送数据如何限制一个连接的最大速度? win2003 cdk??? 机子无法启动,各位大虾帮帮忙! 在一个FORM里面绘制了GDI对象,怎样将FORM中的选定的区域转换为位图呢? 心情不好,放分。 安装win 98时,提示“没有足够的常规内存”,该如何解决?? 奇怪的查询问题,既没有出错,也没有正确结果。 一个很基础的指针问题,为什么非要转化为一个二级指针再转化为一级指针呀,才能 想自己动手写一个论坛,请大虾推荐几本asp入门书籍 想比较一下corba webservice dcom的异同,作为论文发表如何 如何编程实现对共享文件的进行访问监视? 如何改变select-sQl查询窗的名字啊,默认是“查询”,能否改成自已喜欢的? 求助:做程控滤波器(模拟)可以用哪些芯片??? 请问取整用 那个函数? 快 C# Builder 1.0 企业版BT下载! 很容易的问题,送分了模态对话框问题 这个API调用没胡有语 错误,但为什么在打印出来好多小四方格呀,我以前也遇到 过,不知什么原因 pb8.0与java VM安装问题请教! 请教高手,我将整个目录的文件写到一个ListBox1里,想按字母顺序写入!! 一个页转到另一个页后,另一个页的地址栏上将汉字转换成了%%%%类似的东西,如何解决? form 标签里的 enctype="multipart/form-data" 是什么意思? 哪有jsp的免费空间?最好支持ftp的 我在程序里写了insert语句也执行成功了,但在sql explorer的data里却找不到该条记录?但insert相同记录却也提示记录重复?interbase数据 求解一水晶报表打包后的问题? 我出差了,才回来看了一眼可用分大大的多了,可是信誉分才有56了,怎么办呀!! rh8的文本界面能不能显示中文啊 请问一个命名管道的问题 一个简单的报表问题!请各位来帮忙解决! 各位老大帮我看看啊,什么都好了,就差这个了。 如何为动态创建的控件添加事件过程? C# Builder 1.0 企业版BT下载! 水晶报表求和 作软件需不需要认证?需要,不需要,我们只是讨论一下,不要这么认真 请问当我单击某个按钮时,如何设置此时的鼠标状态??? sql语言里:条件not in 与not exist有什么区别? 三级上机考试模拟软件怎么用? 怎样学API???????? 一个数据查询的问题,在线等待 在哪里可以下载Screnc.exe?急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急 菜鸟问题, GCC 编译出的目标码中函数前面有没有下划线呀? 如何实现一个表单的自动提交? 请教各位,如何在powerpoint 中用vb宏向幻灯片中写入文本 公司和厂有什么区别? 如何实现在Console的进度显示? 请问javaBean 是什么东西? 帮我找个英语演讲女的讲过的就行,只是女的很难找,我们是模仿比赛,时间很短,文本和音频都要 英语演讲啊,大家帮忙找啊,拜托了1.what I like most about My school2.The Importance of seconday Vocational school3.The Happiest Day I Ever Had in MY life 这个是题目啊,要快啊,我会给分的.急用啊! 学一段英语演讲,帮忙找点素材学一段经典的英语演讲,要标准的美音,(带录音带稿子)我是学学计算机的,最好弄段带计算机性质的.不是也计算机的也没什么关系,主要是锻炼.呵呵我的英语基 courage fear请帮忙翻译下 英语单词:empty I ---a heavy bag when I am walking.A.hate to carry B.hate carrying选哪个,为什么?hate不是有两种词组吗?一个是hate to do ,一个是hate doing吗? 个人签名怎么问题我叫李明兵,签名的话,要怎么签比较好看点,就写草字,有哪几种, 这篇文哪有错 在顺便改一下喽 GoshoppingGo shopping is a traditional way.we buy something inthis way for many years .Even today ,many people are used to go shopping.Going shopping hasa lot of advantages,too.You can call on some friends wit 帮忙给看一下错误在哪里,该怎么改正.classMysecondApp {public static void main(String ar[] ) {charc='a';int i=10;float f=15.7;sum(i,f) ;System.out.println("c="+c);}static voidsum(int i,j) {float p;p =i+j;System.out.println("sum is :"+p); 已知数列{an}中,a1=1,AnAn+1=2^n(n∈N*) (1)求数列(An)的前2n项之和S(2n) 已知数列{an} a1 =1 anan=2n a9+a10的值.重要的是方法.a1 =1 anan+1=2^n 求a9+a10 环保部:上半年新疆青海等省区氨氮排放人社部:正研究办法治理公职人员“吃空亚冠决赛今夜首战 恒大优势大或破\"媒体称广州公务员年收入超17万 不少女子超市门口产下龙凤胎续:其亲人已经杭州一头藏獒蹿出工地咬伤小区保洁员欧洲盟友讨伐美国的“监听战争”俄“质子”火箭搭载美国通讯卫星升空诺奖得主:转基因之争需要一场高质量的地球变暖事实确凿 人类活动是主因美国对中国等七国钢铁产品发起贸易救济俄空军司令称新型战略轰炸机将于201以莫奈之名 发现建筑新边界2014群文新人新作 展评展演本周举少儿歌曲创作大赛 决赛亮相电视荧屏什么才是法国人真正的艺术传统从两种艺术风格来谈谈法国人的本源与认用80后的方式解读京剧歌王许冠杰:与旧时代无缝相接NBA东部决赛-热火99-87步行者通讯:安徽黄梅戏的前世今生专家详解美网络战:24小时窃密 曾重
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘