---- 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Ó¦¿½±´µ½windowssystem×ÓĿ¼Ï¡£ ---- ³ÌÐòÇåµ¥£º 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Îļþ¿½±´µ½windowssystem×ÓĿ¼Ï£¬¸ÃÎļþÊǿؼþ·ÃÎÊÓ²¼þµÄÇý¶¯³ÌÐò£¬Ê¹ÓÿؼþÇ°ÏÈÓÃOpenDriver´ò¿ª£¬×îºóÓÃClose_Driver·½·¨¹Ø±Õ¡£ ---- 2¡¢°Ñocx×ÓĿ¼ÏµÄtvichw32.ocx¿½±´µ½windowssystem×ÓĿ¼Ï£¬²¢ÔÚ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 |