IOW24 Dongle - i2c - vb.net

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
Th_Sta
Posts: 2
Joined: Tue Jul 08, 2014 3:09 pm

IOW24 Dongle - i2c - vb.net

Post by Th_Sta »

Hallo,

leider muss ich mich an euch wenden da ich selbst den Knoten im Kopf nicht auf bekomme.

Ich möchte über vb.net unterschiedliche I2C Komponenten (LM75, PCF8591, PCF8574) am IO Warrior 24 (Dongle) steuern.

Mit Simple-I2C.exe kann ich die drei Bausteine auf meinem Steckfeld ansprechen und auslesen. Leider gelingt mir das aber über das SDK Kit nicht. Ich bekomme die Rückmeldung des USB-Dongle (Seriennummer, Handle, usw.) und dann komme ich nicht mehr weiter. Bisher habe ich immer anhand von Beispielen herausfinden können wie die Funktionen anzusprechen sind - aber hier komme ich gar nicht weite.
Um es einfach zu halten: :-)
Kann mir jemand den Code zusammenbauen mit dem ich den 8fach IO (PCF8574, Start Adresse &H40, http://www.nxp.com/documents/data_sheet/PCF8574.pdf) unter VB.net mit dem SDK-Kit (iow.vb) zum laufen bekomme? Ich denke, dass damit klar ist wie es funktioniert und ich den Rest zum laufen bekomme.

Sorry, ich habe viel gesucht und probiert, aber ich bekomme es nicht zum laufen.

Vorab schon mal vielen DANK.
Gruß aus dem Süden von Augsburg
Thorsten
User avatar
Christoph Jung
Posts: 670
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: IOW24 Dongle - i2c - vb.net

Post by Christoph Jung »

Ohne einarbeitung in das Thema wird auch kein Codebeispiel helfen, tut mir leid.
Was genau soll denn überhaupt gemacht werden?
Abteilung: Softwareentwicklung
Folge uns auf Twitter
Follow us on twitter
Th_Sta
Posts: 2
Joined: Tue Jul 08, 2014 3:09 pm

Re: IOW24 Dongle - i2c - vb.net

Post by Th_Sta »

Hallo Christoph,

erst mal danke für die Antwort.

Zur Historie: Ich habe "heute" über ein VB6 Programm und den Parallelen Port eines Rechner, I2C Komponenten angesprochen (16 Kanal AD-Wandler, 16 Kanal I/O, LCD mit 4x27 Zeichen). (Damit steuere ich meine Heizung. Software und Hardware selbst erstellt.) Da absehbar ist, dass dieser Rechner auf gibt, möchte ich nicht nur diesen ersetzten sondern auch den LPT los werden.
Bei der suche nach einem USB-i2c adapter bin ich über euren IOW24 gestolpert. In diesen möchte ich mich nun einarbeiten, wie du sagst.

Nach nun ca. 6 Stunden bekomme ich keinerlei Kommunikation mit dem i2c bus zum laufen. Deshalb bitte ich um Unterstützung.

Hilfreich finde ich, wenn mir jemand den Code für z.B. das Lesen und Schreiben auf dem PCF8574 "zeigt". Die dokumentationen habe ich vor mir. Auch das Beispiele mit dem MAXIM127 habe ich mir angesehen, aber es wird mir nicht klar wie sich das Protokoll über das Report Array aufbaut.

1. IOW aktivieren (handle, I2C aktiv)
2. PCF8574 adressieren und ACK kontrollieren
3. Daten Schreiben bzw. Daten Lesen.

Wieder vorab vielen Dank.
Gruß
Thorsten
Guido Körber
Site Admin
Posts: 2856
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Re: IOW24 Dongle - i2c - vb.net

Post by Guido Körber »

Im Datenblatt Kapitel 5.10ff ist beschrieben wie sich die Reports für die IIC Funktion aufbauen. Was genau ist daran unklar?

Der grundsätzliche Ablauf ist unabhängig davon welches IIC Device am anderen Ende hängt.
User avatar
Christoph Jung
Posts: 670
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: IOW24 Dongle - i2c - vb.net

Post by Christoph Jung »

Hier mal grob umrissen. Was die Flags sind steht im Datenblatt zum IO-Warrior

Code: Select all

Dim rep24(8) As Byte

rep24(0) = &H00 'reportID
rep24(1) = &H00 'byte[0]
rep24(2) = &H00 'byte[1]
rep24(3) = &H00 'byte[2]
rep24(4) = &H00 'byte[3]
rep24(5) = &H00 'byte[4]
rep24(6) = &H00 'byte[5]
rep24(7) = &H00 'byte[6]
rep24(8) = &H00 'byte[7]

'I2C Einschalten:
rep24(0) = &H01 'reportID: I2C-Mode
rep24(1) = &H01 'byte[0]: Enable
rep24(2) = &H00 'byte[1]: Flags
rep24(2) = &H00 'byte[2]: Timeout

write(handle, 1, rep24, 8)

'I2C Schreiben
rep24(0) = &H02 'reportID: I2C Write Transaktion
rep24(1) = &HC3 'byte[0]: Flags (Start + Stopbit) + Anzahl der Bytes,
rep24(2) = &HFF 'byte[1]: I2C-Addresse vom Slave
rep24(3) = &HFF 'byte[2]: Daten
rep24(4) = &HFF 'byte[3]: Daten

'Weil Anzahl der Bytes = 3 werden die anderen nicht gesendet
'rep24(5) = &H00 'byte[4]
'rep24(6) = &H00 'byte[5]
'rep24(7) = &H00 'byte[6]
'rep24(8) = &H00 'byte[7]

write(handle, 1, rep24, 8)

'I2C Lesen
rep24(0) = &H03 'reportID: I2C Read Transaktion
rep24(1) = &H03 'byte[0]: Anzahl der Bytes 
rep24(2) = &HFF 'byte[1]: I2C-Addresse vom Slave, nicht vergessen +1 für Lesen

write(handle, 1, rep24, 8)
read(handle, 1, rep24, 8)

'Daten werden im rep24 hinterlegt
Abteilung: Softwareentwicklung
Folge uns auf Twitter
Follow us on twitter
Post Reply