IOW24: Probleme mit seperater Steuerung der Ports

Dies ist das deutsche Forum für alle Themen um den IO-Warrior. Beiträge bitte nur in Deutsch.

Moderator: Guido Körber

Post Reply
Pazwindi
Posts: 9
Joined: Thu Jan 12, 2012 12:22 pm

IOW24: Probleme mit seperater Steuerung der Ports

Post by Pazwindi »

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?
User avatar
Christoph Jung
Posts: 670
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: IOW24: Probleme mit seperater Steuerung der Ports

Post by Christoph Jung »

Vorher auslesen, wie die anderen Ports aussehen und das dann mit zurückschreiben. So bleibt der Status erhalten.
Abteilung: Softwareentwicklung
Folge uns auf Twitter
Follow us on twitter
Guido Körber
Site Admin
Posts: 2856
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Re: IOW24: Probleme mit seperater Steuerung der Ports

Post by Guido Körber »

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.
towaibw
Posts: 198
Joined: Sat Dec 27, 2003 10:55 pm
Location: Berlin / Germany
Contact:

Re: IOW24: Probleme mit seperater Steuerung der Ports

Post by towaibw »

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

Code: Select all

dev24.setPort(0, 0xffffffff);
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

Code: Select all

dev24.setBit(port,bit);
und

Code: Select all

dev24.clearBit(port,bit);
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.
Post Reply