麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

VB對低層硬件訪問控制

2019-11-18 17:33:20
字體:
來源:轉載
供稿:網友
VB沒有提供直接訪問低層硬件的控件和方法,一度給對訪問硬件感興趣的編程者帶來不便。目前我們可從網上搜索到支持低層硬件訪問的DLL和ActiveX控件,通過它們可讀寫存儲器單元、端口,甚至控制硬件中斷。下面通過兩個利用DLL和ActiveX控件示例介紹VB對低層硬件的訪問控制。
一、利用DLL讀寫端口

  若在應用程序中只是簡單地讀寫端口,利用DLL編程實現較為簡便。從http://personal.vsnl.com/sr網站可下載一個免費的32位VBIO.DLL,該連接庫允許在VB4、5或6中使用,共有七個函數和過程,分別為:

AnjanDLL的解鎖過程
Inp端口讀字節函數
Inpw端口讀字函數
Out端口寫字節過程
Outw端口寫字過程
GetLptBaseAddr獲取并口基地址的函數
GetComBaseAddr獲取串口基地址的函數


  一個發聲示例程序的窗體,在輸入框中鍵入一頻率值并按SoundOn鈕,則在PC機的揚聲器中發出指定頻率音調,程序中對音調的變化、聲音的開關是用VBIO.DLL的過程和函數訪問發聲系統的定時器/計數器和控制端口實現的。編程要點:
1.應在Form_Load中加入Anjan解鎖過程。
2.若在模塊中聲明函數和過程,應去掉

PublicSubSetFreq(soundHzAsInteger)設置頻率
I
fsoundHzThen
DimdivisorAsLong
divisor=1193180/soundHz計算時間常數
Out&H42,&HB6
8253-5通道2設置為方式3
Out&H42,divisorMod256送時間常數
Out&H42,divisor/256
SpeakerTrue
Else
SpeakerFalse
EndIf
EndSub

PublicSubSpeaker(sOnAsBoolean)開關聲音
DimportValAsInteger
portVal=Inp(&H61)
IfsOnThen
portVal=portVr3
低位為通道2的門控信號
Else次低位為整形與門控制信號
portVal=portValAnd(Not3)
EndIf
Out&H61,portVal

EndSub

PrivateSubForm_Load()
Anjan軟件解鎖
EndSub

PrivateSubSoundOff_Click()
SpeakerFalse
EndSub

PrivateSubSoundOn_Click()
SetFreqVal(TextHz)
EndSub


二、利用ActiveX處理硬件中斷


  在應用程序中如果需要訪問存儲單元、端口以及處理硬件中斷,使用TVicHW32ActiveX控件是一很好的選擇,該控件是一個共享軟件,支持Windows95/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命令行狀態下鍵入以下命令進行注冊:
  regsvr32tvichw32.ocx
在VB環境下通過菜單工程--部件--控件并選擇TVicHW32ActiveXControlModule將控件添加到工具箱中。
相關的屬性、方法及事件
方法OpenDriver打開支持訪問硬件
的驅動程序vichw.vxd(windows95下)
方法CloseDriver關閉驅動程序
屬性ActiveHWAsBool驅動程序打開
則為True;關閉為False
中斷事件OnHwInterrupt(ByValHwCounterAsLong,
ByValLPT_DataRegAsInteger,
  ByValLPT_StatusRegAsInteger,
  ByValScanCodeAsInteger
  )
  參數
 HwCounter:中斷次數
LPT_DataReg:如果使用IRQ7,
則為打印并口的數據
LPT_StatusReg:如果使用IRQ7,
則為打印并口的數據
ScanKode:如果使用IRQ1,
則為按鍵的掃描碼
屬性IRQNumber指定中斷號,
范圍IRQ1--15
屬性IRQMasked中斷非屏蔽則為True;
屏蔽為False。


  示例的窗體,程序運行后首先按Open_Driver鈕打開驅動程序,然后選擇Unmarsk復選框開放中斷,此時每按一次鍵框中分別顯示該鍵的掃描碼和中斷次數。處理其他中斷只需更改中斷號即可(中斷號1—15)。

  程序清單:

PublicSubShowButtons()
Open_Driver.Enabled=NotHwCtrl.ActiveHW
Close_Driver.Enabled=HwCtrl.ActiveHW
B_Unmask.Enabled=HwCtrl.ActiveHW
EndSub

PrivateSubForm_Load()
ShowButtons
EndSub

PrivateSubOpen_Driver_Click()
HwCtrl.OpenDriver打開驅動程序
IfNotHwCtrl.ActiveHWThen
MsgBox(“ThedriverVICHWxxnotfound")
Else:
HwCtrl.IRQNumber=1中斷號為1,鍵盤中斷
EndIf
ShowButtons
EndSub

PrivateSubClose_Driver_Click()
HwCtrl.CloseDriver關閉驅動程序
B_Unmask.Value=0
ShowButtons
EndSub

PrivateSubB_Unmask_Click()
IfB_Unmask.Value=0Then
HwCtrl.IRQMasked=True
Else
EndSub

->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黄色毛片一级 | 免费午夜视频在线观看 | 国产成人免费精品 | 国产1区2区3区中文字幕 | 国产免费高清 | 黄色大片网站在线观看 | 久久久久久亚洲综合影院红桃 | 国产精品v片在线观看不卡 成人一区二区三区在线 | 九九热视频这里只有精品 | 操你啦免费视频 | 欧美性生交zzzzzxxxxx | 精品久久久久久久久久久久 | 国产精品久久久久久影院8一贰佰 | 国产视频在线免费观看 | 成人毛片免费播放 | 亚洲成人第一区 | 操操插插 | 激情在线免费观看 | 蜜桃精品视频 | 毛片免费观看日本中文 | 圆产精品久久久久久久久久久 | 成人综合一区二区 | 神马顶级推理片免费看 | 欧美日韩一 | 精品爱爱 | www.777含羞草 | 久久蜜桃香蕉精品一区二区三区 | 欧美黄色大片免费观看 | 草逼一区 | 欧美高清在线精品一区二区不卡 | 成年免费视频黄网站在线观看 | 欧美性受xxxxxx黑人xyx性爽 | 久久久免费观看完整版 | 欧美精品免费一区二区三区 | 成人区一区二区 | 精选久久 | 大学生一级毛片 | 久久伊人精品热在75 | 欧美成人一区二区视频 | 九色在线78m | 中文字幕精品一二三四五六七八 |