Hilfe für Anfänger

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

Moderator: Guido Körber

Playground
Posts: 11
Joined: Tue Feb 23, 2010 9:35 pm

Hilfe für Anfänger

Post by Playground »

Hallo zusammen,

habe hier ein USB to I²C Dongle (IOW24-DG).
Ich möchte da ein Programm schreiben um mit I²C Slaves zu kommunizieren.
Leider scheiterts schon an grundlegenden Sachen. Kann mir bitte jemand erklären, wie ich die SDK verwenden soll. Wie soll ich die iowkit.dll benutzen? Ich komme überhaupt nicht klar. Benutze hier Visual C++ 2008.

Ich hab jetzt 2 Jahre nix mehr mit Programmieren am Hut gehabt - wie´s scheint viel zu lange.

Danke für eure Hilfe

Grüße Playground
Last edited by Playground on Tue Feb 23, 2010 10:40 pm, edited 1 time in total.
friend-of-rq
Posts: 389
Joined: Sun Feb 13, 2005 1:22 pm
Location: Gerblingerode / Duderstadt
Contact:

Re: Hilfe für Anfänger

Post by friend-of-rq »

@ Playground
USB to I²C Dingle
:-)

Hast Du denn schon ein I2C-Slave und wenn welchen ?
Playground
Posts: 11
Joined: Tue Feb 23, 2010 9:35 pm

Re: Hilfe für Anfänger

Post by Playground »

friend-of-rq wrote:Hast Du denn schon ein I2C-Slave und wenn welchen ?
ja. ich will den speicher von einem sfp (http://de.wikipedia.org/wiki/Small_Form ... _Pluggable) auslesen. das board, um diesen zu betreiben, steht. hab auch schon mit dem beispielprogramm rumgespielt. nur ist dies etwas unangepasst für meinen zweck. der speicherinhalt soll dann in einem späteren schritt auch interpretiert werden, d.h. teilweise ascii codierte sachen, manchmal müssen auch bits einzeln ausgewertet werden.
friend-of-rq
Posts: 389
Joined: Sun Feb 13, 2005 1:22 pm
Location: Gerblingerode / Duderstadt
Contact:

Re: Hilfe für Anfänger

Post by friend-of-rq »

hab auch schon mit dem beispielprogramm rumgespielt
für einen mini-GBIC ?

Beschreibe mal genau was Du eigentlich machen willst ...
Playground
Posts: 11
Joined: Tue Feb 23, 2010 9:35 pm

Re: Hilfe für Anfänger

Post by Playground »

friend-of-rq wrote:Beschreibe mal genau was Du eigentlich machen willst ...
Was ein SFP ist kann man ja bei wikipedia nachlesen. Was ich machen will:
Das Ding hat einen EEPROM eingebaut. Diesen kann man per IIC-Interface auslesen. Da steht dann z.B. drin, welcher Hersteller, was der SFP kann, ...

Bisher habe ich mit dem Beispielprogramm (Simple-I2C) die Daten ausgelesen. Dieses ist aber für meine spezielle Anwendung kaum zu gebrauchen, da ich dann diese Daten z.B. per Hand interpretieren muss.
friend-of-rq
Posts: 389
Joined: Sun Feb 13, 2005 1:22 pm
Location: Gerblingerode / Duderstadt
Contact:

Re: Hilfe für Anfänger

Post by friend-of-rq »

Das Ding hat einen EEPROM eingebaut
soweit sollte das auch kein Problem sein ...

Wie weit bis Du denn mit den IOW - DLL Funktionen z.B.
"IowKitOpenDevice"
"IowKitGetDeviceHandle"
"IowKitGetNumDevs"
"IowKitGetProductId"
"IowKitGetSerialNumber"
...

irgend was schon in der Richtung hin bekommen ?
Playground
Posts: 11
Joined: Tue Feb 23, 2010 9:35 pm

Re: Hilfe für Anfänger

Post by Playground »

friend-of-rq wrote: irgend was schon in der Richtung hin bekommen ?
schön wärs :-(
ich weiß überhaupt nicht, wie ich die .dll einbinden soll, welche header datein ich brauche,... . wenn ich zugriff auf die funktionen hab kann ich ja nach dokumentation vorgehen.
friend-of-rq
Posts: 389
Joined: Sun Feb 13, 2005 1:22 pm
Location: Gerblingerode / Duderstadt
Contact:

Re: Hilfe für Anfänger

Post by friend-of-rq »

habe leider von "Visual C++ 2008" keinen blassen Schimmer ...

könnte Dir höchstens den IOW-Socket-Server anbieten, damit kannst Du über eine Socket-Verbindung mit beliebigen IOWs kommunizieren ...
Guido Körber
Site Admin
Posts: 2879
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Re: Hilfe für Anfänger

Post by Guido Körber »

Der IIC Beispielcode im SDK könnte da wohl weiterhelfen.
Playground
Posts: 11
Joined: Tue Feb 23, 2010 9:35 pm

Re: Hilfe für Anfänger

Post by Playground »

Guido Körber wrote:Der IIC Beispielcode im SDK könnte da wohl weiterhelfen.
Hallo,
tut er leider nicht.
Kann mir keiner sagen, was ich machen muss, um Zugriff auf die Funktionen aus der Dokumentation zu bekommen? Schade, dass dieser erste Schritt in der Doku nicht berücksichtigt wird.

Grüße Playground
User avatar
Christoph Jung
Posts: 673
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: Hilfe für Anfänger

Post by Christoph Jung »

Man muss die iowkit.lib ins Projekt mit einbinden, also unter den Linkeroptionen einfügen. Dann muss man noch die iowkit.h includen und die DLL entweder im Projektverzeichnis oder im System32 Ordner hinterlegen. Schon sollte es gehen. Einfach mal in den Projektoptionen der Beispiele schauen wie man die iowkit.lib einbindet.
Software developer
Playground
Posts: 11
Joined: Tue Feb 23, 2010 9:35 pm

Re: Hilfe für Anfänger

Post by Playground »

ja danke schon mal. hab ich so gemacht. mein code sieht jetzt so aus:

Code: Select all

#include "stdafx.h"
#include "math.h"
#include "iowkit.h"


int _tmain(int argc, _TCHAR* argv[])
{
	return 0;	
}
Beim Kompilieren kommen dann allerdings ca. 150 Fehler, weil er die bezeichner dword, uchar, ... in der iowkit.h nicht kennt. also ab zeile 94 kommen die fehler.
User avatar
Christoph Jung
Posts: 673
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: Hilfe für Anfänger

Post by Christoph Jung »

evtl. die win.h einbinden oder mal googlen welche header dafür benötigt werden.
Software developer
Playground
Posts: 11
Joined: Tue Feb 23, 2010 9:35 pm

Re: Hilfe für Anfänger

Post by Playground »

hab die windows.h hinzugefügt. jetzt scheint es zu funktionieren.
danke nochmal für eure hilfe.

war das eine geburt :D

Grüße Playground
Playground
Posts: 11
Joined: Tue Feb 23, 2010 9:35 pm

Re: Hilfe für Anfänger

Post by Playground »

Hallo,

muss jetzt doch nochmal meinen Fred wiederbeleben.

Also der Zugriff auf den Dongle klappt super. Kann Seriennummer und Typ und so auslesen.

Jetzt habe ich einige Probleme beim auslesen eines IIC Gerätes. Schreiben möchte ich darauf nicht, nur lesen. Nach meinem bisherigen Verständnis sind folgende Schritte nötig:
  • - Dongle öffnen
  • - IIC Funktion aktivieren
  • - Read request senden
  • - Lesen der Daten
Leider will das alles nich so, wie ich. Ist bei dieser Vorgehensweise noch ein Denkfehler, oder stimmt das erst mal so?
Hab hier noch mal meinen Code hinterlegt. Ich will erst mal 6 Bytes aus dem IIC Gerät lesen.

Code: Select all

UCHAR adresse=0xA0;

IOWKIT_HANDLE IOWarrior;
IOWarrior = IowKitOpenDevice();
if (IOWarrior != NULL) printf("USB-Dongle gefunden\n");
//IOWarrior geöffnet


IOWKIT_SPECIAL_REPORT rep;
				
memset(&rep, 0, IOWKIT_SPECIAL_REPORT_SIZE);
rep.ReportID = 0x01;
rep.Bytes[0] = 0x01;	//enable IIC
rep.Bytes[1] = 0x80;	//disable pull up resistor
IowKitWrite(IOWarrior, IOW_PIPE_SPECIAL_MODE, (char *) &rep, IOWKIT_SPECIAL_REPORT_SIZE);
//IIC aktiviert

memset(&rep, 0, IOWKIT_SPECIAL_REPORT_SIZE);
rep.ReportID = 0x03;	//I2C read request
rep.Bytes[0] = 6;		//n Bytes
rep.Bytes[1] = adresse <<1 | 0x01 ; //Address for read
IowKitWrite(IOWarrior, IOW_PIPE_SPECIAL_MODE, (char*) &rep, IOWKIT_SPECIAL_REPORT_SIZE);
//read request, 6 Bytes

memset(&rep, 0x00, IOWKIT_SPECIAL_REPORT_SIZE);
IowKitRead(IOWarrior, IOW_PIPE_SPECIAL_MODE, (char*) &rep, IOWKIT_SPECIAL_REPORT_SIZE);	
if(!(rep.Bytes[0] & 0x80)){
printf("%#x\n",rep.Bytes[2]);
printf("%#x\n",rep.Bytes[3]);
printf("%#x\n",rep.Bytes[4]);
printf("%#x\n",rep.Bytes[5]);
printf("%#x\n",rep.Bytes[6]);
printf("%#x\n",rep.Bytes[7]);
}
else printf("IIC Fehler");


memset(&rep, 0, IOWKIT_SPECIAL_REPORT_SIZE);
rep.ReportID = 0x01;
rep.Bytes[0] = 0x00;	//disable IIC
IowKitWrite(IOWarrior, IOW_PIPE_SPECIAL_MODE, (char *) &rep, IOWKIT_SPECIAL_REPORT_SIZE);

IowKitCloseDevice(IOWarrior);
Die Ausgabe sagt dann IIC Fehler. Was läuft da schief? Ich bin grad mit meinem Latein am ende.
Last edited by Playground on Wed Mar 10, 2010 9:54 am, edited 1 time in total.
Post Reply