Programmera parallellporten? Som en arduino?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Programmera parallellporten? Som en arduino?

Inlägg av Al_Bundy »

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?
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Re: Programmera parallellporten? Som en arduino?

Inlägg av blueint »

outportb( 0x378, 0x55 ); fritt från minnet om jag minns addressen rätt. Mycket enkelt. Responstiden är på cirka 10 µs.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Programmera parallellporten? Som en arduino?

Inlägg av Al_Bundy »

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.
Användarvisningsbild
Icecap
Inlägg: 26650
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Programmera parallellporten? Som en arduino?

Inlägg av Icecap »

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... :doh:
Nerre
Inlägg: 27230
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Programmera parallellporten? Som en arduino?

Inlägg av Nerre »

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.
Användarvisningsbild
FormerMazda
Inlägg: 6446
Blev medlem: 27 februari 2006, 14:59:36
Ort: Asby (Östergötland)

Re: Programmera parallellporten? Som en arduino?

Inlägg av FormerMazda »

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.
Användarvisningsbild
SeniorLemuren
Inlägg: 8427
Blev medlem: 26 maj 2009, 12:20:37
Ort: Kristinehamn

Re: Programmera parallellporten? Som en arduino?

Inlägg av SeniorLemuren »

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.
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Re: Programmera parallellporten? Som en arduino?

Inlägg av blueint »

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.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Programmera parallellporten? Som en arduino?

Inlägg av Al_Bundy »

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... :doh:
Java kan styra hårdvaran, men då talar jag mer om USB, portar, CD rom osv.

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.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Programmera parallellporten? Som en arduino?

Inlägg av sodjan »

> 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".
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Programmera parallellporten? Som en arduino?

Inlägg av Al_Bundy »

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.
I C visste jag redan att man kan kontrollera parallellporten. Men kan man göra det i Java?
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.
Bild

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?
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Programmera parallellporten? Som en arduino?

Inlägg av Al_Bundy »

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...
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.
Nerre
Inlägg: 27230
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Programmera parallellporten? Som en arduino?

Inlägg av Nerre »

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".
Kaggen
Inlägg: 432
Blev medlem: 29 januari 2005, 03:06:02

Re: Programmera parallellporten? Som en arduino?

Inlägg av Kaggen »

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.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Programmera parallellporten? Som en arduino?

Inlägg av Al_Bundy »

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 :)
Skriv svar