Avatar billede wired Nybegynder
12. december 2002 - 16:59 Der er 8 kommentarer og
1 løsning

læse in/out-port fra VB?

Hvordan læser man en in/out-port fra VB.NET?
Avatar billede wired Nybegynder
12. december 2002 - 17:00 #1
F.eks. port 60 som er keyboard porten?
Avatar billede michaelemanuel Nybegynder
13. december 2002 - 11:04 #2
Kommer an på hvilket OS.

F.eks under WinNT, Win2000 og WinXP er det ulovligt at lave direkte I/O medmindre du er en driver.

Under disse OS skal du bruge F.eks GiveIO.sys til at tillade adgang til I/O.
Se: www.ddj.com/ftp/1996/1996.05/directio.zip

Herefter kan du bruge f.eks Win95io.dll til den reelle I/O.
Se: http://spazioinwind.libero.it/vbprogzone/activex/acx025.html

Declaration som følger :
Private Declare Sub vbOut Lib "WIN95IO.DLL" (ByVal nPort As Integer, ByVal nData As Integer)
Private Declare Sub vbOutw Lib "WIN95IO.DLL" (ByVal nPort As Integer, ByVal nData As Integer)
Private Declare Function vbInp Lib "WIN95IO.DLL" (ByVal nPort As Integer) As Integer
Private Declare Function vbInpw Lib "WIN95IO.DLL" (ByVal nPort As Integer) As Integer
Avatar billede wired Nybegynder
13. december 2002 - 11:36 #3
Kanon Michael, mange gange tak.

Jeg sidder selvfølgelig på win2000 og winXP, du skulle vel ikke have kendskab til en driver der kan klare problemet?

Mvh. Wired
Avatar billede wired Nybegynder
13. december 2002 - 11:38 #4
Ups.. Det er formodenlig den du henviser til...
Avatar billede michaelemanuel Nybegynder
13. december 2002 - 11:40 #5
Jo, som sagt GiveIO.sys løser problemet og tillader at dit program kan udføre direkte I/O.
Det eneste du skal er at kalde GiveIO.sys fra dit program inden du starte med at foretage direkte I/O.
(Se de links jeg gav i tidligere svar)
Avatar billede wired Nybegynder
13. december 2002 - 11:44 #6
Det var lige det jeg skulle bruge... Mange gange tak...

Jeg sætter mig straks til at læse...
(kan se at de er fra '96 virker de også til win2000 og winXP?)

Du lyder til at have arbejdet en del med det - du skulle vel ikke tilfældigvis have en lille simpelt VB.NET eksempel?
Avatar billede michaelemanuel Nybegynder
13. december 2002 - 15:54 #7
Gerne :

'--- GiveIO Declarations ---
Private Const INVALID_HANDLE_VALUE As Long = -1&
Private Const GENERIC_READ As Long = &H80000000
Private Const OPEN_EXISTING As Long = 3
Private Const FILE_ATTRIBUTE_NORMAL = &H80

Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" _
  (ByVal lpFileName As String, _
  ByVal dwDesiredAccess As Long, _
  ByVal dwShareMode As Long, _
  lpSecurityAttributes As Any, _
  ByVal dwCreationDisposition As Long, _
  ByVal dwFlagsAndAttributes As Long, _
  ByVal hTemplateFile As Long) As Long

Private Declare Function CloseHandle Lib "kernel32" _
  (ByVal hObject As Long) As Long

'-- Hvordan installerer jeg driveren GiveIO.sys ?
'Kør Instdrv.exe GiveIO D:\Folder\GiveIO.sys
'Hvor D:\Folder angiver placeringen af GiveIO.sys
'-- Hvordan ser jeg om GiveIO.sys er installeret på en computer ?
'Under DeviceManager sæt flueben under menuen View / Show hidden Devices
'Under klassen 'Non-Plug and Play Drivers' ses enheden GiveIO hvis den er installeret.
'-- Hvordan starter jeg GiveIO ?
'Under GiveIO enheden (se herover) kan du klikke på 'Start' eller 'Stop'
'Her kan du også angive Startup Type = 'Automatic' for at enheden selv starter op
'Du kan også skive 'Net Start GiveIO' eller 'Net Stop GiveIO' i en Command Prompt.

Private Sub cmdGiveIO_Click()
  Dim isOK As Boolean
  isOK = EnableIO()
  If isOK Then
    cmdGiveIO.Caption = "GiveIO is now Enabled"
  Else
    MsgBox "Error: Couldn't access GiveIO.sys"
  End If
End Sub

Function EnableIO() As Boolean
  Dim hDevice As Long
  hDevice = CreateFile("\\.\giveio", _
                        GENERIC_READ, _
                        ByVal 0&, _
                        ByVal 0&, _
                        OPEN_EXISTING, _
                        FILE_ATTRIBUTE_NORMAL, _
                        0&)
   
  If hDevice = INVALID_HANDLE_VALUE Then Exit Function

  Call CloseHandle(hDevice)
  EnableIO = True
End Function
Avatar billede wired Nybegynder
13. december 2002 - 20:27 #8
Det bliver da bare bedre og bedre.

Lige en lille ting... Hvordan installere jeg GiveIO.sys på winXP - den har ikke instdrv.exe?
Avatar billede michaelemanuel Nybegynder
16. december 2002 - 07:56 #9
Instdrv.exe er en del af DDK.
Hvis du ikke lige har DDK ved hånden :-) så kan du nemt finde programmet ved at søge på instdrv.exe på f.eks. google.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester