PC robot revisited (8 / 8 steg)
Steg 8: programvara.
Pågående...
Robot os. Oändlig loop.
True % "Ange eller återställa värden inmatningssensorn värden" göra andra jobb vad som behövs utifrån indatavärden. wend del I. Ange eller återställa värdena. Del II få sensor värden. Läsa in stiften
Kommandot för att läsa från hamnar i qbasic är INP. Adressen du behöver läsa från är adressen till parallellporten (vanligtvis 378h) + 1. så vanliga adressen är 379h. Som jag nämnt tidigare, är stiften används för indata 10-13 och 15. Läsa olika stiften är lite hårdare än skriva till hamnarna, som du har att maskera ut stiften din inte intresserad. När du läser porten, används de första 3 bitarna återvände inte. Till exempel skulle qbasic koden nedan läsa pin 12 (av papper). När denna port är hög, "slut på papper / pin 12 växlas" kommer att visas: data = inp (& h379) om (data och 32) = 32 och skriv sedan ut "slut på papper / pin 12 hög" tabellen nedan lista pin mata in pin-kod, dess normala funktion och hur många som krävs för att läsa det (t.ex 32 används i ovanstående exempel): Pin nummer Normal syftet att läsa 10 Ackowledge 64 11 hög när inte upptagen 128 12 hög när av papper 32 13 hög när skrivaren online 16 15 hög när inget fel 8
Om du förstår binär, bör du omedelbart se var dessa siffror kommer från, och varför de används för att maskera ut alla andra stift vi inte försöker läsa. Det enklaste du kan använda för att testa detta är att bara ansluta en växla mellan en ingångsstift och en marken pin (18-25). Till exempel, om du ansluter en växla mellan stift 15 och 20, du kan använda följande kod för att övervaka när växeln skjuts: starta: res = INP(&H379) CLS IF (res och 8) = 8 då utskrift "knappen sköt" annat PRINT "Knappen inte drivit" för dröjsmål = 1 till 500: nästa dröjsmål GOTO börja jag vet här koden är lite rörig , och kommer att flimra, men den är skriven för klarhet. Samma kod kan användas för att övervaka andra fyra ingående linjer genom att ändra till "8" till ett annat från tabellen. Del III andra jobb. Del IV vi kan använda program som parcon för att ange värden på den parallella porten för sådana jpbs som kontrollerande makten tåget. Se också:
Portcontrol är ett trevligt program för att läsa data och skriva data till hamnarna finns på:
http://www.epanorama.net/Circuits/portcontrol.tar
Behöver du en C-kompilator för ditt system för att få det att fungera,
Port control software för Linux
Version 0.3
Copyright Tomi Engdahl 1996-2005
Introduktion
Här programpaketet ger tillgång till PC computern järnvaror/o-portar under Linuxoperativsystem.
Softare paketet är utformat för att köras på Linux-system som körs på normala PC-hårdvara. Programvaran har testats för att köra fint på Fedora Core 4 Linux-distribution. Du behöver GCC att kompilera program.
Paketet innehåller följande verktyg:
lptout enkelt program för att styra LPT1 skrivare port data stift portcontrol allmänt använda I/O port läsa och skriva ansökan control.php AJAX/PHP baserat webbgränssnitt för parallellporten kontrollera
Programmet ges ingen garanti för deras riktighet. Använda dem på egen risk.
Sammanställa
Kör: göra installera
Du installerar
Logga in som root. Kör: göra installera
Programvaran installeras nu till/usr/lokal/sbin/katalog med lptout
Användaren måste ha root previledges att få tillträde till hamnarna för att programmet ska köras. Därför att programmet installeras med SUID ROOT inställningar, vilket innebär att varje gång programmet körs det körs automatiskt vid roten previledges oavsett vem driver den. Detta program är utformat för att få tillgång till LPT1 parallellporten på I/O adress 0x378 (normala adress för parallellporten integrerade på moderkortet)
Till exempel stängs kommandot /usr/local/sbin/lptout 0xFF alla data stift i LPT1-porten till höga tillstånd (1). Kommandot /usr/local/sbin/lptout 0x00 kommer att visa alla data stift till låga tillstånd (0).
Använda portcontrol
portconrol är en enkel generell I/O port kontrollprogram för Linux. Det gör att du kan skriva och läsa de stöds/o-portarna. Programvaran kan skriva angivet värde till port, läsa värdet på tanke I/O adress och skriva ut det till skärmen i olika format och bit-nivå manipulation av data port.
Exempel på
/usr/local/sbin/portcontrol LPT1DATA Läs setbit 1 skriva läser parallellporten data, ange bit D1 till 1 och skriver värde tillbaka effektivt sätter LPT1 stift D1 i parallellporten logik 1
/usr/local/sbin/portcontrol LPT1DATA Läs resetbit läser parallellporten data, ange bit D1 till 0 och skriver värde tillbaka effektivt sätter LPT1 stift D1 i parallellporten logik 0
/usr/local/sbin/portcontrol LPT1DATA SättVärde 0xff skriva skriver värdet 0xff (255 dec) till parallellporten sätter effektivt alla LPT1 data stift till logik 1
/usr/local/sbin/portcontrol LPT1DATA Läs ut bin läser parallellporten data stift påstår och skriver ut resultaten som binära tal till skärmen (standard output).
/usr/local/sbin/portcontrol LPT1DATA Läs ut bin läser parallellporten data stift påstår och skriver ut resultaten som binära tal till skärmen (standard output).
/usr/local/sbin/portcontrol LPT1DATA Läs printbits 021 läser parallellporten data stift påstår och skriver ut påstår av bits D0, D2 och D1 i den ordningen på skärmen (standard output).
Stöds port identifierare LPT1DATA LPT1-porten data linjer kontroll (0x378) LPT1STATUS LPT1 registrera skrivarens status ingångar LPT1HANDSHAKE LPT1 handstake utgång Kontrollera JOYSTICK Joystick port behandlingen (endast läsning meningsfullt)
Stöds kommandon PRINT DEC Läs data, ger utdata som decimaltal PRINT HEX läsa data, ger utgång som hexadecimala nummer Skriv ut BIN Läs data, ger utgång som binära tal PRINTBITS bitar läser de angivna bitarna i angiven ordning (0..7)
SKRIVA skriver registrera värde till värdet för läsa läser från angiven port att registrera
SÄTTVÄRDE värdet anger det givna värdet att registrera och värdesätter utför och med tanke på värdet och registrera eller värde utför eller med tanke på värdet och register XOR värde utför XOR med tanke på värdet och register SETBITS bitar uppsättningar ges bitar till 1 i registrera RESETBITS bitar uppsättningar ges bitar till 0 i registret SETBIT bits samma som SETBITS RESETBIT bitar samma som RESETBITS TOGGLEBITS bits växlar anges lite värden
värde kan vara ger som decimaltal eller heaxadecimal börjar med 0 x bits är en lista över bit position identifierare från 0 till 7
Portnamn är ning att skrivas på höga fall. Kommandon på låga fall.
Via webbgränssnitt
Webbgränssnittet för att styra paralle port är enkelt modernt webbaserat gränssnitt för att styra parallellporten. För att göra det måste du ha följande delar i ditt system: - Apache spindelväv servaren med PHP5 support arbetar med det - portcontrol programvara installerad till försummelsen installera katalog - SAJAX Enkel Ajax Toolkit av ModernMethod - moderna webbläsare som stöder JavaScript (IE6, Mozilla Firefox)
Det är enkelt att installera webbgränssnittet. Allt du behöver är att kopiera filen control.php till en lämplig plats på din webbkatalog du vill att det ska kopia den Sajax.php filen från SAJAX paket till samma katalog där du har control.php.
Sedan bara gå till URL där du har den tillgänglig control.php. Du bör se status line plus en uppsättning knappar. Statusfältet bör automatiskt uppdatera varje 5 sekunder med parallellporten status och aktuell tid på serverdatorn. Trycka på knapparna kommer att ändra parallellporten bit staterna.
Observera att på vissa system PHP-skript kan hot har tillräckligt rättigheter att köra programvaran portconrol. Kontrollera din behörighet att se till att rättigheter är korrekta (systemet inte fungerade på min Fedora Core 4 system när jag hade SELinux säkerhet aktiverat).
SAJAX Enkel Ajax Toolkit av ModernMethod kan laddas ner från http://www.modernmethod.com/sajax/
Obs: Det finns en annan version av filen control.php. Denna fil controlfile.php arbete ganska mycket på samma sätt, men i stället för kontrollerande parallellport skriver och läser status från en fil (status.txt i samma katalog som skriptet är). Det kan användas för att testa systemet för kontroll av AJAX/PHP baserat.