parallel-port ansteuerung
Jan-Benedict Glaw
jbglaw at lug-owl.de
Fri Mar 3 09:30:43 CET 2006
On Thu, 2006-03-02 22:02:40 +0100, dirk <dirk-t at web.de> wrote:
> http://lug-owl.de/~jbglaw/software/steckdose/steckdose.c
>
> das übersetzen von steckdose.c ging ohne fehlermeldung.
> nach dem laden von ppdev mit modprobe habe ich ein parport0 in /dev.
>
> mit:
> ./steckdose /dev/parport0 1 0 1 0 1 0 1 0
> setzte mir das programm allerdings alle bits auf 0 (aus).
> auch andere kombinationen wie: 1 1 1 1 1 1 1 1 oder 0 0 0 0 0 0 0 0
> kamen alle zum gleichen ergebnis.???
>
> was mache ich falsch?
Du hast das Programm nicht gelesen und verstanden :-) Das Programm
setzt DATA-Bits auf dem Parport (und wie Lesen geht schrub ich ja),
aber es ist für eine Relais-Steckdosensteuerung vorgesehen, die mehr
als 8 Steckdosen hat. Die Hardware, die ich dafür gebaut habe, benutzt
serial-in, parallel-out shift registers, um das zu machen. Das
bedeutet, daß das Programm die (von Dir angegebenen) 8 bits nimmt und
der Reihe nach über eine Leitung herausschiebt; dabei wird eine
weitere Leitung als clock benutzt und eine dritte final, um den neuen
Zustand durch das latch zu bringen.
Was Du aus steckdose.c brauchst ist also das hier (zzgl.
Fehlerbehandlung):
int data;
int fd;
// Parport vorbereiten
fd = open ("/dev/parport0");
ioctl (fd, PPCLAIM);
// Jetzt kann man mit den DATA- und CONTROL-Leitungen spielen
data = 0xff;
ioctl (fd, PPWDATA, &data); // Setzen von DATA-Leitungen
ioctl (fd, PPRDATA, &data); // Lesen der DATA-Leitungen
// Parport wieder freigeben
ioctl (fd, PPRELEASE);
Neben PP{R,W}DATA gibt es noch PP{R,W}CONTROL und PPRSTATUS, die alle
analog funktionieren. ...wobei 'int data' vielleicht sinnvoller ein
unsigned char wäre, fällt mir gerade auf.
Wenn Du von den DATA-Leitungen liest, dann solltest Du die vorher alle
auf 0xff oder 0x00 setzen (ausprobieren, eines ist richtig, ich weiß
aber nicht mehr, welche Variante:-).
MfG, JBG
--
Jan-Benedict Glaw jbglaw at lug-owl.de . +49-172-7608481 _ O _
"Eine Freie Meinung in einem Freien Kopf | Gegen Zensur | Gegen Krieg _ _ O
für einen Freien Staat voll Freier Bürger" | im Internet! | im Irak! O O O
ret = do_actions((curr | FREE_SPEECH) & ~(NEW_COPYRIGHT_LAW | DRM | TCPA));
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lug-owl.de/pipermail/linux/attachments/20060303/c7b7b2e8/attachment.sig>
More information about the Linux
mailing list