I/O - ein LED-Lauflicht
-
Hi @all,
ich möchte mir ein kleínes LED-Lauflicht basteln, welches über den Parallelport am PC gesteuert werden soll. Ich habe mir dazu auch ein Buch gekauft, in dem so etwas auch beschrieben ist, jedoch- werden im Buch die Haupt-Funktionen zur Steuerung des Parallelports nicht weiter erläutert, und genau hierin liegt mein Problem:
char light[12] = " 0\r";
outb (1<<i, port_adr);
write (STDOUT_FILENO, &(light[i]), 11-i);Die Deklaration der beiden Funktionen verstehe ich nicht so recht-ich weiß ja, dass mir die Funktion outb, den Wert des 1. Parameters in die Addresse port_adr schreibt. Aber...was bedeutet denn genau der Ausdruck 1<<i ?
Ich meine so was kenn ich ja schon von cout, aber wieso hier ? Hier brauche ich doch nur einen Wert anzugeben, ...z.B. i, aber wozu das 1<< ?Bei der zweiten Funktion bin ich mir leider auch etwas unschlüssig, vor allem wofür das Array char light [12] gut sein soll...für was stehen denn eigentlich die Leerzeichen und das 0\r in dem Array ?
Ich würde mich echt rießig freuen, wenn sich jemand, der den oben stehenden Code versteht, (sich auf mein niedriges Niveau herablassen könnte *lol*) und mir erklären könnte, wie und warum....
Schöne Grüße
Chris
-
<< ist der Bitshift-Operator. Es werden also in der Binärdarstellung i Nullen hinten angehängt. Wozu das write gut sein soll, kann ich dir auch nicht sagen. Es scheint mir auch irgendwie auf den nicht initialisierten Teil von light[] zuzugreifen...
-
Xzibit schrieb:
char light[12] = " 0\r"; outb (1<<i, port_adr); write (STDOUT_FILENO, &(light[i]), 11-i);
Die Deklaration der beiden Funktionen verstehe ich nicht so recht-ich weiß ja, dass mir die Funktion outb, den Wert des 1. Parameters in die Addresse port_adr schreibt. Aber...was bedeutet denn genau der Ausdruck 1<<i ?
Ich meine so was kenn ich ja schon von cout, aber wieso hier ? Hier brauche ich doch nur einen Wert anzugeben, ...z.B. i, aber wozu das 1<< ?Mit << verschiebst du Bits!
Die 1 ist in Binärschreibweise 00000001
Wenn i=1 ist, dann wird die 1 so verändert, dass 00000010 daraus entsteht.
Wenn i=2 ist, dann wird die 1 so verändert, dass 00000100 daraus entsteht.Jede 1 steht für einen mit strom versorgten Pin am Port.
Bei der zweiten Funktion bin ich mir leider auch etwas unschlüssig, vor allem wofür das Array char light [12] gut sein soll...für was stehen denn eigentlich die Leerzeichen und das 0\r in dem Array ?
Hier schreibst du, welche Lampe gerade leuchtet. Die \0 Bedeutet String Ende.
-
Yeah vielen vielen Dank für eure Antworten-
ihr wisst gar nicht, wie sehr ihr mir beide damit weitergeholfen habt.Vielen vielen Dank nochmals und 'n schön Gruß
Chris