Ich steuere mit Java 2 Relais an. Eines vom Port0 und eines vom Port1 aus. Sie hängen zwar nur jeweils an einem Pin aber ich setze immer den gesamten Port.
Ich habe folgendes Problem:
wenn ich die Ports auf 1 habe und sie einzeln wieder auf 0 setzen will funktioniert das.
wenn ich die Ports allerdings auf 0 habe und ich einen einzelnen auf 1 setzen will, geht der zweite immer gleich mit auf 1...
Die Ports setze ich folgendermaßen (das sind die Zeilen für den 0er Port):
dev24.setDirection(0, 0x00000000);
dev24.setPort(0, 0xffffffff);
dev24.writeIOPorts();
Irgendjemand eine Idee?
IOW24: Probleme mit seperater Steuerung der Ports
Moderator: Guido Körber
- Christoph Jung
- Posts: 670
- Joined: Sun Oct 08, 2006 3:43 pm
- Location: Germany / Berlin
- Contact:
Re: IOW24: Probleme mit seperater Steuerung der Ports
Vorher auslesen, wie die anderen Ports aussehen und das dann mit zurückschreiben. So bleibt der Status erhalten.
-
- Site Admin
- Posts: 2856
- Joined: Tue Nov 25, 2003 10:25 pm
- Location: Germany/Berlin
- Contact:
Re: IOW24: Probleme mit seperater Steuerung der Ports
Nein, genau falsch.
Merken welchen Ausgabestatus die Portpins haben und dann den neuen Status einmaskieren und zurückschreiben. Sonst wird ein Eingang der von aussen auf Null gezogen wird zum Ausgang der auf Null zieht.
Merken welchen Ausgabestatus die Portpins haben und dann den neuen Status einmaskieren und zurückschreiben. Sonst wird ein Eingang der von aussen auf Null gezogen wird zum Ausgang der auf Null zieht.
Re: IOW24: Probleme mit seperater Steuerung der Ports
Hallo Pazwindi,
die Antworten der "Vorredner" sind vom Prinzip her richtig, aber in deinem Fall nicht relevant.
Aus deinem Codebeispiel erkenne ich, dass du die iowj Lib benutzt und die "merkt" sich die Zustände automatisch.
Mit der Anweisung setzt du alle Pins des Ports auf 1. Da muss man sich nicht wundern, warum das zweite gleich mit auf 1...
Für die Manipulation von einzelnen Bits gib es die Methoden und
mit dev24.writeIOPorts(); werden die Manipulationen dann an das Port geschrieben.
Ich würde dir empfehlen, dir mal in Ruhe die Methoden der Klasse AbstractIowDevice anzusehen. Die sind auch kommentiert, so dass eine Benutzung nicht schwer fallen sollte.
die Antworten der "Vorredner" sind vom Prinzip her richtig, aber in deinem Fall nicht relevant.
Aus deinem Codebeispiel erkenne ich, dass du die iowj Lib benutzt und die "merkt" sich die Zustände automatisch.
Mit der Anweisung
Code: Select all
dev24.setPort(0, 0xffffffff);
Für die Manipulation von einzelnen Bits gib es die Methoden
Code: Select all
dev24.setBit(port,bit);
Code: Select all
dev24.clearBit(port,bit);
Ich würde dir empfehlen, dir mal in Ruhe die Methoden der Klasse AbstractIowDevice anzusehen. Die sind auch kommentiert, so dass eine Benutzung nicht schwer fallen sollte.
IOWJ - www.wagner-ibw.de