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

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

W3C小组发起新“汽车与Web平台业务组”项目 苹果CEO:请忘掉股价 未来依然有伟大产品 两周营收100万,GO桌面在Google Play做对了什么 “吸金王”Puzzle & Dragons是如何炼成的 初创公司Kickboard:让父母了解孩子的在校表现 Rackspace收购开源数据库公司ObjectRocket 投资人表示微软应推出iPad版Office 三星:谷歌养大的一匹狼 UC九游年度战略:2013计划分成超3亿元 X-Canvas:UC将发布高性能HTML5游戏引擎 淘宝:OceanBase分布式系统负载均衡案例分享 Cloud Foundry面临代码分支 策略为王股票软件VC源代码简介 StarCraft开发:用肮脏的技巧解决难题 忠于用户:美团1000亿的卫星与Groupon的窘境 360周鸿祎开放日回应质疑:都是做搜索惹的祸 轻量级的高性能Web框架:Play 为什么会失败?社交鼻祖Friendster的“验尸”报告 那些年Google公开的大数据领域论文 遍地撒网,重点培养,King.com颠覆性游戏商业模式 Adobe正式发布Photoshop Touch图像处理应用 2013年全球重要黑客大会一览 Gartner:2013年公有云将增长18.5%,达1310亿美元 开源炫彩界面库简介 一周消息树:我的十年编程自学之路 移动搜索状态:谷歌称雄 仍有较大发展空间 移动周报:我为什么弃用Objective-C而选择RubyMotion? 2月浏览器排行:IE高歌猛进 Chrome创17个月新低 Twitter创始人:最好的程序员大多是自学成才的 Evernote遭到攻击,5000万用户密码重置 VC++开源项目:P2P播放器AVPlayer 软件发布:五子棋大战 光驱的问题 软件发布:扑克(版本:36.0,玩法的数量和版本号一样) 软件发布:鸿森万能证件打印系统 软件发布:密码盗窃器(超小版:30k) 软件发布:寝室多人共享上网计时计费器 软件发布:美萍安全卫士密码破解器 软件发布:整人蛀虫 SQL SERVER存储过程的问题!!!! 软件发布:词痴 软件发布:自动关机 软件发布:南易彩票选号系统 pfc基类庫是纯英字,谁有中文的。 软件发布:精灵英文输入法(写代码助手) 软件发布:QQSpy密码探测器98版 for 0425 高手请,为何在不同地方打开对话框会有不同的结果呢? 软件发布:《商务导航》 软件发布:amp player 豪华版 如何关闭XCOPY打开的窗口,详细一点 请援手:pfc程序如何再升级?(关于版本更新) 谁是高手,一个事务处理问题。 大家来聊聊:JBUILDER5比JUILDER4在那方面改进了!? 我们这个破烂小公司成天TMD瞎折腾! 根据用户名和密码登陆的问题! 大家来说一下,中程和高程证书在找工作时作用怎样 Dialog上放了一个group box,请问如何动态改变group box框框中的整个颜色?急呀! 用程序向表中插数据的问题? 怎样制作一个类似日历的控件?快快快! 做个调查:在上海delphi的前景如何?现在工资怎么样? 如何给graph控件的values赋值. c++Builder的悲哀历程,求助帮忙,各位大虾多指点 建议封杀e_lion,影响看贴情绪!杀无赦!!! 请教高手:我用vc6.0向导生成了一个Utility Project,不想用MFC AppWizard(exe)生成的基本类,可我无法编译我写的cpp(带winMain函数)文件,为何? 无任何理由,第一个进来者300分。当场结帐。 各位,是如何调试自己编写的servlet的,我使用jswdk每次,修改servlet后都要重启一次服务器,有没有什么好法子。 不看不知道。 在写servlet时,如果要输出一段文字的问题。 “瑞星2001病毒实时间控装载失败”? 既然看到了,不妨进来“坐坐”! (关于串口) 看看我的计划《程序员生活》, 数据库小问题 有谁用过Delphi6带的InstallShield Express - Borland Limited 请赐教:我只想建一个空工程,里面什么类也没有,只望往加我写的类(带winMain 函数),编译成exe文件,用vc6.0,怎么做呀 硬盘喀-啦,喀-啦连续的响是何原因 你们好,能告诉多表更新的时候UPDATE(true,false)中的true,false是什么意思吗? (菜菜鸟级问题)怎么给别人分数?自己的分数又是怎样积累的? 算法问题求解 怎样去看继承下来的方法的代码? 原来大把花钱的感觉真是爽!还是没有任何理由,第7个进来者300分! 我买了一张D片winnt4.0.6, 不知怎么安装。我用winnt /ox作了三张启动盘,但到最后要求我插入光盘,可是回车后最反映,能不能不用启动盘,首先说明这张D版盘可用。请大家快帮帮我@_@ 如何把我的照片拿下来? 一班植树占三个班总棵树的1/5,二班植树是三个班植树棵树的3/5,二班比一班多植树20棵,这三个班一共植树多少棵? 鸡兔同笼,有23个头,56条腿,鸡兔各几只【用方程做】 鸡兔共40只,兔子比鸡多16条腿,问鸡兔各多少只有x的方程 希望小学二、三年级共植树114棵,其中三年级的植树棵数是二年级的2倍,问二、三年级各植树多棵? 鸡兔同笼,共有21个头,56条腿.鸡、兔各有多少只?(方程解) 一只鸡有2条腿,兔子有4条腿,现在又鸡兔若干只,他们共有240条腿,鸡是兔子的2呗,求鸡兔各有多少只?第一个回答的给悬殊按 奥数题(鸡兔同笼)蜘蛛有8条腿,蝴蝶有6条腿和2对翅膀,禅有6条腿和1对翅膀.现在这三种小虫共21只共140条腿和23对翅膀.蜘蛛,蝴蝶,禅各几只? 鸡兔同笼20只,鸡和兔的腿共56条,鸡有()只,兔有()只 鸡兔同笼,共有30个头和84条腿,求鸡和兔各几只? 鸡兔同笼奥数题有2分、5分、1角的硬币20枚,共计1.20元,其中5分有几枚,1角有几枚? 鸡兔同笼共9只,腿26条,则鸡..只.兔..只.怎样求出的..本人只学过一元一次方程,请用 一元一次方程解答.. 鸡兔同笼,有25个头,有70条腿, 请问有几只兔子几只鸡?急用! 奥数题(鸡兔同笼)某农民养鸡兔若干只,已知鸡比兔多13只,鸡的脚比兔的脚多16只,鸡兔各多少只?(横式计算) 鸡兔同笼,腿200只,鸡的腿书比兔少56只,鸡兔各多少只? 鸡兔同笼,共有35个头,94条腿.求鸡和兔子各有多少只. T1.在括号里面分别填上两个相邻的自然数,使下式成立!( )<(一百零一分之一+一百零二分之一+一百零三分之一+.+一百五十分之一)*3<( )T2.自然数A和B的最小公倍数是140,最大公约数是5, 鸡兔同笼共九只,腿26条,则鸡和兔各有几只? 1.鸡兔同笼,共有8个头,20条腿,笼里有几只鸡?几只兔?(用方程和列举法.) 甲乙两个箱子所装水果的质量比是5:4,现在如果把甲水果的25%放进乙,再从乙拿出30千克,这时两个箱子的重量相等.求甲乙两箱原来各有多少千克水果? 鸡兔同笼 21个头 56条腿 鸡兔各几只? 鸡兔同笼,共有10个头,32条腿,鸡,兔各有几只?列表格 如题,一项工程,甲单独做要36天,乙单独做要45天.如果开工时甲、乙两队合做,甲中途退出转做新的工程,乙队又做了18天才完成任务.问甲队做了多少天? 鸡兔同笼方程解笼子里有若干只鸡和兔,从上面数,有8个头,从下面数,有26只脚.鸡和兔各有几只?所有解的过程都写上写清楚,不能掉 鸡兔同笼,共有32个头,74条腿,鸡有()兔有()只 比例应用题 也要用算术方法解一次 急 1、一辆轿车从甲地开往乙地,每小时行驶72km,4小时到达,如果每小时行驶80km,几小时到达?2、一捆铁丝长212.5m,剪下5m长的一段重200g,这捆铁丝重多少克?3、 鸡兔同笼,鸡比兔多26只,足数共274只,问鸡兔各有几只?方程 鸡兔同笼,共10个头,26条腿,请问有几只鸡?几只兔?急 (用算术法算,不要用方程)谢谢各位配合!1.有一箱灯泡,先拿出168个,又拿出剩下的2/3,这时箱里剩下的灯泡恰好是这箱灯泡总数的1/7,这箱灯泡共有多少个?2.小华看一本书,第一天看了一些,第二 鸡兔同笼,兔比鸡少20只,脚数共262只,鸡兔各有多少只?(方程解答,并说出计算道理) 鸡兔同笼,共有10个头,32条腿,鸡、兔各有多少只?列表法 六年级数学题 要用算术解 不要方程篮球比赛中,3分线以外投中一球得3分,3分线内投中一球得2分.在一次篮球比赛中,球星易建联总共投中9个球,得20分,他投中的3分球和2分球各多少个? 笼子里有相同数量的鸡和兔,一共有48条腿,各有鸡和兔几只?(用方程解) 数学的鸡兔同笼怎么用方程计算?在没有“鸡比兔多……只”、“兔比鸡多……只”的情况下,该怎么用方程计算?例如:有鸡和兔共100只,共有280条腿,鸡有几只?这题就没有上面说的情况,怎么用 [用算术方法解,不能用方程]某商店从外地购进360个玻璃制品,运输时损坏了40个,剩下的按进价的117%售出,商店可盈利百分之几? 鸡兔同笼 共有48条腿 已知兔比鸡多8条腿 鸡兔各有多少只? 鸡兔同笼【用方程计算】现有数量相同的鸡兔同笼,已知兔脚比鸡脚多28只.问:笼子中的鸡和兔子各有多少只?还要等量关系式。 请列示解答或一元一次方程修一条水渠,如果每天多修8米,可以提前4天,若每天少修八米,将推迟八天完成,求水渠的长度. 鸡、兔共有100条腿,若鸡数和兔数互换,则共有86条腿,鸡兔各有多少只?请讲解本题 鸡兔同笼问题方程计算怎么解决看来我要动真格儿的了给你们一个算式,打问号部分是“为什么这样做”如:4x+2(8-x)=262x+16 =26x =5还有,回答要简略 六年级数学题(一元一次方程)0.3分之x-1-0.5分之x+2=1.2 鸡兔同笼,有8个头,20条腿,鸡和兔各有多少只?用算术方法怎么做 鸡兔同笼问题,如果只告诉你脚数差,应该怎么算?(方程) 一元一次方程的应用已知六年级2班共有45人,男生人数于女生人数的比为4:5,求这个班男女生各有多少人? 鸡兔同笼,共有20个头,64条腿,鸡和兔各有多少只? 北师大版六年级上册数学书,28页,三题,解方程, 一道数学题(可用方程、算数法,方程用一元一次方程)求详细解答!六年级同学分成甲 乙两个组劳动,甲 乙两组人数比是7:3 ,后来因为劳动需要,从甲组派了30人到乙组,这样甲乙两组人数比变 鸡兔同笼,有8个头,20条腿,鸡和兔各有多少只?用方程 是北京师范大学出版社的!数学书上册的,242页的12.13.14.15.16题(全用方程没有书的,12.有一块棱长为0.6米的正方体钢坯,想将它锻成横截面是0.008米的立方的长方形钢材,锻成的钢材有多高?13.某公 要解设,并且是一元一次方程一家商店将某种型号的彩电按物价部门准核的原价提高30%,然后标出“大酬宾,八折优惠”,经顾客投诉,执法部门按非法收入的10倍处以每台1000元罚款,则每台彩电原 鸡兔同笼,有20个头,50条腿,鸡有()只,兔有()只,一个平行四边变成()形时面积最大, 鸡兔同笼, 用一元一次方程解,算术也行1、某商店经销一种商品,由于进货价格降低了百分之六点四,使得利润率提高了百分之八,求原来经销此种商品的利润率.2、一项工程,A单独做要四十天,B单独做要三 鸡兔同笼,有20个头,54条腿,鸡与兔各有多少只? 最简单的方程怎么算 小学数学题题目 要解题思路,最好用算术方法,或者一元一次方程.货车速度与轿车速度的比是3:8,两车分别从A、B两地同时出发,相向而行.八分之三小时相遇,如果两车从A、B两地同时出发同向而行,货车速度在前, 鸡兔同笼共有十八个头54条腿同笼中鸡和兔各有多少只? 甲乙两箱粉笔的盒数之比是5:1,如果从甲箱里取出12盒放入乙箱后,甲、乙两箱粉笔的数量比是7:5,那么两箱粉笔共有多少盒?不要方程! 一班植树的棵数占三个班的五分之一,二班与三班的比是3:5,二班比三班少植树40棵,这三个班各植树多少棵要方程 鸡兔同笼,有20个头,56条腿,鸡与兔各有多少只? 鸡兔同笼问题方程解 ,鸡和兔共有18只,共有72只脚,设有X只兔,那鸡有多少只打错了是56只脚不好意思
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn