LPT1 poort aansturen + Visual Basic 5

Pagina: 1
Acties:
  • 146 views sinds 30-01-2008
  • Reageer

  • TeasingU
  • Registratie: Juni 2001
  • Laatst online: 15-09-2022

TeasingU

I Live Longer

Topicstarter
Hopelijk is de titel enigzins duidelijk.

Ik heb op school een opdracht gekregen om de LPT1 poort aan te sturen met een zelf-gemaakt programma.
De bedoeling is om op een gecontroleerde manier de pinconfiguratie hoog "1" of laag "0" te maken.
Ik heb weinig programmeer-ervaring, in Visual Basic 5 heb ik al eens hele simpele programma's gemaakt (Denk bv aan een Euro-calculator e.d.)

Ik ben in het bezit van een paar boeken van Visual Basic, maar ben nog niets tegengekomen over bijv. het aansturen van de LPT1.

Mijn vraag: Is dit mogelijk (in visual basic 5), en kan iemand me beknopt uitleggen waar ik aan moet denken?

Alvast heel erg bedankt!

cd /usr/ports/www/porn make install


  • razor-x
  • Registratie: Februari 2001
  • Laatst online: 05-06 07:37
ja het is mogelijk!
ik heb het wel eens gedaan , om een memory spel te maken met ledjes, die dan op een bepaalde voororde aan gingen (Was erg leuk)

Ik heb het nog wel ergens liggen,zal eens zoeken :)

  • mrfatmen
  • Registratie: Februari 2001
  • Laatst online: 21:14
ligt er ook aan welke os je gebruikt.

win98 kan lptpoort direct aanspreken.
win nt(2000 en xp) kunnen dat niet die moeten het via een dll file doen.

ik heb er een website over zal hem even zoeken.

Heeft uw auto pijn? Ga dan naar de onderdelenlijn
Het bedrijf waar ik met veel plezier werk - Mijn eigen vertrouwde domein


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 18:04

Creepy

Tactical Espionage Splatterer

Kijk een naar driverlinx port I/O driver. Staan voorbeelden voor VB bij. Kan je onder win9x/me/NT/XP/2000 direct ports benaderen en dus je lpt1 rechtstreeks aansturen.

Kijk ook eens hiero: http://www.lvr.com/jansfaq.htm.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • TeasingU
  • Registratie: Juni 2001
  • Laatst online: 15-09-2022

TeasingU

I Live Longer

Topicstarter
Ik ga die site even doorspitten, tnx!

cd /usr/ports/www/porn make install


  • TeasingU
  • Registratie: Juni 2001
  • Laatst online: 15-09-2022

TeasingU

I Live Longer

Topicstarter
Ik ben een tijdje bezig geweest met het programma, maar het lukt nog steeds niet, die bovenstaande site heeft me eigenlijk niet kunnen helpen.

Kan iemand me gewoon een stukje code laten zien, gewoon hoe je in visual basic een pin "hoog" maakt?
De lpt1 poort maakt gebruik van adres 0378 - 037F. Mijn bedoeling is om via een checkbox en een commando-button een pin "hoog" of "laag" te maken.

thnx

cd /usr/ports/www/porn make install


  • Onno
  • Registratie: Juni 1999
  • Niet online
Op dinsdag 27 november 2001 11:22 schreef TeasingU het volgende:
maar het lukt nog steeds niet,
Wat weet je niet, hoe je directe I/O moet doen, of wat je naar poorten moet sturen om pinnen van je parallelle poort te veranderen?

(ik geloof trouwens dat je in VB ook iets als 'open "lpt1:"' kunt doen, om de parallelle poort gewoon als 'bestand' te benaderen)

  • TeasingU
  • Registratie: Juni 2001
  • Laatst online: 15-09-2022

TeasingU

I Live Longer

Topicstarter
De bedoeling is alsvolgt: De pinnen L0 / L7 moet ik met een zelfgemaakt programma besturen. Als ik bijvoorbeeld L3 "hoog" wil maken, dan moet ik een bepaalde checkbox aanvinken, en dan met een commando-button de actie activeren.

Het probleem is dat ik niet weet hoe ik dat uberhaupt moet doen. Ik zit te denken aan een If Then statement.
If checkbox.Value = true, then (poort of pin) = "1".

Je moet dit natuurlijk niet letterlijk nemen. Ik weet dus gewoon niet hoe ik de poort/pin moet aanschrijven.

Als ik het goed begrepen heb kan Open LPT1 alleen in een 16 bits omgeving gebruikt worden. Maar misschien dat iemand anders dat weet.

Dit heb ik gevonden op die bovenstaande site http://www.lvr.com/jansfaq.htm :

Q: In Visual Basic, I use MSComm to read and write to serial ports. How do I do the same for parallel ports?

Unfortunately, things aren't as simple with the parallel port. If all you need is simple line-printer-type output (check the status lines and send each byte with a strobe), you may be able to use the Generic printer object, or the Createfile and Writefile API calls, or (16-bit only) Open "LPT1".

cd /usr/ports/www/porn make install


  • Onno
  • Registratie: Juni 1999
  • Niet online
Op dinsdag 27 november 2001 11:33 schreef TeasingU het volgende:
De bedoeling is alsvolgt: De pinnen L0 / L7
Ohh... alleen maar die pinnen. Dat maakt het een stuk makkelijker, dat zijn de gewone datapinnen.

Volgens mij kun je dat gewoon doen met wat ik hierboven zei: LPT1: als bestand openen. Als je er een byte heenstuurt (print #1,byte ofzo) wordt die naar pin 0 t/m 7 gestuurd.

(maar, dat is een veronderstelling, ik heb nooit met VB gewerkt namelijk :))

De rest van de pinnen is een stuk lastiger.

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 18:04

Creepy

Tactical Espionage Splatterer

Met dat DLPOrtI/o word een VB voorbeeld meegeleverd!

maar goed..kijk ff naar 1 van die DlPortWritePortUchar functies en dan zoiets
code:
1
DlPortWritePortUchar($378,1);

Dit is de Delphi variant, maar de VB variant kan je zelf wel bedenken neem ik aan. Dit zet D0 (jij noemt em L0?) hoog.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • TeasingU
  • Registratie: Juni 2001
  • Laatst online: 15-09-2022

TeasingU

I Live Longer

Topicstarter
Ok ik denk dat ik hiermee wel wat kan, D0 is L0. Ik ga er mee bezig, ik laat weten of het lukt of niet.

Alvast heel erg bedankt voor jullie hulp :)

cd /usr/ports/www/porn make install


  • TeasingU
  • Registratie: Juni 2001
  • Laatst online: 15-09-2022

TeasingU

I Live Longer

Topicstarter
Ik ben bezig geweest met het programma, maar het wil nog niet echt lukken. Een deel van de code heb ik al gevonden.

ff voor de duidelijkheid: De interface bevat: 8 checkboxen, 1 knop om het te activeren, en een tekstvak waarin je de status van de 8 pinnen kan zien.

Hier is de code:

Private Sub cmdActiveren_Click()
Dim Info As String
txtOverzicht.Text = ""
If chkPort1.Value Then
Info = "L0 = hoog" & vbCrLf
Else: Info = "L0 = laag" & vbCrLf
End If
If chkPort2.Value Then
Info = Info & "L1 = hoog" & vbCrLf
Else: Info = Info & "L1 = laag" & vbCrLf
End If
If chkPort3.Value Then
Info = Info & "L2 = hoog" & vbCrLf
Else: Info = Info & "L2 = laag" & vbCrLf
End If
If chkPort4.Value Then
Info = Info & "L3 = hoog" & vbCrLf
Else: Info = Info & "L3 = laag" & vbCrLf
End If
If chkPort5.Value Then
Info = Info & "L4 = hoog" & vbCrLf
Else: Info = Info & "L4 = laag" & vbCrLf
End If
If chkPort6.Value Then
Info = Info & "L5 = hoog" & vbCrLf
Else: Info = Info & "L5 = laag" & vbCrLf
End If
If chkPort7.Value Then
Info = Info & "L6 = hoog" & vbCrLf
Else: Info = Info & "L6 = laag" & vbCrLf
End If
If chkPort8.Value Then
Info = Info & "L7 = hoog" & vbCrLf
Else: Info = Info & "L7 = laag" & vbCrLf
End If
txtOverzicht.Text = Info

Dim Value As Long
If chkPort1.Value Then
Value = DlPortWritePortUchar(Val(TextAddr))
Else: Value = DlPortWritePortUchar(Val(TextAddr))
End If
If chkPort2.Value Then
Value = DlPortWritePortUchar(Val(TextAddr))
Else: Value = DlPortWritePortUchar(Val(TextAddr))
End If
If chkPort3.Value Then
Value = DlPortWritePortUchar(Val(TextAddr))
Else: Value = DlPortWritePortUchar(Val(TextAddr))
End If
If chkPort4.Value Then
Value = DlPortWritePortUchar(Val(TextAddr))
Else: Value = DlPortWritePortUchar(Val(TextAddr))
End If
If chkPort5.Value Then
Value = DlPortWritePortUchar(Val(TextAddr))
Else: Value = DlPortWritePortUchar(Val(TextAddr))
End If
If chkPort6.Value Then
Value = DlPortWritePortUchar(Val(TextAddr))
Else: Value = DlPortWritePortUchar(Val(TextAddr))
End If
If chkPort7.Value Then
Value = DlPortWritePortUchar(Val(TextAddr))
Else: Value = DlPortWritePortUchar(Val(TextAddr))
End If
If chkPort8.Value Then
Value = DlPortWritePortUchar(Val(TextAddr))
Else: Value = DlPortWritePortUchar(Val(TextAddr))
End If

End Sub

_____________

Deze code heb ik "achter" de knop staan. Als ik bijv. checkbox1 aanvink, wil ik door middel van de knop de bijbehorende pin van de LPT1 poort hoog maken. Anders moet er een "0" gestuurd worden.
Wat moet ik nou bij (Val(TextAddr)) invullen? Wat moet er bij Val ingevoerd worden, en wat bij TextAddr?

Alvast bedankt!

cd /usr/ports/www/porn make install


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 18:04

Creepy

Tactical Espionage Splatterer

Op donderdag 06 december 2001 20:35 schreef TeasingU het volgende:
Ik ben bezig geweest met het programma, maar het wil nog niet echt lukken. Een deel van de code heb ik al gevonden.

ff voor de duidelijkheid: De interface bevat: 8 checkboxen, 1 knop om het te activeren, en een tekstvak waarin je de status van de 8 pinnen kan zien.

{snip}

Hier is de code:
Deze code heb ik "achter" de knop staan. Als ik bijv. checkbox1 aanvink, wil ik door middel van de knop de bijbehorende pin van de LPT1 poort hoog maken. Anders moet er een "0" gestuurd worden.
Wat moet ik nou bij (Val(TextAddr)) invullen? Wat moet er bij Val ingevoerd worden, en wat bij TextAddr?

Alvast bedankt!
Ik heb geen idee wat je bedoelt. Maar hier ff wat in psuedo code.
code:
1
2
3
4
5
waarde:=0
For k:=1 to 8 do
    if checkbox[k].checked then
     waarde:=waarde + 2^(k-1)
DlPortWritePortUchar($378,waarde);

Zoiets bedoelde je? Ik check nu de status van 8 checkboxes, en als die aangevinkt staat dan tel ik 2 tot de macht k-1 bij waarde op. (dus 1,2,4,8,16,32 etc.) Waarde wordt naar de printerpoort verzonden zodat de goede pinnen hoog staan (pin 1 = 1, pin 2 = 2, pin3 =4, pin4 = 8.. etc.. )

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • TeasingU
  • Registratie: Juni 2001
  • Laatst online: 15-09-2022

TeasingU

I Live Longer

Topicstarter
bedankt voor je reactie, maar dat is toch Delphi wat je daar gebruikt? Ik gebruik dus Visual Basic.

Ik weet niet hoe ik de lpt1 poort moet adresseren. Via de checkboxes wil ik 8 pinnen L0 (D0) tot L7 (D7) onafhankelijk van elkaar kunnen besturen.

cd /usr/ports/www/porn make install


Verwijderd

Op donderdag 06 december 2001 23:53 schreef TeasingU het volgende:
bedankt voor je reactie, maar dat is toch Delphi wat je daar gebruikt? Ik gebruik dus Visual Basic.
Dat mag niet uit maken, maar vooruit sleur + pleur code
code:
1
2
3
4
5
6
7
8
9
If chkPort1.Value Then Value = Value + 1
If chkPort2.Value Then Value = Value + 2
If chkPort3.Value Then Value = Value + 4
If chkPort4.Value Then Value = Value + 8
If chkPort5.Value Then Value = Value + 16
If chkPort6.Value Then Value = Value + 32
If chkPort7.Value Then Value = Value + 64
If chkPort8.Value Then Value = Value + 128
DlPortWritePortUchar(&h378,value)

  • Pino
  • Registratie: Oktober 2001
  • Laatst online: 14-09 13:24
Is wel een Delphi voorbeeld, maar wat hij bedoelt is:

pin1 = 1
pin2 = 2
pin3 = 4
pin4 = 8
pin5 = 16
pin6 = 32
pin7 = 64
pin8 = 128

En als je dan pin 2 5 en 7 wil aanhebben schrijf je 2+16+64=82 naar lpt1

"If you don't know where you are going, any road will take you there"


  • TeasingU
  • Registratie: Juni 2001
  • Laatst online: 15-09-2022

TeasingU

I Live Longer

Topicstarter
Te gek jullie reacties, hier kan ik weer mee vooruit. Ik wist alleen niet dat je delphi in vb kon gebruiken. Dat heeft m'n leraar ook nooit duidelijk gemaakt.

Heel erg bedankt!

cd /usr/ports/www/porn make install


Verwijderd

Op vrijdag 07 december 2001 00:20 schreef TeasingU het volgende:
Te gek jullie reacties, hier kan ik weer mee vooruit. Ik wist alleen niet dat je delphi in vb kon gebruiken. Dat heeft m'n leraar ook nooit duidelijk gemaakt.
Dat is ook niet zo, maar de code die gepresenteerd werd + de uitleg was voldoende informatie om een VB implementatie te maken, programeren is voor het grootste gedeelte de manier uit denken waarop iets werkt, hoe je het later uit programeerd in VB , delphi,C of wat dan ook doet er niet zo heel veel toe.

  • TeasingU
  • Registratie: Juni 2001
  • Laatst online: 15-09-2022

TeasingU

I Live Longer

Topicstarter
Geen wonder dat die leraar niets zei..... foutje van me!

cd /usr/ports/www/porn make install


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 18:04

Creepy

Tactical Espionage Splatterer

Hmm.. het voorbeeld is zelfs niet eens Delphi :)
De syntax lijkt heel erg op Pascal, maar is het ook niet. := is een standaard teken voor "wordt", en wordt in pseudo code bijna altijd zo gebruikt, dat het toevallig hetzelfde is als de toekenning in pascal.. tja :)
En aangezien ik zelf geen ster in VB ben..

Het ging er mij om, om je een manier te laten zien waarop het mogelijk is. Er zijn (natuurlijk) nog meer manieren om zoiets te doen. Zelfs ben ik niet een voorstander van het geven van complete cut&paste code, je moet zelf wel de code kunnen gebruiken, aanpassen, en er echt wat van leren i.p.v. dom te gebruiken.

Ff ontopic weer:

De juiste waarde krijgen om naar de LPT poort te sturen is gewoon een kwestie van binair om te zetten naar decimaal.
pin 0-7 zijn 8 pinnen, dus acht bits. 0=laag,1=hoog. Zet dat dus achter elkaar (begin met pin0 RECHTS!) en zet die waarde om naar decimaal (das dus dat 2^(k-1) ding), en stuur dat naar de LPT poort.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • white_panther
  • Registratie: Januari 2001
  • Laatst online: 30-04-2023

white_panther

Campzone here we come....

als je hulp nodig hebt kun je ook wel mijn source code ff bekijken (tis wel onder 6 maar dat moet geen probleem zijn)

gr. wouter :)

achja wat zal ik zeggen .................. ik zeg wel niks............... voor de handleiding van dpad klik hier

Pagina: 1