I2C und iow24

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

Moderator: Guido Körber

wayoda
Posts: 362
Joined: Fri Dec 19, 2003 12:00 pm
Location: Wuppertal/Germany

Post by wayoda »

spyro wrote: in der doku steht, daß ein report an oder von interface1
immer 8 byte hat, inclusive der id.
in den funktionen die ich nutze muß ich die id und den void* angeben, wo die daten hinsollen/herkommen.
da fragt mann sich doch, wie die schreib/lesefunktion implementiert ist.
Dank Google kann man sich ja die Imlementierung ansehen.
http://hww3.riverweb.com:8080/viewrep/~ ... rriorLib.h
und
http://hww3.riverweb.com:8080/viewrep/~ ... rriorLib.c

Testen kann ich mangels Mac nichts, aber hast Du diesen Kommentar im Header gelesen ?
/*!
@function IOWarriorReadInterface1
@abstract Reads a 7 byte output report from interface 1 of the first IOWarrior 40 device connected to this system.
This function won't work for interfaces 1 of an IOWarrior 40 on Mac OS X 10.2.x.

@discussion Use this function to obtain data from the IOWarrior when in special mode. See the IOWarrior datasheet for details.
@param inReportID The report ID of the request. See the IO Warrior Datasheet for the appropriate values.
@param outData A pointer to a buffer where the data should be stored. Buffer has to be at least 7 bytes long
@result Returns 0 if reading operation was successfull. Returns a value different from 0 otherwise.
*/
int IOWarriorReadInterface1 (int inReportID, void *outData);
Ein kurzer Blick in den Sourcecode der Lib lässt dann auch noch den Verdacht aufkommen, dass es mit einem IOWarrior24 gar nicht funktionieren würde.

ReportId und 7 Bytes Daten sind wohl richtig für die von dir verwendete Library.
Ansonsten kann ich da leider nicht mehr weiterhelfen.

Eberhard
Guido Körber
Site Admin
Posts: 2879
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Post by Guido Körber »

Der Remark im Header ist nur nicht korrigiert worden, es funktioniert auch mit dem IOW24. Herr Iwas ist momentan in den USA, ich weiss daher nicht, ob er hier im Forum mitliest, werde ihn aber mal kontaktieren.
spyro
Posts: 23
Joined: Fri Apr 14, 2006 8:13 pm

Post by spyro »

mh,

nagut. warten wir erstmal ab. ich meine so weit kann ich ja der lösung nicht entfernt sein, weil ich ja schon den default-wert bekomme.
ich danke auf jeden fall.

fals herr iwas hier dann mitliest,
mich würde interessieren wie ich unter osx mehrere iowarrior bedienen kann, wenn ich die special-functions nutzen möchte.
im moment sehe ich nur IOWarriorWriteInterface1 und IOWarriorReadInterface1,
diese nehmen aber den erstbesten iow den sie finden.

ich wünsche einen sonnigen tag.
10.3.9 iow40 enthusiasmus
Guido Körber
Site Admin
Posts: 2879
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Post by Guido Körber »

IOWarriorReadFromInterface und IOWarriorWriteToInterface
spyro
Posts: 23
Joined: Fri Apr 14, 2006 8:13 pm

Post by spyro »

ja damit hab ich s versucht, aber wie teile ich der funktion mit, daß ich interface1 benutzen möchte? ich bekomme ja nur die iowarriorlistnode um einen iowarrior auszuwählen, damit schreibe und lese ich ja alles was zu interface 0 soll,
aber ich finde nicht raus, wie ich damit interface1 ansprechen soll..
10.3.9 iow40 enthusiasmus
spyro
Posts: 23
Joined: Fri Apr 14, 2006 8:13 pm

Post by spyro »

hallo,

ich wollte meine derzeitigen erkenntnisse schreiben. ich hab mir den code vom iowarriorprobber angeschaut. es werden dort nicht die mir zu verfügung stehenden funktionen iowarriorwriteinterface1 und iowarriorreadinterface1 verwendet. es wird meines erachtens den vom betriebssystem bereitgestellten handles direkt daten übergeben. ich kann das aber nicht auf die schnelle durchschauen... leider.
mit dem prober gehts mit meiner software nicht und freitag ist abgabe...
*zu hülf*
10.3.9 iow40 enthusiasmus
wayoda
Posts: 362
Joined: Fri Dec 19, 2003 12:00 pm
Location: Wuppertal/Germany

Post by wayoda »

spyro wrote:ja damit hab ich s versucht, aber wie teile ich der funktion mit, daß ich interface1 benutzen möchte? ich bekomme ja nur die iowarriorlistnode um einen iowarrior auszuwählen, damit schreibe und lese ich ja alles was zu interface 0 soll,
aber ich finde nicht raus, wie ich damit interface1 ansprechen soll..
Ich habe mir noch mal den Header IOWarriorLib.h angesehen und glaube (als nicht Mac-User):

Ein Element vom Typ struct IOWarriorListNode repräsentiert immer ein Interface des IOWarrior. Das Element IOWarriorListNode.interfaceType zeigt dann um welches Interface es sich handelt.
In Pseudo-Code sollte es also etwa so gehen:

Code: Select all

int count=IOWarriorCountInterfaces ();
for (int i=0; i<=count;i++) {
  IOWarriorListNode ln=IOWarriorInterfaceListNodeAtIndex (i);
  if(ln.interfaceType==kIOWarrior24Interface1) {
    //Das ist ein Interface1 für einen IOWarrior24 den man mit
    //IOWarriorReadFromInterface und IOWarriorWriteToInterface
    //benutzen kann
  }
}
Eberhard
spyro
Posts: 23
Joined: Fri Apr 14, 2006 8:13 pm

Post by spyro »

hi wayoda,

es läuft jetzt. hab mir einen dummen fehler eingehandelt, den berichtigt und dabei den nächsten eingebaut.

so dumm kann man gar nicht denken, was man alles verkehrt machen kann, den compiler kümmerts nicht..
10.3.9 iow40 enthusiasmus
Post Reply