Programmera parallellporten? Som en arduino?
Programmera parallellporten? Som en arduino?
Hej!
Jag har en liten fråga. Om man ska programmera parallellporten. Krävs det då att man ska kunna elektroniken i själva PCI kortet eller blir detta ungefär som en arduino?
Jag tänker utveckla lite bättre. För mig så är ett arduino ett operativsystem.
Operativsystemet installeras på en färdigkonstruerad hårdvara. Med det operativsystemet så kan man enklare styra den färdigkonstruerade hårdvaran via ett program som man programmerar i arduino-IDE. Ta t.ex att Linux är operativsystemet och den installeras på en dator. När Linux är på den datorn så kan man enkelt och lätt använda USB.
Men AVR programmering är lite svårare. Då måste man själv bygga operativsystemet och hårdvaran.
Då är min fråga. Om jag installera Linux på en dator som har den stora parallellporten. Visst kan jag då med C-programmering styra ingångarna och utgångarna på parallellporten lika lätt som i en arduino miljö? Dvs operativsystemet är redan byggt. Jag använder mig bara av ett program för att styra porten.
Eller om jag vill styra portarna så måste jag programera som en "AVRprogrammerar"-person skulle göra, dvs börja allt från grunden, trots operativsystem är installerat.
Eller skulle allt vara mycket enklare om jag använde java/pyhon/C# för då krävs det ju bara programmeringskunskapen då alla biblioteket för just hårdvaran existerar redan?
Jag har en liten fråga. Om man ska programmera parallellporten. Krävs det då att man ska kunna elektroniken i själva PCI kortet eller blir detta ungefär som en arduino?
Jag tänker utveckla lite bättre. För mig så är ett arduino ett operativsystem.
Operativsystemet installeras på en färdigkonstruerad hårdvara. Med det operativsystemet så kan man enklare styra den färdigkonstruerade hårdvaran via ett program som man programmerar i arduino-IDE. Ta t.ex att Linux är operativsystemet och den installeras på en dator. När Linux är på den datorn så kan man enkelt och lätt använda USB.
Men AVR programmering är lite svårare. Då måste man själv bygga operativsystemet och hårdvaran.
Då är min fråga. Om jag installera Linux på en dator som har den stora parallellporten. Visst kan jag då med C-programmering styra ingångarna och utgångarna på parallellporten lika lätt som i en arduino miljö? Dvs operativsystemet är redan byggt. Jag använder mig bara av ett program för att styra porten.
Eller om jag vill styra portarna så måste jag programera som en "AVRprogrammerar"-person skulle göra, dvs börja allt från grunden, trots operativsystem är installerat.
Eller skulle allt vara mycket enklare om jag använde java/pyhon/C# för då krävs det ju bara programmeringskunskapen då alla biblioteket för just hårdvaran existerar redan?
Re: Programmera parallellporten? Som en arduino?
outportb( 0x378, 0x55 ); fritt från minnet om jag minns addressen rätt. Mycket enkelt. Responstiden är på cirka 10 µs.
Re: Programmera parallellporten? Som en arduino?
Det visste jag inte.
Men om det är så...då är det ungefär som i Arduino där man säger LedLamp pin = 10; ?
Men istället säger man outportb( 0x378, 0x55 ); i java eller i annat programmeringsspråk?
Ni förstår väll vad jag försöker förklara? Att själva datorn skulle vara arduinon och själva Arduino-IDE är operativsystemet och det man skriver är programmet. Till skillnad från AVR studio där man gör exakt allt själv.
Men om det är så...då är det ungefär som i Arduino där man säger LedLamp pin = 10; ?
Men istället säger man outportb( 0x378, 0x55 ); i java eller i annat programmeringsspråk?
Ni förstår väll vad jag försöker förklara? Att själva datorn skulle vara arduinon och själva Arduino-IDE är operativsystemet och det man skriver är programmet. Till skillnad från AVR studio där man gör exakt allt själv.
Re: Programmera parallellporten? Som en arduino?
Java medger väl inte tillgång till hårdvara vad jag minns.
I Windows XP och nyare kan man inte heller komma åt hårdvaran på det sätt - men det finns DLL-filer man kan använda som ger tillgång till porten.
Men ett tips: börja inte yra om att en Arduino är ett operativsystem...
I Windows XP och nyare kan man inte heller komma åt hårdvaran på det sätt - men det finns DLL-filer man kan använda som ger tillgång till porten.
Men ett tips: börja inte yra om att en Arduino är ett operativsystem...

Re: Programmera parallellporten? Som en arduino?
Parallellporten kan används ungefär som I/O på en mikrocontroller, men inte helt (du kan t.ex. inte ändra riktning, ingångarna är ingångar och utgångarna är utgångar, det finns såvitt jag vet inget std för interrupt etc).
Men när du gör det så är normalt inte operativet inblandat utan du skriver till (och läser från) hårdvaran direkt.
Jag vet inte om nåt operativ (eller funktionsbibliotek snarare) har bra stöd för bitvis manipulering av parallellporten, den är ju normalt avsedd att användas för skrivare och ska man skicka ut ascii-koder där så kan man använda operativets funktion för det. Men det är ju inte det som du är ute efter.
Men när du gör det så är normalt inte operativet inblandat utan du skriver till (och läser från) hårdvaran direkt.
Jag vet inte om nåt operativ (eller funktionsbibliotek snarare) har bra stöd för bitvis manipulering av parallellporten, den är ju normalt avsedd att användas för skrivare och ska man skicka ut ascii-koder där så kan man använda operativets funktion för det. Men det är ju inte det som du är ute efter.
- FormerMazda
- Inlägg: 6446
- Blev medlem: 27 februari 2006, 14:59:36
- Ort: Asby (Östergötland)
Re: Programmera parallellporten? Som en arduino?
MS-DOS och QBASIC.
out(888, 255) //Tänder alla utgångar i "ena" gruppen.
Men i nyare operativ vetetusan som sagt.
Om du behöver I/O enkelt, skriv ett enkelt program till arduino som lyssnar seriellt efter enkla kommandon om vilken pinne som ska gå hög/låg/PWM mm.
Sen är det ju rätt enkelt att skriva program i PCn som skickar detta till arduinon.

out(888, 255) //Tänder alla utgångar i "ena" gruppen.
Men i nyare operativ vetetusan som sagt.
Om du behöver I/O enkelt, skriv ett enkelt program till arduino som lyssnar seriellt efter enkla kommandon om vilken pinne som ska gå hög/låg/PWM mm.
Sen är det ju rätt enkelt att skriva program i PCn som skickar detta till arduinon.
- SeniorLemuren
- Inlägg: 8427
- Blev medlem: 26 maj 2009, 12:20:37
- Ort: Kristinehamn
Re: Programmera parallellporten? Som en arduino?
Här är en länk till mycket info om parallellporten. Där kan man läsa det mesa om hur man kan använd och programmera både unidirektionella och bidirektionella portar.
Här finns flera länkar om parallellportar.
Länk till How Parallel Ports Work.
Här finns flera länkar om parallellportar.
Länk till How Parallel Ports Work.
Re: Programmera parallellporten? Som en arduino?
I C språket räcker det som sagt med:
outportb( 0x378, 0xAB ); // som tänder bitmönstret 10101011
Parallellporten kan dock vara i 4 lägen genom inställning i BIOS:
1 Standard kompabilitetsläge
2. SPP
3. EPP
4. ECP
Om parallellporten är i SPP läge kan man på addressen 0x37A (0x378+2) genom bit 5 ändra så att man kan använda utgångarna D0-D7 som ingång istället. Jag har för mig att på en del parallellportar finns det kontrollbitar för att även kunna ändra in/ut-riktning på statuspinnarna efter behag men hittar inte den dokumentationen.
Tips: beyondlogic.org/spp/parallel.htm och electronics.dit.ie/staff/tscarff/Parallel_Port/parallel_port.htm.
outportb( 0x378, 0xAB ); // som tänder bitmönstret 10101011
Parallellporten kan dock vara i 4 lägen genom inställning i BIOS:
1 Standard kompabilitetsläge
2. SPP
3. EPP
4. ECP
Om parallellporten är i SPP läge kan man på addressen 0x37A (0x378+2) genom bit 5 ändra så att man kan använda utgångarna D0-D7 som ingång istället. Jag har för mig att på en del parallellportar finns det kontrollbitar för att även kunna ändra in/ut-riktning på statuspinnarna efter behag men hittar inte den dokumentationen.
Tips: beyondlogic.org/spp/parallel.htm och electronics.dit.ie/staff/tscarff/Parallel_Port/parallel_port.htm.
Re: Programmera parallellporten? Som en arduino?
Java kan styra hårdvaran, men då talar jag mer om USB, portar, CD rom osv.Icecap skrev:Java medger väl inte tillgång till hårdvara vad jag minns.
I Windows XP och nyare kan man inte heller komma åt hårdvaran på det sätt - men det finns DLL-filer man kan använda som ger tillgång till porten.
Men ett tips: börja inte yra om att en Arduino är ett operativsystem...
Jag vet inte hur jag ska tolka ardunio som då. För mig känns det som ett färdigt operativsystem som installeras på uC.
Re: Programmera parallellporten? Som en arduino?
> Java kan styra hårdvaran...
Allt som kan visa något på en skärm kan ju "styra hårdvaran"
och man vill tolka det så. I detta fall handlar det om att komma
åt hårdvaran direkt utan att passera de vanliga drivrutinerna.
Och det behövs om man vill komma åt registren för t.ex parallell
porten direkt från sin applikation. På senare Windows krävs det
nog sannolikt även att applikationen körs med förhöjda privilegier,
men där är jag lite osäker...
> Jag vet inte hur jag ska tolka ardunio som då.
Arduino är ett komplett koncept. Det innehåller bl.a en IDE, en
support-site, bootloader, bibliotek med standardrutiner samt en
stor tredjeparts marknad med "sheelds". Väldigt mycket mer än
vad som brukar innefattas i begreppet "ett OS".
Allt som kan visa något på en skärm kan ju "styra hårdvaran"
och man vill tolka det så. I detta fall handlar det om att komma
åt hårdvaran direkt utan att passera de vanliga drivrutinerna.
Och det behövs om man vill komma åt registren för t.ex parallell
porten direkt från sin applikation. På senare Windows krävs det
nog sannolikt även att applikationen körs med förhöjda privilegier,
men där är jag lite osäker...
> Jag vet inte hur jag ska tolka ardunio som då.
Arduino är ett komplett koncept. Det innehåller bl.a en IDE, en
support-site, bootloader, bibliotek med standardrutiner samt en
stor tredjeparts marknad med "sheelds". Väldigt mycket mer än
vad som brukar innefattas i begreppet "ett OS".
Re: Programmera parallellporten? Som en arduino?
I C visste jag redan att man kan kontrollera parallellporten. Men kan man göra det i Java?blueint skrev:I C språket räcker det som sagt med:
outportb( 0x378, 0xAB ); // som tänder bitmönstret 10101011
Parallellporten kan dock vara i 4 lägen genom inställning i BIOS:
1 Standard kompabilitetsläge
2. SPP
3. EPP
4. ECP
Om parallellporten är i SPP läge kan man på addressen 0x37A (0x378+2) genom bit 5 ändra så att man kan använda utgångarna D0-D7 som ingång istället. Jag har för mig att på en del parallellportar finns det kontrollbitar för att även kunna ändra in/ut-riktning på statuspinnarna efter behag men hittar inte den dokumentationen.
Tips: beyondlogic.org/spp/parallel.htm och electronics.dit.ie/staff/tscarff/Parallel_Port/parallel_port.htm.
När jag programerade i python så kunde man enkelt och lätt styra vissa delar av hårdvaran igenom en kort liten mening som kod. Man importerade bara ett bibliotek och sen var det bara skriva vad koden ska göra.
Så då måste det vara lika i Java att man importerar ett bibliotek och sen skriver man vad den ska göra?
Vi säger att jag har Linux och sen kopplar jag in denna i mitt USB-uttag.

Om det finns mjukvarustöd till denna USB-2-Paralell kabeln. Kan jag då styra I/O på samma sätt som jag har en stationär dator med inbyggd parallellport, med t.ex Java eller C?
Re: Programmera parallellporten? Som en arduino?
Okej. Att säga Java kan styra hårdvaran är en liten överdrift. Men när jag menar "Java kan styra hårdvaran" så menar jag portar, USB, DVD osv.sodjan skrev:> Java kan styra hårdvaran...
Allt som kan visa något på en skärm kan ju "styra hårdvaran"
och man vill tolka det så. I detta fall handlar det om att komma
åt hårdvaran direkt utan att passera de vanliga drivrutinerna.
Ovh det behövs om man vill komma åt registren för t.ex parallell
porten direkt från sin applikation. På senare Windows krävs det
nog sannolikt även att applikationen körs med förhöjda privilegier,
men där är jag lite osäker...
Re: Programmera parallellporten? Som en arduino?
I och med att den är ansluten via USB så beror det på vad chippet i omvandlaren klarar.
För FTDI verkar det finnas nåt som heter "bitbang mode".
För FTDI verkar det finnas nåt som heter "bitbang mode".
Re: Programmera parallellporten? Som en arduino?
Om du skall "bitbanga" paralellporten från linux i C så kan du kolla nedanstående länkar:
EDIT: Det gäller alltså om du har en inbyggd paralellport i PCn i fråga. Om det fungerar med den dongel du nämnde ovan tvivlar jag på.
Paralellport programming howto
http://www.electronics-related.com/sci. ... r-port.php (Exempel på C kod)
OBS! Du måste antagligen köra programmet som root eller med root behörighet i linux. Dessutom måste du se till att inga andra program eller "demoner" (tjänster) har tillgång till porten, som t.ex skrivar tjänster (lp) och eventuella moduler som körs i linuxkärnan och använder porten.
Java styr inte "direkt" USB, CD Rom o.s.v. Java använder operativsystemets API som i sin tur via drivers bangar direkt på hårdvaran. Därför kan man från java kontrollera ljudkort, grafik, text via ett gemensamt gränssnitt även om hårdvaran i sig funkar lite olika. Det är drivrutinerna som sköter kommunikationen med hårdvaran.
Ingen annan som använder Arduino kallar det för ett operativsystem. Det blir förvirrande om en person skall göra tvärt om. Arduino är snarare en utvecklingsplatform.
EDIT: Det gäller alltså om du har en inbyggd paralellport i PCn i fråga. Om det fungerar med den dongel du nämnde ovan tvivlar jag på.
Paralellport programming howto
http://www.electronics-related.com/sci. ... r-port.php (Exempel på C kod)
OBS! Du måste antagligen köra programmet som root eller med root behörighet i linux. Dessutom måste du se till att inga andra program eller "demoner" (tjänster) har tillgång till porten, som t.ex skrivar tjänster (lp) och eventuella moduler som körs i linuxkärnan och använder porten.
Java styr inte "direkt" USB, CD Rom o.s.v. Java använder operativsystemets API som i sin tur via drivers bangar direkt på hårdvaran. Därför kan man från java kontrollera ljudkort, grafik, text via ett gemensamt gränssnitt även om hårdvaran i sig funkar lite olika. Det är drivrutinerna som sköter kommunikationen med hårdvaran.
Ingen annan som använder Arduino kallar det för ett operativsystem. Det blir förvirrande om en person skall göra tvärt om. Arduino är snarare en utvecklingsplatform.
Re: Programmera parallellporten? Som en arduino?
Så man kan styra parallellporten i Java antar jag då också.
Vi säger att man använder en kabel som jag visade ovan. Om man har en sådan kabel som man kopplar in på sin dator och sen finns det även mjukvarustöd för hårdvaran. Då blir det exakt som vanligt, dvs man kan betrakta denna USB-2-Parallell porten som ett integrerat objekt? Ungefär som en stationär dator.
Jag vet om att man måste stänga ner alla program som använder porten
Vi säger att man använder en kabel som jag visade ovan. Om man har en sådan kabel som man kopplar in på sin dator och sen finns det även mjukvarustöd för hårdvaran. Då blir det exakt som vanligt, dvs man kan betrakta denna USB-2-Parallell porten som ett integrerat objekt? Ungefär som en stationär dator.
Jag vet om att man måste stänga ner alla program som använder porten
