Waarom heb ik het in mijn hoofd gehaald om dit te schrijven?
Nou dat is zeer snel te leren als je ziet hoeveel vragen, en steeds weer, de
zelfde vragen komen over de printerpoort.
Wat hier staat is alleen wat ik weet en wat ik heb kunnen vinden op internet.
aanvullingen aanpassingen mogen ten
alle tijden naar mij geE-mailt worden op Prof.Botje @ Home.nl (spaties weghalen rond de '@')
De printerpoort is dus een paralelle poort. Wat wil zeggen dat deze een reeks
bitjes tegelijk/paralel kan zenden. Deze
komt nog van de goede oude x86 tijd waarin Intel en AMD even als IBM zo goed als
samen werkte :) We praten dan
over eind jaren 80 ( 1988/89 ) Even als de Com poort die ook nog uit die tijd
stamt maar daar over komt ook nog wel
ooit een verhaaltje.
Als we het over de aansluitingen hebben, hebben we het altijd over de
aansluiting op de computer dus niet over de kabel.
Hier onder zie je 2 plaatjes die dit duidelijk moeten maken. Het eerste plaatje
Fig.1 stelt de aansluiting voor die je achter
op de computer kast kan vinden. Plaatje Fig.2 stelt de aansluiting voor die aan
de kabel zit die vervolgens weer naar bv
de printer gaat;
|
|
| Fig.1 | Fig.2 |
Het volgende plaatje is gebaseerd op Fig.1 en stelt de pin out voor:

De tabel die je hier onder ziet is een weergave van wat welke pin voor functie heeft en evt. de extra functies.
|
Pin
|
Signaal
lijn
|
Richting
|
Uitgangs-bit
|
Invert
|
|
1
|
Strobe |
Out
|
Control-0 |
Ja
|
|
2
|
Data0 |
In/Out
|
Data-0 |
Nee
|
|
3
|
Data1 |
In/Out
|
Data-1 |
Nee
|
|
4
|
Data2 |
In/Out
|
Data-2 |
Nee
|
|
5
|
Data3 |
In/Out
|
Data-3 |
Nee
|
|
6
|
Data4 |
In/Out
|
Data-4 |
Nee
|
|
7
|
Data5 |
In/Out
|
Data-5 |
Nee
|
|
8
|
Data6 |
In/Out
|
Data-6 |
Nee
|
|
9
|
Data7 |
In/Out
|
Data-7 |
Nee
|
|
10
|
Ack |
In
|
Status-6 |
Nee
|
|
11
|
Busy |
In
|
Status-7 |
Ja
|
|
12
|
Paper-Out |
In
|
Status-5 |
Nee
|
|
13
|
Select |
In
|
Status-4 |
Nee
|
|
14
|
LineFeed |
Out
|
Control-1 |
Ja
|
|
15
|
Error |
In
|
Status-3 |
Nee
|
|
16
|
Init/Reset |
Out
|
Control-2 |
Nee
|
|
17
|
Select |
Out
|
Control-3 |
Ja
|
|
18-25
|
Ground |
-
|
-
|
-
|
Zoals je uit de tabel kan opmaken is te zien dat het ontwerp van deze poort
geheel gericht is op het doel om een printer aan te sturen.
Maar wat wel het mooie van deze poort is is dat we eigelijk geen 8bits poort
hebben maar wel een 12 bits poort. Waarmee we als
we ons alleen richten op het schakelen van bv lampjes tot maximaal 4096
in/uitgangen kunnen creëren zonder enige problemen.
Met deze wetenschap is er natuurlijk een ondenkbaar veel mogelijkheden met deze
poort te realiseren vandaar ook waarschijnlijk
dat deze poort het al zolang "volhoud" op de computer. Vooral in de
industrie zie je vaak PLC's dan wel oude industriepc's. Met deze
of een soort gelijke poort.
Wat je ook mooi kan doen met deze poort is het rechtstreeks in lezen van data
met Status-3
tot 7 En direct uitsturen met Control-0
tot 3.
En zo hou je dan nog 8 data lijnen over waar je zowel mee kan in als
uitlezen.
|
LET OP! de printerpoort is NIET kort-sluit-vast Ook kan deze max ± 10mA voeren, gebruik dus altijd een optocoupler of het schema wat hier onder staat. Zowel voor in als uitgangen is dit aan te raden. wel kan je er 1 ledje per uitgang van 10mA op aansluiten ( +470W ) voor software-test opstellingen. |
Schema:

Op welk adres bevind zich de printer poort, Zie ook weer de tabel hier onder
:)
Meestal zal je dit maar 1x gebruiken in je programma. En vervolgens zal dit niet
meer van toepassing zijn gezien dan de computer
weet waar hij jou geschreven data/software naar toe moet sturen.
|
Adressering
|
LPT1
|
LPT2
|
| Data bereik (adres LPT + 0) |
&378
|
&278
|
| Status bereik (adres LPT + 1) |
&379
|
&279
|
| Control bereik (adres LPT + 2) |
&37A
|
&27A
|
Omdat ik zelf op dit moment ( Aug. 2004 ) in de zomer vakantie een House
Controle System "HCS" aan het maken ben.
Heb ik dus ook zelf software nodig gehad. Een hele hoop is zo te vinden maar
werkt dan niet goed of nauwelijks te vinden.
Dan wel gewoon weg niet gratis. Wat ik hier voor software ter download heb
gesteld is niet super geavanceerd zoals bv het
wel bekende Microsoft paint ;) Maar je kan er wel je printerpoort mee testen en het
werkt altijd. En mocht het niet werken kijk
dan eens op pagina 6/7 Windows9x / NT voor meer informatie.
Alles wat ik hier beschrijf heeft alles te maken met het aansturen van
belastingen. Waar onder dus vallen. motoren, lampen enz.
Een LCD schermpje aansturen zal mij misschien wel lukken. Maar gelukkig heeft dat
al iemand anders voor mij uitgezocht en ga
ik daar dus niet nog eens tijd aan besteden. Mocht iemand zin hebben hier een
leuke tekst van te maken dan wil ik hem er graag
tussen plakken.
Om iets met software te laten zien of iets werkt is leuk. Maar met een stukje
hardware is het nog VEEL leuker natuurlijk.
Als je serieus aan de gang wil met de LPT poort maak dan eerst dit
schema Dit is eigenlijk gewoon een vereiste om te hebben.
Hier mee kan je niet alleen je software testen maar ook of je poort sowieso nog
wel in orde is.
Ik heb hem ook gemaakt, niet geheel netjes maar ik kreeg het idee om het HCS te maken en wilde zosnel mogelijk aan het testen gaan ;)

Zoals je ziet, netjes een molex plug aan een 2ling snoertje gemaakt voor in de
kast, een Printerplug voor op de LPT poort. en een
kastje waar 8 leds in zitten met een 470W
weerstand in serie. Deze hardware is gewoon puur voor het gemak.
Dit stukje hardware is er natuurlijk ook te verkrijgen in software, namelijk Parmon.exe
Parmon heeft echter
een gebruiksvriendelijk voordeel namelijk; Je kan meteen de HEX, BIN en decimaal
getal aflezen wat er ontstaat op de 8bits uitgang.
Dit kan je natuurlijk wel met een 40xx IC ook op je kasje maken maar dan is het
weer geen handige simpele oplossing.
Iedereen kan het na deze uitleg. Maar hier kan je een leuke handige tool
downloaden wat geen spam, reclame of andere ongein kent.
Ik heb het speciaal gemaakt ( met de hulp van SNUGGEL, www.snuggel.nl
) om te laten zien wat je allemaal kan doen met deze
computer poort. Het programma stuurt zowel direct de LPT poort aan als wel dat
er een kleine indicatie balk aanwezig is die de
poort status ook nog een keer software matig weer geeft. Zodat als je op zondag
middag bezig bent niet het gezeur kan krijgen
dat de elektro shop dicht is :)
Wat je ook wil aansturen het kan met deze poort. Of het nu gepulseerd moet of
met gewoon weg een aan/uit functie alles is mogelijk.
Hier onder staat een stukje uitleg over hoe je makkelijk in Visual basic6 een
simpele licht besturing kan maken. Zowel de software
als de hardware zal ik uitleggen.
In dit gedeelte van de uitleg over de sturing met een LPT poort wordt een
klein stukje software gemaakt
wat hopelijk duidelijk moet kunnen maken, hoe en wat je allemaal op een
eenvoudige manier kan doen met
de combinatie Vb6 en de LPT poort.
We starten Vb6 en maken een gewoon exe bestand:

Vervolgens start Vb en krijg je een standaard "form1". Hierin maak
je uiteindelijk je programma.
Maar wie het nog niet weet. Windows2000 en XP zijn gebaseerd op NT technologie.
Dat wil niks anders zeggen
dan dat hier in elke module, driver, proces en services buiten de harde kern (Kernel)
draaien. Of wel als een
programma een fout maakt, niet meteen je gehele Windows onderuit gaat en een
blauw scherm geeft. Dit heeft wel
als groot nadeel dat de hardware en dus de poorten niet meer zomaar te benaderen
zijn. Wat in de Win9x en dos
familie wel mogelijk was. Dit is makkelijk op te lossen door zelf en
module en driver te schrijven die Windows op
zijn beurt als kernel driver ziet. deze module is op internet gewoon te vinden
als open source dus iedereen kan deze
gebruiken. Hier is de module te downloaden
die ik gebruik in de uitleg. Deze moet je alleen nog wel in je software
zien te krijgen. Gelukkig is Vb een Microsoft product en wat iedereen ook zegt.
Iedereen draait toch op Windows?
Waarom omdat het lekker makkelijk is :)
Het invoegen van de module gebeurt dan ook als volgt:

Inderdaad, In het zip bestand wat je gedownload hebt zit ook een io.dll, Dit
is de werkelijke driver alleen omdat Vb
een verwijzing hier naar toe moet hebben. Hebben we een module met de nodige
informatie moeten adden.
Deze dll moet alleen nog wel in je Windows system32 map geplaatst worden.
Meestal C:\Windows\system32 dan wel
C:\WinNT\system32
Nu kan eigelijk het programmeren de vrije loop nemen. Hier laat ik een simpel
programma zien hoe je een lamp
aan en uit kan doen met 2 knopjes:

Dubbel klik nu op de eerste knop. Deze knop is gedefinieerd als Command1, De
2de als Command2
Als je er op dubbel klikt krijg je een text venster wat er zo uit komt te zien:
_____________________________________
Private Sub Command1_Click()
End Sub
_____________________________________
Private Sub Command2_Click()
End Sub
_____________________________________
Tussen de 2 blauwe regels komt de code die de knop moet
uit voeren als hij wordt ingedrukt.
Als we er de code:
_____________________________________
Private Sub Command1_Click()
Call LPT_DataReg_PinHigh(BIT0)
End Sub
_____________________________________
Private Sub Command2_Click()
Call LPT_DataReg_PinLow(BIT0)
End Sub
_____________________________________
Tussen zetten en drukken op de knop dan zal datalijn0
op de printerpoort hoor worden.
Drukken we op de 2de knop zal deze de data lijn weer laag maken.
Dit kan ook met 1 knop wat in sommige gevallen handiger kan zijn. dan moet het
met de volgende code.
_____________________________________
Private Sub Command1_Click()
Call LPT_DataReg_PinHigh(BIT0)
Call sleep (100)
Call LPT_DataReg_PinLow(BIT0)
End Sub
_____________________________________
Private Sub Command2_Click()
Call LPT_DataReg_PinHigh(BIT1)
Call sleep (100)
Call LPT_DataReg_PinLow(BIT1)
End Sub
_____________________________________
Nu kan je met knop1 datalijn0 hoog en laag maken met
van een pulsje van 100ms. Met een Flipflopje is dit
ideaal voor allerlei verschillende doeleinden. En met de 2de knop kan je nu
datalijn1 hoog en laag maken.
Hier is de beschreven software te
downloaden. Met Parmon is ideaal te zien wat er
gebeurt. Ook als je
zoals eerder beschreven, niet over de hardware oplossing beschikt.
Zoals eerder vermeld is de printerpoort niet kort-sluit-vast en kan hij niet
overweg met
stroompjes groter dan ±10mA.
Het handigste is om een optocoupler te gebruiken in combinatie met een 470W
weerstand.
Dan kan je vanuit daar allerlei meuk gaan aansturen zonder dat je nog rekening
hoeft te houden
met je printerpoort want als die dood gaat op je mooie moederbord kan het veel
geld gaan kosten.
( Niet omdat dan alleen je LPT defect is maar ook je PS/2 toetsenbord/muis
aansluiting )
De 2de manier is is om het met het in "hoofdstuk2" behandelde
schema met de transistor te doen.
Het grootste voordeel van de transistor is dat deze een wat grotere stroom kan
sturen dan een
optocoupler.

De optocoupler is van het typen CNY74-2. Hier zitten er meteen 2 in 1 IC en kost
maar € 0,50 en das niet duur.
Het 3de schema wat SNUGGEL heeft gemaakt. Het is een aanpassing op het eerste
schema maar is waarschijnlijk
voor de meeste mensen van toepassing:
Of je zet er een digitale dimmer op dan kan je met 2 knopjes up/down je licht
dimmen, Of met een flipflop je tiptoets
realiseren.

Het voordeel van de 4027 tegenover de 4013 er zitten er 2 in één IC.
Voor de digitale potmeter zijn er verschillende IC's een er van is de AD5228.

Of wel, Windows 3.x, 95, 98, ME of WindowsNT 4.0 Windows2000, ( NT 5.0 ), of Windows XP
Wie loopt er nou niet tegen aan. Wil je weer een keer wat nostalgie te
voorschijn halen, bv een oud computer spelletje.
Iets wat op de oude PC van je pappie en mammie perfect werkte en op je nieuwe pc
met WindowsXP totaal niet wil draaien.
De meeste weten ondertussen wat het probleem is. Een stuk terug in het
artikel heb ik het al voor een stuk uit gelegd, maar
voor de gene die dat hebben over geslagen zal ik het nog een keer in het kort
uitleggen.
Windows NT, ofwel boven genoemde versies, hebben een soort beveiliging waardoor
als een programma een fout veroorzaakt
niet je gehele Windows omzeep gaat met het resultaat in een reboot / blauw
scherm. Hier heeft Microsoft iets op bedacht maar
dit bracht de eenvoud van programmeren geen goede resultaten met zich me. Zo
wordt door Windows alle toegang tot het aanspreken
van apparaten tegen gehouden, dit tot gevolg dat we niet meer zomaar de poort
kunnen aan spreken. Voor de software die ik hier
besproken heb is het heel eenvoudig om het weer werkend te krijgen onder Windows
NT. Namelijk je zet dit bestandje in je
system32
map te plaatsen. Meestal te vinden onder: C:\Windows\system32 dan wel
C:\WinNT\system32. Dit kan helaas niet je oude dos spelletjes weer
aan de gang helpen. Maar het geeft je wel toegang tot het aanspreken van de
Printerpoort. En dat is waar we het hier over hebben.
Als je met een LCD schermpje aan de gang wil gaan heb je meestal een andere
dll nodig namelijk deze. Deze bezit een aantal
kernel drivers
wat dan ook wil zeggen dat je hier voor de Pc opnieuw voor moet opstarten na het
installeren. Dit komt omdat ze op het aller laagste niveau
mee draaien in het hard van je besturingssysteem. En als hier iets in gewijzigd
wordt moet dat opnieuw geladen worden.
Ook ik weet niet alles iig nog niet alles van de printer poort. Wel ben ik er
achter gekomen dat je
12Bits uit en in kan sturen wat neer komt op een 4096 verschillende
mogelijkheden. Dit komt omdat
we nu alleen van de 8 data lijnen zijn uit gegaan. Maar ook de paperfeder strobe
enz. zijn vrij te
programmeren. Een ander voordeel van de poort is omdat het paralelle data is is
het zeer eenvoudig
uit te breiden zonder eventuele hardware geheel opnieuw te hoeven ontwerpen / te
verbouwen.
Ik heb hier met veel plezier aan gewerkt en hoop dat menig andere er veel aan
zullen hebben.
Mocht iemand aanvullingen hebben. Bv Hoe kan je data inlezen met de poort zou
hij mij daar
een groot plezier mee doen. En kan ik dit ook hier er nog bij zetten.