Op 13 juli 2006 21:18:33 schreef Martijn v:
uuuh, je debugger zegt dat een bepaalde subroutine niet gevonden kan worden. Er is een regel code geselecteerd. De verwijzing naar (naam van) de subroutine moet gelijk zijn.LPT_DataReg_PinLow is iets anders dan
LPT_DataRegPinLowsuc6
kijk ik ben niet zo goed in programeren als zei een kennis: "je bent wel goed in programeren voor iemand van 13 jaar oud" maarhu ik ben niet geweldig in programerendus ik heb het verander zoals je zei niet LPT_DataReg_PinHigh (BIT0) maar LPT_DataRegPinHigh (BIT0) en hij geeft nog steeds de zelfde error aan|:(
ik ben echt radeloos en ik wil zo graag mijn bestuurbaare helikopter aan de lpt poort zetten zodat ik hem met mijn oude laptop (als je het no een laptop mag noemen) kan besturen
Martijn v
KIS!!: Keep It Simple
doe eens alles wat je heb posten.
zal k er ff naar kijken. bovenstaande post heb ik gewijzigd omdat ik pas later bedacht dat het geen spelvout was maar dat api verhaal.
Martijn v
KIS!!: Keep It Simple
Op 13 juli 2006 21:28:24 schreef toko:
[...]
ik wil zo graag ..
je moest eens weten wat ik wou...
ik ben echt radeloos
helemaal nergens voor nodig. voor zaterdag vliegt die heli.
trouwens, heb je wel zon lang snoer dan? 
uuh, 'k ga ff weg, maar dit moet het doen:
8 checkboxen plaatsen, en 1 button.
Option Explicit
'api's for writing to the LPT poort
Public Const LPTPOORT_1 As Long = 888
Public Const LPTPOORT_2 As Long = 632
Public Declare Sub apiPORTOUT Lib "IO.dll" Alias "SchrijfLPT" (ByVal Adres As Long, ByVal Data As Long)
'Public Declare Function apiPORTIN Lib "IO.dll" Alias "LeesLPT" (ByVal Adres As Long)
Private Sub Commandbutton_Click()
Dim LPT As Integer
'per pin bekijken of deze hoog moet zijn, en de waarde berekenen
If Checkbox1.Value = vbChecked Then LPT = LPT + 1
If Checkbox2.Value = vbChecked Then LPT = LPT + 2
If Checkbox3.Value = vbChecked Then LPT = LPT + 4
If Checkbox4.Value = vbChecked Then LPT = LPT + 8
If Checkbox5.Value = vbChecked Then LPT = LPT + 16
If Checkbox6.Value = vbChecked Then LPT = LPT + 32
If Checkbox7.Value = vbChecked Then LPT = LPT + 64
If Checkbox8.Value = vbChecked Then LPT = LPT + 132
'waarde uitsturen naar LPT
apiPORTOUT LPTPOORT_1, LPT
End Sub
[Bericht gewijzigd door Martijn v op ]
heb je wel zon lang snoer dan?
ik sluit hem aan op de draadloze afstandsbediening snappie maarhu vraagje je stuurde mij een code
option explicit
Public Const LPTPOORT_1 As Long = 888
Public Const LPTPOORT_2 As Long = 632Public Declare Sub apiPORTOUT Lib "IO.dll" Alias "SchrijfLPT" (ByVal Adres As Long, ByVal Data As Long)
Public Declare Function apiPORTIN Lib "IO.dll" Alias "LeesLPT" (ByVal Adres As Long)
maarhu is dat wel vb of is het c++ want dat snap ik niet helemaal
zou je niet iets kunnen maken met screenshots waar je uitlegt waar ik die code moet neer zetten en ik hem moet gebruiken
Martijn v
KIS!!: Keep It Simple
ja. dit is allemaal VB6!
verder... sorry, ik ga je niet met plaatjes laten zien hoe dit moet. daar zijn hele mooi boeken over geschreven! bovendien moet ik nu echt weg..
mzzl
free_electron
Silicon Member
Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM
@martijn :
pin 2 is 1 waard !
pin 3 is 2 waard
4 is 4
5 is 8
poot 1 bij ene printerpoort is de strobe
en je hoogste bit is 128 waard en niet 132
Martijn v
KIS!!: Keep It Simple
je heb gelijk:
pin 2 van de LPT stekker, is datakanaal 0, met adres 1.
132 moet idd 128 zijn jah!
Ik heb even geen idee of "SchrijfLPT" de functie in IO.dll is. Bestanden en functies kunnen hernoemd worden, dus na een tijdje heten ze allemaal anders, maar zijn hetzelfde..
[Bericht gewijzigd door Martijn v op ]
yo bedankt maar ik snap niet precies hoe het werkt met die schrijflpt en leeslpt kan iemand niet gewoon een kopier en plak script voor me maken.
dat zou ik echt vet cool vinden
p.s:ik zal alles wat ik tot nu wel ff posten maar dat doe ik strax ik kan er nu nog niet bij|:(
[Bericht gewijzigd door toko op ]
hennep
reading can seriously damage your ignorance
toko
Ik neem aan dat je io.dll van deze pagina gebruikt: http://geekhideout.com/iodll.shtml
Daar staat ook een lijst met "private declare" statements.
Neem die over in je programma en je dll gaat werken.
Ik weet niet wie die nederlandse functienamen heeft bedacht maar waaron zou je afwijken van de originele namen.
Als je daarna nog steeds de melding "sub or function not defined" krijgt dan heb je waarschijnlijk een typefout in de sub- of functie-naam gemaakt.
[Bericht gewijzigd door hennep op ]
dan nog een vraagje waar moet ik de "private declare" statment neer zetten bij form_onload() of als ik op bij command1_click()
greetz jetse
hennep
reading can seriously damage your ignorance
Je kunt alle declare statements bovenin zetten onder "option explicit" als je dat wilt gebruiken en boven de eerste function of sub
Dus bijvoorbeeld:
Option Explicit
Private Declare Sub PortOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Byte)
Private Declare Sub PortWordOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Integer)
Private Declare Sub PortDWordOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Long)
Private Declare Function PortIn Lib "IO.DLL" (ByVal Port As Integer) As Byte
Private Declare Function PortWordIn Lib "IO.DLL" (ByVal Port As Integer) As Integer
Private Declare Function PortDWordIn Lib "IO.DLL" (ByVal Port As Integer) As Long
Private Declare Sub SetPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte)
Private Declare Sub ClrPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte)
Private Declare Sub NotPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte)
Private Declare Function GetPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte) As Boolean
Private Declare Function RightPortShift Lib "IO.DLL" (ByVal Port As Integer, ByVal Val As Boolean) As Boolean
Private Declare Function LeftPortShift Lib "IO.DLL" (ByVal Port As Integer, ByVal Val As Boolean) As Boolean
Private Declare Function IsDriverInstalled Lib "IO.DLL" () As Boolean
Private Sub Command1_Click()
PortOut &H478, 255
End Subwanneer je meerder formulieren gaat maken die van io.dll gebruik maken dan is het handiger om het in een module te zetten.
Om er dan voor te zorgen dat het in alle formulieren werkt dien je geen private declare te gebruiken maar bijvoorbeeld
module:
Public Declare Sub PortOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Byte)
Public Declare Sub PortWordOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Integer)
Public Declare Sub PortDWordOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Long)
Public Declare Function PortIn Lib "IO.DLL" (ByVal Port As Integer) As Byte
Public Declare Function PortWordIn Lib "IO.DLL" (ByVal Port As Integer) As Integer
Public Declare Function PortDWordIn Lib "IO.DLL" (ByVal Port As Integer) As Long
Public Declare Sub SetPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte)
Public Declare Sub ClrPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte)
Public Declare Sub NotPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte)
Public Declare Function GetPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte) As Boolean
Public Declare Function RightPortShift Lib "IO.DLL" (ByVal Port As Integer, ByVal Val As Boolean) As Boolean
Public Declare Function LeftPortShift Lib "IO.DLL" (ByVal Port As Integer, ByVal Val As Boolean) As Boolean
Public Declare Function IsDriverInstalled Lib "IO.DLL" () As Boolean
[Bericht gewijzigd door hennep op ]
nog een vraagje als het script van jouw gebruikt en ik druk op de knop blijft er dan stroom op staan tor ik opnieuw druk of komt er maar een klein schokje.
en zou je
Private Sub Command1_Click()
PortOut &H478, 255
End Subeven nader kunnen verklaren want waar zijn al die cijfertjes en dat "&" tekentje
en kan ik met de input commando b.v. als ik bijvoorbeeld een singaal geef aan de ingang en ik geef het commando als die pin een singaal geeft dat hij dan een script uitvoert (en zou je dan een vooorbeeld willen geven)
alvast bedankt
[Bericht gewijzigd door toko op ]
hennep
reading can seriously damage your ignorance
Private Sub Command1_MouseDown(......
Private Sub Command1_MouseUp(.....
gebruiken i.p.v. click
&h voor een getal is voor hexadecimale notatie
&hFFFF => 65535
free_electron
Silicon Member
Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM
en tis address &h378 en niet &h478
de poorten zitten zo:
LPt1 : &h278
LPt2 : &h278
en de prn ( als je een derde hebt noemt die PRN en niet LPT3 zoals zovelen denken) &h3bc
en wat betekent 255 en hoe werkt de input dan (een voorbeeld als het kan (datsnap ik het best))
enhu wat met er dan tussen de haakjes staan achter "....mouseup()"
alvast bedankt
[Bericht gewijzigd door toko op ]
hennep
reading can seriously damage your ignorance
Je hebt al weer gelijk Vincent.
't is lange geleden dat ik zoiets gedaan heb. Gelukkig had ik nog twee cijfers goed 
hennep
reading can seriously damage your ignorance
denk eens na toko!
wat wil je doen met een output poort?
variable = PortIn( &H378 )
[Bericht gewijzigd door hennep op ]
maar ik wil best wel denken maar dan moet ik wel wat tips want ik weet niet hoe die "if" en "then" werken,want ik denk dat ik iets moet doen als:
if portin(&h378)= treu then bladieblad..........of heb ik dat fout.
en met dat output wil hebben dat als ik de muis omhoog beweeg dan een sinngaal komt op de derde pin en dat singaal dat stopt als ik de muis niet beweeg en dat de vierde pin een singaal komt als ik de muis naar beneden beweeg.(ik heb zon oude laptop met een joystickje tussen de toetsen als muis daar wou ik het script op laten draaien)
greetz jetse
[Bericht gewijzigd door toko op ]
Martijn v
KIS!!: Keep It Simple
Op 14 juli 2006 17:33:56 schreef toko:
nog een vraagje. Als ik het script van jouw gebruikt en ik druk op de knop blijft er dan stroom op staan tot ik opnieuw druk of komt er maar een klein schokje.
blijft staat, totdat je opnieuw commando geeft.
en zou je
Private Sub Command1_Click() PortOut &H478, 255 End Subeven nader kunnen verklaren want waar zijn al die cijfertjes en dat "&" tekentje
- &H478 is de hexidecimale notatie van het getal 888.
Dat is het geheugenadres van LPT poort 1.
LPT 2 = 632 oftewel &H278
- 255 is de waarde die je uitstuurt.
die waarde zou je kunnen berekenen met deze code
Dim LPT As Integer
'per pin bekijken of deze hoog moet zijn, en de waarde berekenen
If Checkbox1.Value = vbChecked Then LPT = LPT + 1
If Checkbox2.Value = vbChecked Then LPT = LPT + 2
If Checkbox3.Value = vbChecked Then LPT = LPT + 4
If Checkbox4.Value = vbChecked Then LPT = LPT + 8
If Checkbox5.Value = vbChecked Then LPT = LPT + 16
If Checkbox6.Value = vbChecked Then LPT = LPT + 32
If Checkbox7.Value = vbChecked Then LPT = LPT + 64
If Checkbox8.Value = vbChecked Then LPT = LPT + 132
en kan ik met de input commando b.v. als ik bijvoorbeeld een singaal geef aan de ingang en ik geef het commando als die pin een singaal geeft dat hij dan een script uitvoert (en zou je dan een vooorbeeld willen geven)
alvast bedankt
Op 14 juli 2006 12:35:46 schreef toko:
yo bedankt maar ik snap niet precies hoe het werkt met die schrijflpt en leeslpt kan iemand niet gewoon een kopier en plak script voor me maken.
dat zou ik echt vet cool vinden.ik heb je verschillende stukken code gegeven je hoeft allen erin te plakken...
Martijn v
KIS!!: Keep It Simple
Op 14 juli 2006 17:55:50 schreef toko:
maar ik wil best wel denken maar dan moet ik wel wat tips want ik weet niet hoe die "if" en "then" werken,want ik denk dat ik iets moet doen als:if portin(&h378)= treu then bladieblad..........
bijna correct.
zoiets?
i = portin(&h378)
if i and 1 then 'ingang1 = hoog
if i and 2 then 'ingang2 = hoog
if i and 4 then 'ingang3 = hoog
if i and 8 then 'ingang4 = hoog
enz
maar volgens mij maak ik wel een foutje met de reeks adressen 1 2 4 8 enz voor de ingangen??? weet iemand dat?
en met dat output wil hebben dat als ik de muis omhoog beweeg dan een sinngaal komt op de derde pin en dat singaal dat stopt als ik de muis niet beweeg en dat de vierde pin een singaal komt als ik de muis naar beneden beweeg.(ik heb zon oude laptop met een joystickje tussen de toetsen als muis daar wou ik het script op laten draaien)
greetz jetse
dus zegmaar waneer de muis naar beneden over je monitor rolt? dat is een beetje lastig proggen. de (pijltjes?)toetsen zijn dan veel makkelijker..
dat wordt dan zoiets:
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
'pijltje omlaag.
if keycode = 67(??) then PortOut &H478, 8
'pijltje omhoog.
if keycode = 68(??) then PortOut &H478, 0
End Sub
uuh, die keycode moet je even opzoeken..
dat doeik altijd met deze code, en wat te testen door op je toetsenboard te rammen
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
msgbox "Keycode is: " + str(keycode)
End Sub
[Bericht gewijzigd door Martijn v op ]
hennep
reading can seriously damage your ignorance
Op 14 juli 2006 17:55:50 schreef toko:
if portin(&h378)= treu then bladieblad..........of heb ik dat fout.
portin retourneert geen boolean maar een byte
Daarmee kun je dus een waarde lezen.
Wat je ermee gaat doen valt buiten de scope van een electronica forum, als je ermee gaat if-en en else-en dan kun je voor dergelijke vragen beter een vb forum zoeken.
als ik de muis omhoog beweeg ... als ik de muis naar beneden beweeg...
Daarvoor zijn MouseUp en MouseDown events.
Ik denk dat we de aansturing van de poorten duidelijk behandeld hebben.
Je was me net voor Martijn, ik laat het verder aan jou over 
Martijn v
KIS!!: Keep It Simple
Op 14 juli 2006 18:19:22 schreef hennep:
[...]Wat je ermee gaat doen valt buiten de scope van een electronica forum, als je ermee gaat if-en en else-en dan
1000% gelijk! leer eerst eens programeren voordat je je windoos op zeep help door geheugen adressen te bombarderen met zelfgemaakte rotzooi.
Ik heb nog wel een boekje liggen voor je.
"Visual basiq in 24 uur".
Ik deed er ruim een week over 
free_electron
Silicon Member
Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM
const lpt1=&h378
sub form_load
' deze code draait coordinaten systeem om van 0 , 0
' linksboven naar 0,0 naar linksonder
picture1.scaletop = 100
picture1.scalewidth - 100
picture1.scaleleft= 100
picture1.scalewidth= -100
end sub
sub picture1_mousemove(x as long,y as long,button as integer )
static old_x
static_old_y
dim shadow
if button=1
if x <> old_x then
if x <old_x then
out lpt1,4
else
out lpt1,8
end if
end if
if y <> old_y then
if y< old_y then
out lpt1,1
else
out lp1,2
end if
end if
old_x=x
old_y=y
end if
end sub
sub picture1_mouseup
' wis de beweging
out lpt1,0
end sub
voila
plak ene picturebox op je scherm
als je met je muis over die picturebox beweegt EN je houdt je linker knop 1 dan registreert dit programma bewegingen
pin 2 van je printerpoort wordt 5 volt als je omhoog beweegt
pin 3 wordt hoog als je omlaag beweegt
pin 4 wordt hoog als je links beweegt ne pin 5 wordt hoog als je rechts beweegt
als je de muisknopt lost gaan alle pinnen naar nul
let op deze code kan geen weg met diagonale bewegingen.
daarvoor meot er iets meer filtering gebeuren.
ook bibberen kan rare dingen doen. daar voor zou er een filter coeficient moeten komen die bewegingen kleiner dan een bepaald getal niet activeert :
pas de boal dan aan
const filter = 4
if x< (old_x - filter) then
end if
if x> ( old_x + filter) then
end if
enszovoort.
ik ben al een heel eind hij geeft geen errors meer aan.
alleen elke keer als ik het script run en druk op de knop "opstijgen" veranderd geen enkele pin in parmon.exe:+
greetzz jetse
Martijn v
KIS!!: Keep It Simple
het programma Parmon.exe doet precies hetzelfde als jij nu aan het schrijven bent. De LPT uitgangen aansturen en de ingangen controleren.
Heb je dit schema aangesloten op pin 3?
http://www.circuitsonline.net/circuits/view/34
verder, ik zou even je elektro testen met een oude PC die stuk zou mogen gaan.