Parallelport lesen + schreiben

bsd69

Gitarrist & Cabriofahrer
Hallo Zusammen,

vorneweg: ich bin leider kein Programmierer (ausser shell-scripts o.ä.).

Was ich suche, ist ein Programm oder Script , welches ich von der Commandline aufrufen kann und etwa folgendes machen müsste:

ProgiXY read Pin1 --> Ausgabe 0 oder 1 (entsprechend dem Status von Pin1)

ProgiXY read Parallelport --> Ausgabe in der Form 00011001 (Datenbits zBsp.)

ProgiXY write 1 Pin1 --> Pin1 von 0 nach 1 setzen

ProgiXY write 0011100 Parallelport --> Datenbits entsprechend setzen

Nun, googeln bringt viel zu Tage, leider bisher nicht das, was ich suchte :confused: Das Problem ist auch noch, dass ich das Programm am liebsten unter Solaris verwenden würde (dazu ist meistens auf "JAVA COMMUNICATIONS API" verwiesen worden). Hmmm.. Wie sieht's aus? Hat jemand von euch etwas ähnliches schon codiert oder so?
Bin natürlich für jede Hilfe sehr dankbar :)

Greetz, Marcel

P.S: es könnte auch der serielle Port angesprochen werden. Ich müsste einfach 2 Pins mit 0 oder setzen können und zwei andere Pins nur "lesen" ...
 
Wenn du X11 installiert hast kannst du auch einfach outb/inb benutzen zb:
outb 0x378 0x00 // setzt alle Pins von LPT1 aut 0
 
@bladmorv: ist eine moeglichkeit, allerdings keine besonders saubere.
das klappt z.b. nur dann wenn du an einer x86-maschine sitzt.
und dann auch nur, wenn dein controller den parallelport an adresse 0x378 gesetzt hat.

ich persoenlich wuerde doch lieber etwas in der art
Code:
echo -n "\0" >/dev/lp0
vorschlagen.
keine ahnung ob \0 funktioniert.... aber so aehnlich halt.
 
@dettus das währe mit sicherheit die bessere lösung, nur ist /dev/ppc ein character device und bsd69 möchte den Parallel-Port binär ansteuern. Die Adresse lässt sich leicht per dmesg und grep herausfinden! Am Sauberten währe es natürlich ein Programm zu schreiben, jedoch möchte bsd69 mit shell-scripts arbeiten.
 
bladmorv schrieb:
Am Sauberten währe es natürlich ein Programm zu schreiben, jedoch möchte bsd69 mit shell-scripts arbeiten.

Les mal den zweiten Satz von seinem ersten Posting durch:

bsd69 schrieb:
... Programm oder Script...

Da steht ein oder - das heisst nicht, das er auf Teufel komm raus ein Script nehmen will. Ob er ein Script bevorzugt, hat er allerdings nicht gesagt. ;)

Nichts fuer ungut,
Philipp
 
dettus schrieb:
@bladmorv: ist eine moeglichkeit, allerdings keine besonders saubere.
das klappt z.b. nur dann wenn du an einer x86-maschine sitzt.
und dann auch nur, wenn dein controller den parallelport an adresse 0x378 gesetzt hat.

ich persoenlich wuerde doch lieber etwas in der art
Code:
echo -n "\0" >/dev/lp0
vorschlagen.
keine ahnung ob \0 funktioniert.... aber so aehnlich halt.
Müsste es dafür nicht eher
Code:
echo -n $'\0' > /dev/lp0
heißen?
 
@-Daemon- sry übersehn. Unter Freebsd benutze ich immer das ppi interface um die einzelnen Bits anzusprechen, und das beste: man braucht keine root rechte! Mit
Code:
echo -n $'\0' > /dev/ppc0
hatte ich so meine probleme, weil der ppc driver (natürlich) nach IEEE1284-1994 arbeitet: der Port muss daher als EPP/ECP bzw Byte Mode betrieben werden damit das DATA register bidirektional ist, und man hat keine kontrolle über die STATUS und CTRL Register.... :mad: ob es unter solaris etwas ähnliches wie ppi gibt weiss ich nicht.
 
Hallo Zusammen,

besten Dank für die zahlreichen Antworten. Ich denke, einen kleinen Schritt sind "wir" weiter: unter Solaris heisst das Device "/dev/ecpp0 -> ../devices/pci@1f,0/isa@7/dma@0,0/parallel@0,378:ecpp0".

Jetzt benötige ich "nur" noch einen Programmierer, welcher ein solches Progi gemäss meinem Anfangsposting in C oder so codiert :rolleyes: Ob Programm oder Script spielt keine Rolle. Ich muss die Bits aber auswerten bzw. einzeln schreiben können.

Schreiben könnte ich auf den Pins 2-9, und lesen von den Pins 12+13 ohne die Schnittstelle "umzuschalten". Hmm... wie weiter?

Vielen Dank! Greetz Marcel
 
Zurück
Oben