PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : I2C - USBAdapter in C verwenden



Smazze
07.05.2014, 10:30
Hallo!
Ich habe mir einen I2C-USBAdapter bestellt (http://www.elv.de/output/controller.aspx?cid=74&detail=10&detail2=24012), allerdings benutzen die in einem Beispiel dort ein Terminalprogramm (HTerm). Ich möchte die Nutzdaten aber in einem C-Programm verarbeiten.
Nun steh ich grad auf dem Schlauch wie ich am besten an dies Problem ran gehe.

Hat einer von euch eine Idee oder besser noch einen Link mit Erklärung wie man dies realisieren kann?
Gibt es dafür eventuell schon (Windows) Bibliotheken?
Ich kann mir nicht vorstellen das ich der einzige bin der in einem C-Programm Sensordaten verarbeiten will xD


Vielen Dank!!
Smazze

Achim S.
07.05.2014, 12:24
Hallo
habe mit das Teil auch geholt. Kenne es nur mit einem Terminalprg. Bei dieser Art der Programmierung verliert man sehr schnell die Lust am Bus. Es gibt entprechende Programme und Beispiele die dir genau zeigen wie der Bus in C geht.
achim

Smazze
07.05.2014, 12:37
@Achim
Wäre nett wenn du die Links posten könntest.

Achim S.
07.05.2014, 14:31
Suche mal auf RN-Wissen, C-Programmierung oder in roboterhardware.de. Da sind viele Beispiele mit Tut drin, besonders für das RN-C 1.4, über AVR Studio6, Hardware, Zusätzliche Teile und Platinen. Wenn du nichts findest, kann ich was cicken
achim

oberallgeier
07.05.2014, 15:15
... einen I2C-USBAdapter bestellt ... benutzen die ... (HTerm). Ich möchte die Nutzdaten aber in einem C-Programm verarbeiten. Nun steh ich grad auf dem Schlauch wie ich am besten an dies Problem ran gehe...
Die Frage ist ja was ist Dein Problem, also was möchtest Du machen?

a) Nutzdaten in einem C Programm verarbeiten?

Was meinst Du mit Nutzdaten? Woher kommen die, von den erwähnten Sensoren?? Wie sehen die aus? Ich weiß, dass in den Datenblättern von Sensoren oft Hinweise zum Abholen der Werte stehen - da hättest Du schon ne perfekte Hilfe.

b) C-Programme laufen auf üblichen Computern (PC), Mainframes, embedded Winzlingen . . . wo läuft Dein C-Programm?


... Link mit Erklärung wie man dies realisieren kann ... eventuell schon (Windows) Bibliotheken ...Also doch PC? Dann wirst Du das USB-Protokoll des ELV-Winzlings aufschlüsseln müssen - vermutlich so ein Terminalprogramm nachbauen.


... das ich der einzige bin der in einem C-Programm Sensordaten verarbeiten will ...Sicher nicht. Vielleicht ist es nur meine Unbedarftheit, aber ich weiß wirklich nicht, was Du machen willst.

I2C aus einem Sensor auslesen und darstellen habe ich z.B. (in C, OHNE ELV-Kästchen) so gemacht (klick) (https://www.roboternetz.de/community/threads/47783-3-Achs-Beschleunigungssensor-sensationell-günstig-!?p=485256&viewfull=1#post485256) - und im verlinkten Thread gibts auch Softwarebeispiel(e) in C dazu.

Peter(TOO)
07.05.2014, 15:52
Hallo Smazze,

Das USB-Teil wird über den Treiber am PC eine normale serielle Schnittstelle simulieren.

Also kannst du das Teil auch wie ein UART ansprechen, also über das normale API des Betriebssystems.
Das Terminalprogramm macht da auch nichts anderes.

MfG Peter(TOO)

Andre_S
08.05.2014, 07:42
Hallo Smazze,

wie hier schon geschrieben wurde, fehlen uns Informationen über Dein Vorhaben um effektiv helfen zu können. (Deine Entwicklungsumgebung (+BS) welche Du verwendest, Deine eventuell angeschlossenen Sensoren/Geräte und natürlich wo es aktuell hängt)

Ich möchte jetzt auch nicht alles wiederholen was hier geschrieben wurde, mir ist nur aufgefallen, dass in Deinem Link zu ELV sogar entsprechende Beispiele für Microsoft Visual Studio vorhanden sind, an denen Du Dich orientieren könntest.

Gruß André

Smazze
08.05.2014, 08:09
Vielen Dank erstmal für die Antworten!!

Ich möchte (erstmal) einen Ultraschallsensor (http://www.roboter-teile.de/datasheets/srf08.pdf) über I2C an den I2C-USB-Adapter an meinen WindowsPC klemmen.
Anschließend möchte ich Distanzwerte in einem C-Programm (Visual Studio) verarbeiten..

Nun steht in dem Handbuch des I2C-USB-Adapters:
4.1.1. „S“ – Start-Bedingung
Beispiele:
Schreibe das Daten-Byte 0xFF in das Gerät mit der Geräte-Adresse 1000 000X (binär).
Bildung der Adresse: 0100 000X + Schreib-Bit (0) = 0100 0000 (binär) = 40 (hexadezimal)

[Start] [Write-Adr:0x40] [Daten:0xFF] [Stopp]
S 40 FF P

Nun ist mein Problem das ich dies nun in C machen möchte (muss) xD

Ich kann ja nicht in mein C Programm einfach diese Zeilen übernehmen :(

@Andre_S:
Zu Microsoft Visual Studio Beispielen seh ich in dem Handbuch nichts?? Welche Seiten meinst du?? :confused:

Andre_S
08.05.2014, 09:18
Hallo!


Mal nur ganz grob und auf die schnelle…

Im einfachsten Fall aus der Toolbox der Entwicklungsumgebung einen seriell Port hinzufügen, 8N1 etc. konfigurieren, Port(nachschauen bzw. auswählbar machen) und Baudrate (müsste? 115200 sein) einstellen. (siehe Anleitung vom Adapter)

Beim SRF08 kannst Du nun noch das Verstärkungs- und Reichweitenregister nach deinen Vorstellungen setzen. Ist also abhängig von den Anforderungen, ich benötige max. 3m setze also bei mir (siehe Datenblatt SRF08 )

Info: SRF08 Adresse in dem Falle “E0”.
Einstellung:
seriellPort1.Write ("SE0 01 06 P"); // Verstärkung
seriellPort1.Write ("SE0 02 45 P"); // Entfernung

Messung:
seriellPort1.Write("SE0 00 51 P L0015 SE0 01 SE1 03 P"); // Abfrage Sonar

und nun musst Du mal schauen was Du beim Ereignis „DataReceived“ oder anderweitiger zyklischer Abfrage (Anzahl: seriellPort1.BytesToRead) erhältst. Die Daten aus dem Buffer holen und anschließend entsprechend verarbeiten.

Beispielanbindung des I2C Adapters steht unter deinem Link (ELV) als ZIP Datei „USB/I2C Demosoftware“


Gruß André

Smazze
08.05.2014, 09:50
Danke André.. glaub so langsam kommt Licht ins Dunkle ;)

Das Beispiel ist für ein CSharp Programm, aber ich denke das ich mir da das eine oder andere für mein C Programm abgucken kann xD