AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi I²C Ansteuerung über USB Schnittstelle
Thema durchsuchen
Ansicht
Themen-Optionen

I²C Ansteuerung über USB Schnittstelle

Ein Thema von Tom K. · begonnen am 22. Apr 2010 · letzter Beitrag vom 24. Apr 2010
Antwort Antwort
Seite 1 von 2  1 2      
Tom K.

Registriert seit: 22. Apr 2010
11 Beiträge
 
#1

I²C Ansteuerung über USB Schnittstelle

  Alt 22. Apr 2010, 21:26
Hallo Leute

Im Rahmen meiner Staatsexamensarbeit plane ich den Nachbau dieser Low-Cost-Wärmebildkamera: Klick
Dabei sind zwei Thermosensoren TPA81 (I²C-Anbindung) über einen USB-I²C-Adapter mit dem Rechner verbunden. Der Adapter besitzt einen FTDI-Chip.
So ein Programm, das die Herren im o.g. Artikel in C++ geschrieben haben, möchte ich für meinen Nachbau in Delphi schreiben, da ich vor einigen Jahren in der Schule bereits reichlich mit Delphi zu tun hatte. Leider wurde damals keine Schnittstellenprogrammierung behandelt...

Mir ist zwar an Hand der Quellen klar, welche Zeichenketten ich den Sensoren schicken muss, damit die z.B. die Servos steuern, bzw. wie ich die Temperaturen aus einer ausgelesenen Zeichenkette extrahiere. Was mir aber völlig unklar ist: Wohin muss ich die Zeichenkette schicken bzw. woher kann ich eine empfangen? Ich brauch sicher irgendein Handle zu irgendeinem Bus, aber da hängt's bei mir grad total

Hat zufällig schon jemand mit diesem USB-I²C-Adapter oder generell mit FTDI-Chips gearbeitet? Kann mir jemand nen Tipp geben, wo ich genaue Infos herkriege, wie ich die Schnittstelle anspreche (die "Hinweise" von FTDI sind mir irgendwie ein totales Rätsel)? Oder könnte jemand der sich auskennt vielleicht sogar kurz etwas Zeit opfern, mir es hier zu erklären (wenn es nicht zu umfangreich wird)?
Ihr würdet mir echt verdammt weiterhelfen

Grüße
Tom



PS: Falls wichtig: Ich arbeite mit Borland Delphi 6 Personal und Win7 64bit.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#2

Re: I²C Ansteuerung über USB Schnittstelle

  Alt 22. Apr 2010, 21:45
Da dieses ein I²C-zu-COMPort-Adapter ist, ist es recht einfach.
Du brauchst einfach nur den entsprechenden COM-Port ansprechen.
Hier wird ja eine USB-zu-COMPort-Umleitung (via Treiber) eingerichtet, so daß du den USB-Port nicht selber ansteuern mußt.

z.B. Hier im Forum suchenTComPort, Hier im Forum suchenAsyncPro oder direkt das Device "COMx" wie eine Datei öffnen (x = eine Nummer von 0 bis 9 für den entsprechenden Port).
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Tom K.

Registriert seit: 22. Apr 2010
11 Beiträge
 
#3

Re: I²C Ansteuerung über USB Schnittstelle

  Alt 22. Apr 2010, 21:58
Danke für die schnelle Antwort. Dass es "recht einfach" ist, beruhigt schonmal
Hab mal nach diesem TComPort und AsyncPro Ausschau gehalten. Leider lassen sich diese neuen Versionen in meinem Uralt-Delphi-6 irgendwie nicht installieren Gibts von TComPort noch irgendwo paar alte Versionen? Ich mein, für meine einfachen Aufgaben (paar Strings senden und empfangen) brauch ich vielleicht nicht das aller aktuellste, oder? Neue Delphi-Versionen sind mir zu teuer, und mit 30Tage Trial komm ich auch nicht weit...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#4

Re: I²C Ansteuerung über USB Schnittstelle

  Alt 22. Apr 2010, 22:06
Kenn mich mit diesen Komponenten nicht aus.

Aber notfalls kannst du sowas nehmen.
(Solange dir die Standardeinstellungen des Systems/Windows ausreichen ... also Baudrate, Stoppbits usw. )

Delphi-Quellcode:
var T: TextFile;

AssignFile(T, 'COM2');
Rewrite(T);
Write(T, 'dein string');
Flush(T); // da TextFile gepuffert ist
...
Ein TFileStream ließe sich ebenso verwenden.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Tom K.

Registriert seit: 22. Apr 2010
11 Beiträge
 
#5

Re: I²C Ansteuerung über USB Schnittstelle

  Alt 22. Apr 2010, 22:36
@himitsu: Dein Vorschlag sieht schön einfach aus. Würd ich gern so machen... aber: Wird der Code ausgeführt, stürzt das Programm ab und Windows gibt ne schöne Fehlermeldung *grins*

Ich hab TComPort in Version 3.0 im Netz gefunden und erfolgreich installieren können!
Mal schauen wie weit ich komme. Trotzdem erstmal: Danke!
  Mit Zitat antworten Zitat
Alloc

Registriert seit: 18. Apr 2005
Ort: Griesheim
167 Beiträge
 
Delphi 2006 Professional
 
#6

Re: I²C Ansteuerung über USB Schnittstelle

  Alt 22. Apr 2010, 23:00
Hi Tom,

eine weitere Möglichkeit mit FTDI-Chips zu sprechen ist deren eigene API FTD2XX. Hat zB. den Vorteil, dass man nicht wissen muss, welche COM-Port-Nummer Windows dem Gerät beim Anstöpseln gegeben hat. Außerdem ist bei höheren Datenraten die Systemlast deutlich geringer und die Bytes werden nicht einzeln rausgeschickt

Eine kleine Klasse von mir, die die API kapselt, findest du unter http://svn.chrilly.net/delphi/FTDI_D2XX/. Keine Garantie auf Vollständigkeit, sollte aber für diese Aufgabe völlig ausreichend sein

Grüße,
Chris
Christian Illy
ONI2.net, basicly every important link about Oni.
  Mit Zitat antworten Zitat
R2009

Registriert seit: 9. Mär 2009
Ort: Heidelberg
440 Beiträge
 
Delphi 2007 Professional
 
#7

Re: I²C Ansteuerung über USB Schnittstelle

  Alt 23. Apr 2010, 06:04
Hi,

asynchpro gibts bei sourceforge. Das Installationspackage enthält die Versionen ab Delphi2.
Bei FTDI gibts einen Wrapper (Delphi) mit Beispielen.

Mit beiden arbeite ich! Asynchpro ist sehr einfach. Nur bei der Installation muss man halt
die Anleitung durchlesen.
Die FTDI Geschichte ist etwas anspruchsvoller aber auch da gilt lesen und ausprobieren.

Grüsse
Rainer
Rainer Unger
Mein Profil:
Studium Allgemeine Elektrotechnik TH Darmstadt
Entwicklung von Tools für die Rundsteuer und Zählertechnik.
uP's Atmel Prozessoren (ATmega16,32,88...) in C und Assembler.
  Mit Zitat antworten Zitat
Tom K.

Registriert seit: 22. Apr 2010
11 Beiträge
 
#8

Re: I²C Ansteuerung über USB Schnittstelle

  Alt 24. Apr 2010, 11:36
Bei sourceforge find ich leider nur die aktuelle Version 5.00 von Async Pro: http://sourceforge.net/projects/tpapro/
Die Anleitung beschreibt die Installation ab Delphi 7. Ich hab 6. Und eine naive Installation schlug leider fehl.
Der Vorteil für mich von Async Pro wäre, dass eine Befehlsreferenz als PDF beiliegt. Zu meiner TComPort 3.0 Version gibts zwar ne Hilfe, aber die kann ich nicht öffnen/installieren

@Alloc: Das Ansprechen mit der FTDI-eigenen API kam mir auch schon in den Sinn. Aber bevor ich die DLL einbinde und mich da reinarbeite, dacht ich, gibt's bestimmt einfachere Varianten. Es ist ja letztlich auch nur ein relativ simples Problem, das ich habe (siehe Beispiel unten). Deine Dateien hab ich erfolgreich installieren können - zumindest hat das kleine Delphi-Fensterchen mir das gesagt Hab das FTDI_D2XX auch immerhin schon unter dem Register "Samples" gefunden *stolz* Aber dann? Hab leider irgendwie den roten Faden verloren... wie sprech ich damit jetzt mein Gerät an?

Zurück zu TComPro:
Meine Sensoren steuern die Servomotoren selbst an, wenn ich ihnen den Befehl dazu gebe. Um z.B. einen Servo auf Position 0 zu drehen, muss ich an den Sensor folgenden Hex-Code schicken:
0x55 0xD0 0x1 0x1 0x0
(heißt: Schreibkommando - Adresse des Sensors - Register im Sensor - Anzahl der zu übermittelnden Bytes - Servoposition)
Da mir schleierhaft ist, was das ominöse "0x" jedes mal davor soll und auch nicht wüsste, welcher Variablentyp das mitmacht, hab ich einfach mal angenommen, dass ich folgendes schicken muss:
55 D0 1 1 0
Mein USB-I²C Adapter liegt am COM2 an.
Was ist im folgenden Code falsch?

Delphi-Quellcode:
procedure TForm1.SendTestClick(Sender: TObject);
begin
ComPort1.Open;

ComPort1.WriteStr(Chr($55)+Chr($D0)+Chr($1)+Chr($1)+Chr($0));

Comport1.Close;
end;
Funktioniert leider nicht. Normalerweise müsste am Adapter auch eine kleine grüne LED blinken, wenn da irgendwas ankommt. Tut sie aber nicht. Der Servomotor macht natürlich auch keine Bewegungen...
Edit: ComPort1.Port ist natürlich auf COM2 gestellt.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#9

Re: I²C Ansteuerung über USB Schnittstelle

  Alt 24. Apr 2010, 12:17
Versuch mal dieses:
Delphi-Quellcode:
var
  H: THandle;
  L: LongWord;

begin
  H := CreateFile('COM2', GENERIC_WRITE, 0, nil, OPEN_EXISTING, 0, 0);
  if H = INVALID_HANDLE_VALUE then
    ShowMessage(SysErrorMessage(GetLastError));
  if not WriteFile(H, #85#208#1#1#0, 5, L, nil) then
    ShowMessage(SysErrorMessage(GetLastError));
  CloseHandle(H);
0x ist in C/C++ die Kennung für einen hexadezimalen Wert,
also das was das $ in Delphi ist.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Tom K.

Registriert seit: 22. Apr 2010
11 Beiträge
 
#10

Re: I²C Ansteuerung über USB Schnittstelle

  Alt 24. Apr 2010, 14:31
Zitat von himitsu:
0x ist in C/C++ die Kennung für einen hexadezimalen Wert,
also das was das $ in Delphi ist.
Danke, wieder was gelernt

Dein Code funktioniert leider auch nicht Es kommt aber keine Fehlermeldung, es passiert einfach gar nix. Nur wenn der USB-Stecker gezogen ist, kommt eine Meldung.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz