[VB] LPT poort lezen

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

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 13:55
Ik hoop niet dat ik met dit topic de irritatiegrens bereik, ookal zie ik hiervoor best de mogelijkheid gezien het aantal topics dat al over dit onderwerp is geweest. Reden om toch dit topic te openen is dat het me gewoon nog steeds niet helemaal duidelijk is.

Ik probeer een Visual Basic programma te schrijven welke de LPTpoort moet kunnen uitlezen om zo te zien of er een knopje wel of niet is ingedrukt.
Nu heb ik uit alle topics hiers welke ik daadwerkelijk allemaal heb doorgenomen, en van een aantal Google-resultaten vernomen, dat ik hiervoor het best dlportio.dll kan gebruiken, aangezien ik Win XP Pro draai.
Goed, nu blij dlportio geinstalleerd, even de sample erbij gepakt.. LEDje in mn LPT poort gedouwd en even wat gekloot met het zoeken naar het goede adres en wat mooi, het LEDje gaat aan en uit bij het drukken op een knop; heel mooi.

Nu schijnt het uitlezen van de pinnen toch iets minder simpel. Als ik gewoon 2 pinnen verbind en deze uitlees krijg ik deze niet als 'aan'. Wanneer ik een pin verbind met de ground, de buitenste ring van de LPT-stekker, lees ik deze ook niet als 'aan'. De waarde die ik uitlees is hoe dan ook, wat ik ook probeer, altijd de waarde die ik ervoor eraan heb toegekent.

Nu begint mij al iets te dagen dat ik misschien met de datapinnen zit te rotzooien en niet met de control of statuspinnen. Ik heb alleen nog niet terug gevonden welke pin nu precies wat is, op welke geheugenadressen deze zitten, en hoe je nou op de juiste manier een contactschakelaar op deze pinnen kan zetten.

Uit de vele plots met "Laat maar, het werkt al"-afgesloten topics lijkt het me dat er hier een groot aantal mensen rondlopen die wel weten hoe het moet, dus ik hoop dat iemand me kan helpen.
Nogmaals, het gaat er dus om dat ik kan uitlezen of een contactschakelaartje wel of niet is ingedrukt.

Alle VB-sources, schema's, of onscherpe foto's zijn welkom.
Indien hier vraag naar is wil ik het resulterende scriptje hier ook wel achterlaten als het eenmaal zover is. Het is overigens uiteindelijk de bedoeling hiermee een controlleboxje te maken voor mijn Digitale Fotolijst.
Ik wil overigens hoe dan ook de LPT, en niet de COM poort gebruiken

[ Voor 3% gewijzigd door frickY op 16-09-2003 20:32 . Reden: typo's ]


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 00:12

Creepy

Tactical Espionage Splatterer

Standaard kan je de datapinnen NIET uitlezen nee. De pinnen van de statusport echter wel.

Bekijk http://www.doc.ic.ac.uk/~ih/doc/par/ en http://www.lvr.com/parport.htm#Hardware eens. (en bekijk Jan's LPT FAQ eens, die is ook een aantal keer in de search genoemd).

Als je niet eens weet op welke adressen de control en status port zitten raadt ik je aan die links eens goed door te nemen. Want ondanks je lange post is het vrij simpel om daar achter te komen.

"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


Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 13:55
Uit je reactie kan ik opmaken dat de statuspinnen inderdaad een ander adres hebben als de datapinnen.
Heb ik het goed als ik zeg dat je de datapinnen (op het decimale adres 888, en hexadres 378) gebruikt om bijv. een led te laten branden of een relais te schakelen. En dat je de statuspinnen moet gebruiken om bijv. de stand van een schakelaar in te lezen?

Heb je enig idee wat het geheugenadres van deze 'status-port' is?
Klopt het dat wanneer je een statusport 'aan' wilt zetten je deze pin moet doorverbinden met de ground? Maakt het niet uit welke ground je pakt? Is de stalen stekker zelf ook ground?

Edit;
Van deze pagina http://www.doc.ic.ac.uk/~ih/doc/par/doc/regpins.html kan ik opmaken dat het adres voor de statusport 1 hoger ligt dan het 'base' adres. aangezien het hexadres voor mijn lpt1 poort 378 is, moet ik dus 379 nemen voor het uitlezen van de statuspinnen.
Dit probeer ik, maar de waarde blijft contant hetzelfde (= hex '78 ), welke pin ik ook met ground verbind
Hex 78 is overigens binair 1111000. Kan ik hieruit opmaken dat pin 1 aan is, net als 2, 3 en 4. En de andere uit? Waarom zijn er dan 7bits wanneer er maar 5 status-pins zijn?

Edit2;
Na het proberen met een LEdje en draafbrug probeer ik nu een statuspin met ground te verbinden met een weerstandje er tussen. Weet niet hoeveel ohm, had hem toevallig liggen. Nu zie ik opeens een andere waarde binnenkomen, namelijk 80 ipv 78. Gekke is alleen dat deze waarde blijft staan, ook wanneer ik het contact weer verbreekkk

[ Voor 55% gewijzigd door frickY op 16-09-2003 21:49 ]


Acties:
  • 0 Henk 'm!

  • Limhes
  • Registratie: Oktober 2001
  • Laatst online: 27-08 15:19
De statuspinnen zijn standaard hoog. Pas als je ze verbindt met aarde worden ze laag. De standaard waarde die jij binnenkrijgt (01111000b) zegt je dus dat alle 5 de statuspinnen hoog zijn (het msb bitje is namelijk de inverse waarde van de feitelijke fysieke waarde).

Als je nu pinnetje 10, 11, 12, 13 of 15 aan aarde hangt moet een van de bitjes veranderen.

Proberen met een weerstand ipv. een draadbrug heeft overigens weinig nut, omdat de ingangen van zo'n LPT poort toch hoogohmig zijn.

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 13:55
De term hoog-ohmig zegt mij niets. Zou je kunnen proberen uit te leggen wat je bedoeld?

De reden dat ik het probeerde met een weerstand ipv draadbrug was deze pagina;
http://www.doc.ic.ac.uk/~ih/doc/joystick/

Ik krijg nu als ik het voorbeeldprogramma van DLprotio opstart en meteen hexadres 379 (wat dus van de statuspinnen is) uitlees hexwaarde 80, terwijl dit voorheen telken 78 was.
-- enige minuten later---

De 80 lijkt te verschijnen wanneer ik een datapin met ground verbind. Deze verdwijnt pas weer als ik FF naar de datapinnen stuur. Tot ik dit doe veranderd hij niet bij welke pin ik ook probeer.
De status van pin 13 en 15 lijkt hij niet te pakken. Kan dit komen omdat ik een Lap-link kabel gebruik en 2 of meerdere draden zijn gecrossed?

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 00:12

Creepy

Tactical Espionage Splatterer

Een laplink kabel is meer dan alleen een rechte 25 polige verbinding, dus ik zou deze zeer zeker NIET gebruiken voor het testen van ledjes en knopjes. Ga aub niet in decimale of hexadecimale waarden praten als je de pinnen uitleest, zet dit meteen om naar binaire zodat je per 1 of 0 een pin kunt voorstellen: 10000000 = alle pinnen laag (want S7 is geinveteerd!).

Deze link geeft perfect aan welk bit welke pin moet voorstellen en of deze is geinveteerd (dat is die streep erboven). Je weet nu ook welke poort het is, dus het lijkt me dat je nu genoeg info hebt om de boel uit te kunnen lezen. In Casemodding & Elektronica zijn vast wel schema's te vinden om een knopje op de LPT poort aan te sluiten ;)

"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


  • frickY
  • Registratie: Juli 2001
  • Laatst online: 13:55
Met behulp van die pagina en nog een andere lukte het inderdaad om te zien of een contact schakelaar werd ingedrukt.
Helemaal lekker werkt het nog niet, maar denk wel dat het gaat lukken.
Ik zou graag het eindresultaat hier ook posten voor diegene na mij die naar het antwoord zoeken, want die wordt gewoonweg niet duidelijk uit alle andere topics over dit onderwerp.
Als ik in het vervolg een vraag heb waarbij ik een waarde post, zal ik deze in binair posten. Tnx voor de tip

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 00:12

Creepy

Tactical Espionage Splatterer

frickY schreef op 17 september 2003 @ 08:31:
Helemaal lekker werkt het nog niet, maar denk wel dat het gaat lukken.
Hoe bedoel je? Als het wat traagjes lijkt te reageren dan kijk je gewoonweg te weinig wat de stand van de pinnen is.
Ik zou graag het eindresultaat hier ook posten voor diegene na mij die naar het antwoord zoeken, want die wordt gewoonweg niet duidelijk uit alle andere topics over dit onderwerp.
Het is altijd leuk om te zien of een probleem is opgelost, en hoe het is opgelost :)
Als ik in het vervolg een vraag heb waarbij ik een waarde post, zal ik deze in binair posten. Tnx voor de tip
Mooi.. dat praat gewoon een stuk makkelijker. En we (nah jah, in elk geval ik ;) )weten meteen dat je snapt wat de waarde die je uitlees betekent (de vragen van hoe zo'n decimale waarde om te zetten naar de juiste waarden van de pinnen is ook al een aantal keer voorbij gekomen namelijk.)

"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


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 11-09 12:01
frickY schreef op 16 September 2003 @ 21:31:
...
Is de stalen stekker zelf ook ground?
....
Nee, de stekker wordt meestel doorverbonden met de afscherming van de kabel ( als die er is ).
Maw, stoorsignalen die worden opgepikt door de afscherming worden via je randaarde weggevoerd.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • frickY
  • Registratie: Juli 2001
  • Laatst online: 13:55
Creepy schreef op 17 september 2003 @ 08:36:
Hoe bedoel je? Als het wat traagjes lijkt te reageren dan kijk je gewoonweg te weinig wat de stand van de pinnen is.
Ik bedoelde hiermee dat hij soms wel ziet dat ik contact maakte, en soms niet. Maar dat zal eerder aan mijn soldeerskills (welke skill :? :+ ) liggen dan aan de software. Momenteel werkt het wel.
Ik check elke 300ms op een signaal, en wanneer deze er is de daarop volgende 2seconde elke 100ms (aangezien ik na 1x drukken meer activiteit verwacht, maar niet continue elke 100ms wil kijken)
Creepy schreef op 17 september 2003 @ 08:36:
Het is altijd leuk om te zien of een probleem is opgelost, en hoe het is opgelost :)
Alles ziet er nu gunstig uit :) Er is nu ook een FAQ over de LPT-poort geopend in 'Casemodding & Electronica' met info over dit overwerp waarmee alles helemaal duidelijk is.

[ Voor 3% gewijzigd door frickY op 24-09-2003 09:33 ]


Verwijderd

.

[ Voor 97% gewijzigd door Verwijderd op 31-10-2023 21:53 ]


  • frickY
  • Registratie: Juli 2001
  • Laatst online: 13:55
Interupt is dus dat mn prog wakker word geschud wanneer er op een knoppie wordt gedrukt, ipv mn prog elke zoveel ms te laten kijken of er een knoppie is ingedrukt?
Dat lijkt me idd beter ja.. maar weet jij hoe het moet? (VB)
Dan mag je het me vertellen want ik heb geen id :7
Pagina: 1