PCF 8591 mit IOW24 auslesen

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
jacoblange
Posts: 5
Joined: Tue Oct 20, 2009 8:59 pm

PCF 8591 mit IOW24 auslesen

Post by jacoblange »

Hallo,

ich habe ein Problem. Ich versuche die 4 Analog Eingänge des PCF 8591 auszulesen.

Hier meine bisherige Vorgehensweise:

Code: Select all

// c# code

byte[] reportidBytes = { 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 }; // Initialisierung
IOWLib.IowKitWrite(handle, 1, ref reportidBytes[0], reportidBytes.Length);

reportidBytes = { 0x2, 0xC2, 0x90, 0x4, 0x0, 0x0, 0x0, 0x0 }; // setzt im PCF 8591 das Flag Autoincrement auf true
IOWLib.IowKitWrite(handle, 1, ref reportidBytes[0], reportidBytes.Length);

byte[] ergValues = new int[4]; // Array für die Daten aus den 4 analog Ports
for(int i=0;i<4;i++)
{
   reportidBytes = { 0x3, 0x1, 0x91, 0x0, 0x0, 0x0, 0x0, 0x0 };
   IOWLib.IowKitReadNonBlocking(handle, 1, ref reportidBytes[0], reportidBytes.Length);
   // In den Logausgaben des All-in-ONE Testing-Tool befand sich immer an dritter Stelle der nächste A/D Wert
   ergValues[i] = reportidBytes[2];
}
Mein Problem ist, das sich das byte Array nach dem Aufruf von "IowKitReadNonBlocking" nicht verändert. In keinem der 8 Bytes ist ein ausgelesener Wert enthalten.

Für Anregungen wäre ich dankbar.
User avatar
Christoph Jung
Posts: 673
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: PCF 8591 mit IOW24 auslesen

Post by Christoph Jung »

Kommt denn das erste mal eine gültige Antwort zurück?
Software developer
Guido Körber
Site Admin
Posts: 2879
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Re: PCF 8591 mit IOW24 auslesen

Post by Guido Körber »

Das Lesekommando müsste auch an den IO-Warrior geschickt werden bevor man eine Antwort bekommen kann.
jacoblange
Posts: 5
Joined: Tue Oct 20, 2009 8:59 pm

Re: PCF 8591 mit IOW24 auslesen

Post by jacoblange »

Vielen Dank für die Antworten. Es funktioniert jetzt. Ich habe das Lesekommando noch hinzugefügt, so das der Aufruf jetzt so aussieht:

Code: Select all

// c# code

byte[] reportidBytes = { 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 }; // Initialisierung
IOWLib.IowKitWrite(handle, 1, ref reportidBytes[0], reportidBytes.Length);

reportidBytes = { 0x2, 0xC2, 0x90, 0x4, 0x0, 0x0, 0x0, 0x0 }; // setzt im PCF 8591 das Flag Autoincrement auf true
IOWLib.IowKitWrite(handle, 1, ref reportidBytes[0], reportidBytes.Length);

byte[] ergValues = new int[4]; // Array für die Daten aus den 4 analog Ports
for(int i=0;i<4;i++)
{
   reportidBytes = { 0x3, 0x1, 0x91, 0x0, 0x0, 0x0, 0x0, 0x0 }; // Lesekommando
   IOWLib.IowKitWrite(handle, 1, ref reportidBytes[0], reportidBytes.Length);

   reportidBytes = { 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 };
   IOWLib.IowKitReadNonBlocking(handle, 1, ref reportidBytes[0], reportidBytes.Length);
   // In den Logausgaben des All-in-ONE Testing-Tool befand sich immer an dritter Stelle der nächste A/D Wert
   ergValues[i] = reportidBytes[2];
}
Post Reply