# parallellporten
Author: Bjorne

Hej på er

Jag har under tidigare år använt parallellporten, LPT för olika I/O-ändamål.  Jag använde QBASIC kommandona **inp** och **out** för att på ett enkelt sätt kunna läsa och skriva på parallellportens register.  
I och med XP så verkar den möjligheten vara stängd.  
Jag vill nu fråga om det är någon som känner till något nytt och bra sätt att kommunicera med LPT1 trots XP.  
Helst så skulle jag vilja använda den (VBA) basic som ligger under EXCEL eller Qbasic även om den börjar kännas lite väl ålderstigen.  
Om man söker på nätet så hittar man alla möjliga länkar där man påstår sig ha lösningen på detta men förutom allt möjligt krångel med register och DLLfiler så verkar det vara frågan om att man  skall använda C++ eller JAVA eller andra språk som jag inte har tid och lust att lära mig just nu.  
Idealet vore om det fanns ett sätt att släppa till parallellporten så att den betedde sig som tidigare.  
Enligt kontrollpanelen så är i alla fall adressen till LPT1 fortfarande H387.

## Comment 1
Author: Bjorne

Jag skall be att få besvara min egen fråga.  
Efter att ha ägnat större delen av dagen till att surfa runt och försöka förstå hur det går till att använda printerporten så verkar det som om jag har hittat något som funkar.  
Det fill en fil som heter "inpout32.dll" och som verkar vara allmänt använd i detta sammanhang. Hur den skall användas och var den skall placeras är dock mera diffust beskrivet. Det står också en hel del om KERNEL-filer som man bör länka till, oklart hur.  
Jag slängde emellertid in inpout32.dllfilen i såväl windows system som windows system32 för säkerhets skull och även i samma mapp som excelmacrot som jag sedan skapade.  
Jag hittade även nedanstående harang på någon hemsida, jag klippte ur den på vinst och förlust och klistrade in den i excelmacrot, ovanför själva proceduden.  
I texten framgick ochså att det skulle finnas 2 kommandon inp och out fö. precis likadana som jag använde i quickbasic på sin tid.  
Jag visar nedan ett mycket enkelt exempel på hur man kan skriva och läsa på porten.  
Jag vill dock sälla mig till dem som varnar för oförsiktig användning av parallellporten. Den verkar vara väldigt enkel att knäcka.  
Speciellt användning av oscilloscope med sin nätanslutna jordklämma verkar vara en risk vilket jag själv har fått erfara några gånger. Säkrast är kanske att skaffa en separat port som inte är en del av moderkortet.  
Man kan ju också relativt enkelt bygga sig ett labkort med optokopplare eller andra buffertkretsar för avlastning av själva porten. Jag använde själv bara en DVM i detta fall.  
Hoppas någon kan ha nytta av detta exempel för jag vet av erfarenhet hur svårt det kan vara att hitta användbar information.

'\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*

Public Declare Function Inp Lib "inpout32.dll" \_  
Alias "Inp32" (ByVal PortAddress As Integer) As Integer  
Public Declare Sub Out Lib "inpout32.dll" \_  
Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Integer)

'--------------------------------------------------------------  
Sub parallelltest()

i = &H378  
Out i, 255  'skriv ettor på dataregistret

a = Inp(&H379) ' läs statusregistret

Cells(1, 1) = a  'skriv svaret i cell(1,1) i excelarket

End Sub
