Hilfe für Anfänger
Moderator: Guido Körber
-
- Posts: 11
- Joined: Tue Feb 23, 2010 9:35 pm
Hilfe für Anfänger
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
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.
-
- Posts: 389
- Joined: Sun Feb 13, 2005 1:22 pm
- Location: Gerblingerode / Duderstadt
- Contact:
Re: Hilfe für Anfänger
@ Playground
Hast Du denn schon ein I2C-Slave und wenn welchen ?
:-)USB to I²C Dingle
Hast Du denn schon ein I2C-Slave und wenn welchen ?
-
- Posts: 11
- Joined: Tue Feb 23, 2010 9:35 pm
Re: Hilfe für Anfänger
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 wrote:Hast Du denn schon ein I2C-Slave und wenn welchen ?
-
- Posts: 389
- Joined: Sun Feb 13, 2005 1:22 pm
- Location: Gerblingerode / Duderstadt
- Contact:
Re: Hilfe für Anfänger
für einen mini-GBIC ?hab auch schon mit dem beispielprogramm rumgespielt
Beschreibe mal genau was Du eigentlich machen willst ...
-
- Posts: 11
- Joined: Tue Feb 23, 2010 9:35 pm
Re: Hilfe für Anfänger
Was ein SFP ist kann man ja bei wikipedia nachlesen. Was ich machen will:friend-of-rq wrote:Beschreibe mal genau was Du eigentlich machen willst ...
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.
-
- Posts: 389
- Joined: Sun Feb 13, 2005 1:22 pm
- Location: Gerblingerode / Duderstadt
- Contact:
Re: Hilfe für Anfänger
soweit sollte das auch kein Problem sein ...Das Ding hat einen EEPROM eingebaut
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 ?
-
- Posts: 11
- Joined: Tue Feb 23, 2010 9:35 pm
Re: Hilfe für Anfänger
schön wärs :-(friend-of-rq wrote: irgend was schon in der Richtung hin bekommen ?
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.
-
- Posts: 389
- Joined: Sun Feb 13, 2005 1:22 pm
- Location: Gerblingerode / Duderstadt
- Contact:
Re: Hilfe für Anfänger
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 ...
könnte Dir höchstens den IOW-Socket-Server anbieten, damit kannst Du über eine Socket-Verbindung mit beliebigen IOWs kommunizieren ...
-
- Site Admin
- Posts: 2879
- Joined: Tue Nov 25, 2003 10:25 pm
- Location: Germany/Berlin
- Contact:
Re: Hilfe für Anfänger
Der IIC Beispielcode im SDK könnte da wohl weiterhelfen.
-
- Posts: 11
- Joined: Tue Feb 23, 2010 9:35 pm
Re: Hilfe für Anfänger
Hallo,Guido Körber wrote:Der IIC Beispielcode im SDK könnte da wohl weiterhelfen.
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
- Christoph Jung
- Posts: 673
- Joined: Sun Oct 08, 2006 3:43 pm
- Location: Germany / Berlin
- Contact:
Re: Hilfe für Anfänger
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
-
- Posts: 11
- Joined: Tue Feb 23, 2010 9:35 pm
Re: Hilfe für Anfänger
ja danke schon mal. hab ich so gemacht. mein code sieht jetzt so aus:
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.
Code: Select all
#include "stdafx.h"
#include "math.h"
#include "iowkit.h"
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}
- Christoph Jung
- Posts: 673
- Joined: Sun Oct 08, 2006 3:43 pm
- Location: Germany / Berlin
- Contact:
Re: Hilfe für Anfänger
evtl. die win.h einbinden oder mal googlen welche header dafür benötigt werden.
Software developer
-
- Posts: 11
- Joined: Tue Feb 23, 2010 9:35 pm
Re: Hilfe für Anfänger
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
danke nochmal für eure hilfe.
war das eine geburt :D
Grüße Playground
-
- Posts: 11
- Joined: Tue Feb 23, 2010 9:35 pm
Re: Hilfe für Anfänger
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:
Hab hier noch mal meinen Code hinterlegt. Ich will erst mal 6 Bytes aus dem IIC Gerät lesen.
Die Ausgabe sagt dann IIC Fehler. Was läuft da schief? Ich bin grad mit meinem Latein am ende.
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
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);
Last edited by Playground on Wed Mar 10, 2010 9:54 am, edited 1 time in total.