ten eerste heb je twee procedures met dezelfde naam (button 1).
ten tweede zal dat lpt_nogwat een dll moeten aanroepen en die heb je niet gedeclareerd naar ik aanneem of zelfs niet eens op je computer gezet
ten derde zul je bit0 inderdaad zelf moeten declareren als
const bit0 = 1
const bit1 = 2
const bit2 = 4
etc
[Bericht gewijzigd door ikkedus op ]
welke dll? ik heb een programma moeten installeren met een dll
moet ik die in de map zetten?
is het rijtje 1 2 4 8 of 1 2 4 6 8 10
moet ik intypen Const BIT0=1 of anders, en in de bovenste regel van het sub toch?
[Bericht gewijzigd door Jossie Kuijpers op ]
nee, dat klopt niet.
Als je io.dll hebt, zul je parmon.exe ook wel meteen hebben mee gedownload denk ik. Start dit programmaatje op.
Start VB met een nieuw form en zet een timer op het form (vergeet die module). Kopieer dan onderstaande code in de code onder het form (eventueel aanpassen voor VB2005). Let dan op wat parmon.exe doet. Dat zijn je datapinnen.
Let op dat je de outputpinnen (dataregister) van de poort niet kortsluit. Inputpinnen mag je wel naar de Gnd trekken. Op geen enkele pin van de poort mag je een externe spanning zetten.
Option Explicit
' Download Fred Bulback's Dynamic Link Library (DLL) called io.dll from: http://www.geekhideout.com/ and
' copy it into the C:\WINDOWS\SYSTEM directory.
Private Declare Sub PortOut Lib "io.dll" (ByVal Port As Integer, ByVal Value As Byte)
Private Declare Function PortIn Lib "io.dll" (ByVal Port As Integer) As Byte
' Address
' Data Base = &H278 / &H378 / &H3BC
' Status Base + 1
' Control Base + 2
Const LPT_REGISTER_DATA = &H378
Const LPT_REGISTER_STATUS = &H378 + 1
Const LPT_REGISTER_CONTROL = &H378 + 2
' data status control
Const BIT0 = &H1 ' D0 0 /STROBE
Const BIT1 = &H2 ' D1 0 /AUTOFEED
Const BIT2 = &H4 ' D2 0 /INIT
Const BIT3 = &H8 ' D3 ERROR /SLCTIN
Const BIT4 = &H10 ' D4 SELECT 0
Const BIT5 = &H20 ' D5 PAPER EMPTY 0
Const BIT6 = &H40 ' D6 ACK 0
Const BIT7 = &H80 ' D7 /BUSY 0
Private Sub Form_Load()
Form1.Timer1.Enabled = True
Form1.Timer1.Interval = 500
End Sub
Private Sub Timer1_Timer()
Static Toggle As Boolean
If Toggle = True Then
Call PortOut(LPT_REGISTER_DATA, BIT0 Or BIT1 Or BIT2 Or BIT3)
Else
Call PortOut(LPT_REGISTER_DATA, BIT4 Or BIT5 Or BIT6 Or BIT7)
End If
Toggle = Not (Toggle)
End Sub
LPT_besturing
Waar komt dit vandaan? Dit staat niet in de code en komt ook niet van de dll. Gebruik je io.dll wel of zit je te rotzooien met een gare ocx ofzo?
ik heb nu:
Public Class Form1
' Download Fred Bulback's Dynamic Link Library (DLL) called io.dll from: http://www.geekhideout.com/ and
' copy it into the C:\WINDOWS\SYSTEM directory.
Private Declare Sub PortOut Lib "io.dll" (ByVal Port As Integer, ByVal Value As Byte)
Private Declare Function PortIn Lib "io.dll" (ByVal Port As Integer) As Byte
' Address
' Data Base = &H278 / &H378 / &H3BC
' Status Base + 1
' Control Base + 2
Const LPT_REGISTER_DATA = &H378
Const LPT_REGISTER_STATUS = &H378 + 1
Const LPT_REGISTER_CONTROL = &H378 + 2
' data status control
Const BIT0 = &H1 ' D0 0 /STROBE
Const BIT1 = &H2 ' D1 0 /AUTOFEED
Const BIT2 = &H4 ' D2 0 /INIT
Const BIT3 = &H8 ' D3 ERROR /SLCTIN
Const BIT4 = &H10 ' D4 SELECT 0
Const BIT5 = &H20 ' D5 PAPER EMPTY 0
Const BIT6 = &H40 ' D6 ACK 0
Const BIT7 = &H80 ' D7 /BUSY 0
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs)
Me.Timer1.Enabled = True
Me.Timer1.Interval = 500
End Sub
Private Sub Timer1_Timer()
Static Toggle As Boolean
If Toggle = True Then
Call PortOut(LPT_REGISTER_DATA, BIT0 Or BIT1 Or BIT2 Or BIT3)
Else
Call PortOut(LPT_REGISTER_DATA, BIT4 Or BIT5 Or BIT6 Or BIT7)
End If
Toggle = Not (Toggle)
End Sub
Private Sub Button1_Click()
' pin 2 high
Call PortOut(LPT_REGISTER_DATA, BIT0)
End Sub
Private Sub Button2_Click()
' pin 2 low
Call PortOut(LPT_REGISTER_DATA, BIT0)
End Sub
Private Sub Button3_Click()
' pin 3 high
Call PortOut(LPT_REGISTER_DATA, BIT1)
End Sub
Private Sub Button4_Click()
' pin 3 low
Call PortOut(LPT_REGISTER_DATA, BIT1)
End Sub
Private Sub Button5_Click()
' pin 4 high
Call PortOut(LPT_REGISTER_DATA, BIT2)
End Sub
Private Sub Button6_Click()
' pin 4 low
Call PortOut(LPT_REGISTER_DATA, BIT2)
End Sub
Private Sub Button7_Click()
' pin 5 high
Call PortOut(LPT_REGISTER_DATA, BIT3)
End Sub
Private Sub Button8_Click()
' pin 5 low
Call PortOut(LPT_REGISTER_DATA, BIT3)
End Sub
Private Sub Button9_Click()
' pin 6 high
Call PortOut(LPT_REGISTER_DATA, BIT4)
End Sub
Private Sub Button10_Click()
' pin 6 low
Call PortOut(LPT_REGISTER_DATA, BIT4)
End Sub
Private Sub Button11_Click()
' pin 7 high
Call PortOut(LPT_REGISTER_DATA, BIT5)
End Sub
Private Sub Button12_Click()
' pin 7 low
Call PortOut(LPT_REGISTER_DATA, BIT5)
End Sub
Private Sub Button13_Click()
' pin 8 high
Call PortOut(LPT_REGISTER_DATA, BIT6)
End Sub
Private Sub Button14_Click()
' pin 8 low
Call PortOut(LPT_REGISTER_DATA, BIT6)
End Sub
Private Sub Button15_Click()
' pin 9 high
Call PortOut(LPT_REGISTER_DATA, BIT7)
End Sub
Private Sub Button16_Click()
' pin 9 low
Call PortOut(LPT_REGISTER_DATA, BIT7)
End Sub
End Class
Valt wel mee hoor
80 = 8*10 + 0*1 = 80
&H80 = 8*16 + 0*1 = 128
Maar professor botje is blijkbaar de uitvinder van al die procedures. Maar ik neem aan dat hij deze dan ergens verder heeft uitgewerkt.
------------------------------------------------------------------------
Kijk, die dll gebruikt subs en functies, bijvoorbeeld "PortOut" is er eentje
Die kun je gewoon aanroepen:
Private Sub Button1_Click()
Call PortOut(LPT_REGISTER_DATA, BIT4)
End Sub
------------------------------------------------------------------------
Je kunt ze ook in een zelfgemaakte sub zetten, bijvoorbeeld:
Private Sub MijnPortOut(ByVal MyBit as Long)
Call PortOut(LPT_REGISTER_DATA, MyBit)
end sub
Maar die moet je dan wel weer aanroepen met nog een sub, bijvoorbeeld:
Private Sub Button1_Click()
Call MijnPortOut(BIT4)
End Sub
------------------------------------------------------------------------
-functies verwijderd-
[Bericht gewijzigd door ikkedus op ]
Ja en? Dan heb je dus al 11 jaar de tijd gehad om je te verdiepen in de wondere wereld van io.dll en VB2005.
Nou, die speciale functies krijg ik niet aan het werk. Probeer dit maar even. Met parmon kun je precies zien wat er gebeurt.
Option Explicit
' Download Fred Bulback's Dynamic Link Library (DLL) called io.dll from: http://www.geekhideout.com/ and
' copy it into the C:\WINDOWS\SYSTEM directory.
Private Declare Sub PortOut Lib "io.dll" (ByVal Port As Integer, ByVal Value As Byte)
Private Declare Function PortIn Lib "io.dll" (ByVal Port As Integer) As Byte
' Address
' Data Base = &H278 / &H378 / &H3BC
' Status Base + 1
' Control Base + 2
Const LPT_REGISTER_DATA = &H378
Const LPT_REGISTER_STATUS = &H378 + 1
Const LPT_REGISTER_CONTROL = &H378 + 2
' data status control
Const BIT0 = &H1 ' D0 0 /STROBE
Const BIT1 = &H2 ' D1 0 /AUTOFEED
Const BIT2 = &H4 ' D2 0 /INIT
Const BIT3 = &H8 ' D3 ERROR /SLCTIN
Const BIT4 = &H10 ' D4 SELECT 0
Const BIT5 = &H20 ' D5 PAPER EMPTY 0
Const BIT6 = &H40 ' D6 ACK 0
Const BIT7 = &H80 ' D7 /BUSY 0
Private Sub Command1_Click()
' bit 0 hoog, geeft 0000 0001
Call PortOut(LPT_REGISTER_DATA, BIT0)
End Sub
Private Sub Command2_Click()
' bit 1 hoog, geeft 0000 0010
Call PortOut(LPT_REGISTER_DATA, BIT1)
End Sub
Private Sub Command3_Click()
' bit 0 en 1 hoog, geeft 0000 0011
Call PortOut(LPT_REGISTER_DATA, BIT0 Or BIT1)
End Sub
Private Sub Command4_Click()
' alles laag, geeft 0000 0000
Call PortOut(LPT_REGISTER_DATA, 0)
End Sub
[Bericht gewijzigd door ikkedus op ]