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

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

用Visual Basic轻松地设计Browser及Ftp程序 VB用Winsock控件发信Email VB用Winsock实现点对点通信 邮件检查程序(二) -VB资料 邮件检查程序(一) -VB资料 在VB程序中怎样挂断拨号网络 在VB中利用UDP协议编写聊天程序 在VB中模拟实现邮件传输 在VB中实现文件上传 在VB中使用UDP协议 在VB中用Outlook发电子邮件 在程序中打开 Internet 拨号连接窗口 -VB资料 在一个单位内部或通过广域协议(如X.25)互联的行业内部都有几十或上万台计算机互联,用Intrane 在应用中集成浏览器-VB资料 在桌面上建立一个 Internet 快捷键 -VB资料 VB怎样接收电子邮件(POP3协议简介) VB怎样用VB得知系统当前是否处于internet链结状态 VB制作自己的网络搜索软件 自动更新工作站的应用程序-VB资料 自己的IE——用VB制作浏览器 VB6制作Win98风格的工具栏 VB实现窗口的弹出式菜单 用VB做个漂亮的进度条 Cool 3D 浮動按鈕的模擬作法-VB资料 VB 5.0中实现鼠标拖放 VB5.0下工具条的制作 VB5.0中基于桌面的屏幕技巧 VB5.0中实现字体闪烁效果 VB5实现窗口图像缩放、滚动技巧 VB6.0动态加载ActiveX控件漫谈 VB编程步步高-表单篇 如何调用.chm帮助文件?? jbuilder6的经典书籍哪里有? 在seek(0,2)中,0,2表示什么意思,整个函数又是什么意思。 WebForm2中如果要引用WebForm1中的变量X(属性),怎么办?X在form1中怎样定义?在form2中怎样引用? 关于汇编语言? 用TC如何在开发OpenGL? 机工出的影印版让人失望!!! 我想问一个关于注册表的问题 如何在ASP中显式的声明一个变量,和dim xxx as xxx一样吗? 对图片处理,请问哪里有抓热点的工具Hospot4.exe下载 用jb5+wls7可以吗 急需关于网际协议分析的论文 哪里有关于学习汇编语言的网站? 请教: 我在程序中对excel的单元格作了修改,每次改后都弹出”修改了excel,是否保存“对话框,怎么去掉呀? 请问如何用VC得到局域网中所有SQLSERVER服务器的名称?请高手指教 一个小问题! 关于写帮助文件的问题 要做一个图书馆管理系统,请提些意见,加100分 请问如何判断一个对象类型? 要去面试,调查一下 上海做 J2EE 的开发的月薪是多少? 找带按钮(button)的text类型控件 怎么改变标题蓝的颜色,不要蓝色的 找带按钮(button)的text类型控件 请教一下:现在windows平台上的网络编程一般用什么工具啊??? 问微软专家:关于Windows 服务应用程序问题 再问一个问题,word里怎样建立目录? 如何在不登陆NT的情况下实现每天定时准时关机? 唯一的希望,意大利! 我是VB初学者,几个关于VB的小问题,谢谢 如何唤醒调用了Sleep()函数在睡的线程?谢谢 我切底被搞晕了!关于调ORacle的存储过程。 《EJB Design Patterns II》的PDF可打印版本 LINUX里面有远程终端连接的工具吗? js中的反安装技术 请问在安装完jdk后,是否要自己设classpath(该怎么设?) BarCode控件(高分求解) 有谁在使用VC7.0? 高分求专用数据库驱动(MS SQL2000,IBM DB2) 十万紧急!哪位pdf2txt1.0的注册码能否告知,可以给我发邮件dpwei@metarnet.com,谢谢! 怎样取得一个季度得数据 有谁听说过 vality, torrent, metarecon? 这个查询怎么写? 经典问题 SQL语句问题 如何实现带有CheckBox的JTree 多文档中怎样写子窗口的OnSize()消息 火烧眉头,谁有pb6.5连接Access的补丁??? 谁有完整的MPEG2、MPEG4标准 vc中有没有处理ini文件的类,或请介绍处理ini文件的代码与函数.谢谢(最好有例程)!!! 初次接触lotus不知道从什么地方下手,请赐教 神经冲动经过那些途径传导至大脑皮层? 已知金属桶容积为2*10-3m3,完全没入拉力为10n,露出后,拉力为35n求金属桶密度已知金属桶容积为2*10-3m3,完全没入水中匀速向上拉力为10牛,露出后水面后,拉力为35牛求金属桶密度 如图所示,平行金属板A、B之间有匀强电场,A、B间电压为600V,A板带正电并接地,A、B两板间距为12cm,C点点离A板4cm,下列说法正确的是(  )A.E=2000V/m,φC=200V B.E=5000V/m,φC=-200V C.电子在C点具有 微气泡机耐用吗,可以用多久?想买一台微气泡机耐用点的,因为价格比较贵,所以慎重一点, 既然元电荷是带电体电量的最小单位,那为什么夸克还会有3分之一,3分之二的电荷量? 、(12分)如图5-7-2所示,长度为L=1.0m的绳,系一小球在竖直面内做圆周运动,小球的质量为M=5kg,小球如图5-7-2所示,长度为L=1.0m的绳,系一小球在竖直面内做圆周运动,小球的质量为M=5kg, ply 表示什么样的纱线2 ply,4 ply,etc.I'll be needing 2 ply fingering weight yarn,4 ply sport weight yarn,8 ply & 12 ply.I'd like to order natural,undyed cashmere as well as dyed.请问上面的ply表示什么样子的纱线阿?和nm表示法 元电荷就是单位电荷量,这句话正确吗? 一重为750N,密度为5X103kg/m3金属块A沉在水中的斜坡上,在沿坡向上的拉力F作用下,如图所示,一重为750N,密度为5×103kg/m3的金属块A沉在水中的斜面上,在沿斜面向上的拉力F作用下,物块A以0.2m/s的速 ply的意思是什么谢谢了,大神帮忙啊 元电荷也可作为电荷量的单位这句话为什么不对 9.如图所示,中子内有一个电荷量为 + 23 e的上夸克和两个电荷量为 - 13 e的下夸克,3个夸克都分布在半径为9.如图所示,中子内有一个电荷量为a + 23 e的上夸克和两个电荷量为 b.c- 13 e的下夸克,3个 微气泡机有哪些功能啊?看到几个朋友都在那个悦泊的微气泡机,主要什么功能啊? 神经冲动的传导不可能由哪到哪 如图所示,中子内有一个电荷量为+2/3e 的上夸克和两个电荷量为-1/3e的下夸克 3个夸克3个夸克都分布在半径为r 的同一圆周上,则3个夸克在其圆心处产生的电场强度为 ( ). A .ke/r^ 微气泡机到底有没有效果啊?微气泡机现在卖的那么火,到底有没有效果啊,会不会只是宣传的好啊? 在真空中有两个点电荷,其点电荷量分别为+Q和+4Q,两电荷间的距离为d,求它们之间连线中点处的电场强度 在真空中,离点电荷Q为10cm远的A点有一电荷量为5.0×10的负9次方C的点电荷q,受到3.在真空中,离点电荷Q为10cm远的A点有一电荷量为5.0×10的负9次方C的点电荷q,受到3.0×10的负4次方N的电场力,求A 微气泡机的清洁效果如何?微气泡机的清洁效果怎么样?和超声波清洁相比如何? 晶体硼中的化学键(共价键)是如何连接的? 真空中两个固定的点电荷A、B相距10cm,A的电荷量为+2.0*10 -8(2×10的-8次方)C,B的电荷量为+8.0*10 -8C,现引入电荷C,电荷量为+4.0*10 -8C,则电荷C置于离A——cm,离B——cm处时,C电荷即可平衡;若改变电 微气泡机清洁效果如何?微气泡机清洁效果有没有说的那么好啊,是不是只是说说的啊,有没有用过的人知道效果怎么样的啊? 请问:元电荷就是电子所带电荷量, 真空中有两个点电荷q=+4.0*10的-8次方和Q=--1.0*10的-8次方,分别固定在x坐标抽的X=0和x=6cm.求坐标轴上哪个位置的电场强度为零. 已知足球是由黑色的正五边形和白色的正六边形组成的,若黑块有12块,既有12个正五边形,那么白色的正六边形有几块呢? 真空中固定着A、B两个带负电的点电荷,它们之间的距离为10cm,现将另一个点电荷C放到A、B连线上,(接上)距A为2cm处,C恰好处于平衡状态,则A、B两个点电荷的电荷量之比Qa:Qb为多少? 下面1——5是利用显微镜观察时的几个操作步骤,在显微镜下要把视野里的标本从图中的(1)转为(2),其正的操作步骤是1.转动粗准焦螺旋2.调节光圈3.转动细准焦螺旋4.转动转换器5.移动标本 二极管三极管是什么 电子的电荷量是多少 两块金属板间的电势差是60V,两板间距离是3cm,问两板间匀强电场的电场强度是 电容充足电后对电阻进行放电,要想获得更大的瞬间电流,是提高电容的容量还是提高充电电压? 测得某食物中含氮量为8g,则该食物中蛋白质含量为多少? 水平放置的两块平行金属板长l =5cm,两板间距d=1cm,两板间电压为U=90V,且上板带正电一个电子沿程度方向以速度v0=2.0×107m/s,从两板中央射入(1)电子分开时侧位移是几,(2)电子飞出电场时的速度 二极管于三极管的区别? 神经冲动在生物体内的传播途径是 如图所示,平行金属板A与B相距5cm,电源电压为10v,如果A板接地,则与A板相距1cm的C点能讲解下吗? 一个电容和一个同样大的电源给同样大的电阻放电,谁的放电电流大 被测食物蛋白质每克氮(或蛋白质)中氨基酸含量怎么算?公式是什么? 由两种材料做成的粗细均匀的金属棒,其中AO部分物质的密度是BO部分物质密度的2倍,且长度BO=2AO.现在O点将金属棒支起,则···································( )A 杠杆能平 rc电路暂态过程电容通过电阻放电基本规律是什么 已知蛋白质含氮量为15%左右,若一个成年人从食物中摄取的蛋白质经过体内新陈代谢后.已知蛋白质含氮量为15%左右,若一个成年人从食物中摄取的蛋白质经过体内新陈代谢后,完全转化为尿素CO( 听觉形成过程中,听觉神经传导的兴奋在哪里? ply的意思和用法?全面一点 已知蛋白质含氮量为15%,若成人从食物中摄取的蛋白质经过体内新陈代谢后完全变成尿素[CO(NH2)2]排出体外,每天相当于排出尿素25g,则成人从食物中摄取蛋白质的量接近下列数据中的A 106g B 91g C 神经元之间神经冲动传导的过程依次是( )神经元之间神经冲动传导的过程依次是( )①后神经元上钠离子由膜外内流②后神经元产生神经冲动③释放化学递质④化学递质与受体结合A.③④ 足球有几个五边形几个六边形组成 某同学在用对好光的显微镜观察标本时,发现视野是暗的,可能是什么原因? 神经兴奋的传导过程中,能量是如何消耗的? “因为电子所带的电荷量是最小的,人们把最小的电荷叫做元电荷,所以电子就是元电荷.”这句话对吗? 显微镜观察标本时,若视野上方较暗,下方较亮,应调节哪部分? 神经上下行传导过程孩子们 好好搜吧…注意要加上自己总结的内容~PS:仔细看一下序言,自己探索吧…… 在一个底面半径是10CM的圆柱水桶里 有一个半径为5CM的圆柱钢材浸没水中 当钢材从桶取出 桶里的水下降了2CM求这段钢材的长是多少CM? 长3.0M、重10N且密度不均匀的金属杆,可绕O在竖直平面内自由转动.现用竖直向上的拉力F使金属杆保持水平,测出O点到拉力F的距离及F的大小,再改变拉力F作用点的位置,测出相应的F与x的大小,所 school什么意思 电子电荷量是最少的,我们把最小的电荷叫做(元电荷),E=_____C回答第二个空~ 如图6所示,长1.6m、粗细均匀的金属杆可以绕O点在竖直平面内自由转动,一拉力――位移传感器竖直作用在杆上,并能使杆始终保持水平平衡.该传感器显示其拉力F与作用点到O点距离x的变化关系 school的英文单词是什么意思 元电荷最小电荷量为()库仑? 既然元电荷e是自然界中最小的电荷量,那u夸克电荷量2/3e,d夸克电荷量-1/3e怎么解释呵? 如图所示,平行金属板A,B之间有匀强电场,A,B间电压为600V,A板带正电且接地,A,B两半间距12cm,C点离A板4cm.求:1.C点的电势?2.若将一电子从场外移到C点,电场力做功多少?做正功还是负功?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘