Entwickler-Ecke

Sonstiges (Delphi) - USB Schnittstelle


M. Raab - Sa 01.11.03 14:19
Titel: USB Schnittstelle
Hallo NG,


ich habe mich hier und in einigen anderen Foren mal umgehört, was es zu dem Thema USB - Schnittstelle unter DELPHI gibt. Es ja recht dürftig was ich bisher gefunden habe.

Mal eine Frage: kennt jemand eine Komponente o.ä. mit der man eine USB Schnittstelle ansprechen kann, auswählen kann und Daten senden und empfangen kann ?


Gruss


Markus


Adrian - So 02.11.03 23:04

Servus Markus!

Na, da hast Du Dir was vorgenommen!
Bei Jedi gibt's ein ganzes Komponentenpaket, das auch einiges an USB-Unterstützung bietet, und von http://www.codemercs.com kannst Du die SDK für den Code-Warrior besorgen, da sind gute Beispiele drin. Gerade der SimpleHIDWriter wird so in etwa Deinen Erwartungen entsprechen. Aber so einfach, wie es bei den COM- und LPT-Schnittstellen geht, ist USB bei weitem nicht. Ein Gutding meiner grauen Haare (von den ausgegangenen gar nicht zu sprechen) hängt mit dem Entschluß zusammen, über USB arbeiten zu wollen. Viel Erfolg!

Gruß,

Adrian


M. Raab - Di 11.11.03 14:17

Hallo Adrian,

habe mir die Sache mal angesehen - versteh ich leider nicht. :oops:

Ich habe aber auch etwas gefunden, was mir einfacher erscheint, leider bekomme ich es nicht zum Laufen bzw. zum Erkennen einer USB Komponente.


http://www.ftdichip.com


Die bieten dort ne DEMO und einen Treiber an - sieht gut aus, funzt aber irgendwie nicht.

Hat jemand mit dem Ding schon mal gearbeitet ? Erfahrungen ?


Gruss


Markus


Fighter#1 - Mo 23.02.09 17:36

Hi =) ich selber habe mit dem FTDI Chip noch nicht so große Erfahrungen gemacht.
Ich bastel gerade mit meinem PIC Prozessor rum =) Da habe ich vor im nächsten halben Jahr auch eine KOmmunikation via USB und dem PIC zustande zu bringen =)
Sollte nicht unmöglich sein ;) :D Der Pic Prozessor besitzt auch einige Vorteilhafte Eigenschaften für USB und somit denke ich kriegt man das hin*g*
Musst dir halt ein anständiges Protokoll zwischen dem Gerät was am USB dran hängt und dem PC überlegen =)
Was willst denn an der USB SChnittstelle ansprechen =) USB hat (idR) 4 Pins, Vdd, Masse und D+, D- ... ich weiß nich, aber meistens ist der Com Port etwas geschickter als der USB *G* (also für die meisten sehr einfachen Probleme) ... aber sag einfach mal was du machen möchtest?


Dunkel - Mo 23.02.09 20:47

user profile iconFighter#1 hat folgendes geschrieben Zum zitierten Posting springen:
... ich weiß nich, aber meistens ist der Com Port etwas geschickter als der USB *G* (also für die meisten sehr einfachen Probleme) ...

Na, würde ich jetzt so nicht sagen. Ein Haufen der neueren Rechner, und ganz viele Schlepptops, haben gar keine serielle Schnittstelle mehr; dann ist es doch sehr ungeschickt, wenn man auf den COM-Port gesetzt hat... :?

Das Problem an USB ist einfach, dass man einen vollwertigen USB-Slave-Controller (welche solche Sachen wie "Hallo, ich bin's! Ich kann dieses und jenes und kommuniziere mit dieser und jener Geschwindigkeit" können muss) haben muss, welcher garantiert aufwendiger ist als eine doch recht simple serielle Schaltung (Baudrate, Parität und Stoppbit entsprechend im System einstellen -> funzt).

Es gibt aber massig vorgefertigte USB-Experimentier-Boards, welche den wichtigen Teil der Hardware schon implementiert haben, meist inklusive n digitalen Ein- und Ausgängen, ggf. Treiber und Header-Dateien für die wichtigsten Programmiersprachen (wenn Du Dich ordentlich umschaust, wirst Du auch solche Boards mit einer Delphi-Header-Datei, inklusive kleinem Demo-Projekt, finden). Ich würde zuerst mit sowas anfangen...


dummzeuch - Mo 23.02.09 23:06

user profile iconDunkel hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconFighter#1 hat folgendes geschrieben Zum zitierten Posting springen:
... ich weiß nich, aber meistens ist der Com Port etwas geschickter als der USB *G* (also für die meisten sehr einfachen Probleme) ...

Na, würde ich jetzt so nicht sagen. Ein Haufen der neueren Rechner, und ganz viele Schlepptops, haben gar keine serielle Schnittstelle mehr; dann ist es doch sehr ungeschickt, wenn man auf den COM-Port gesetzt hat... :?


Es gibt jede Menge USB-COM Umsetzer, die funktionieren wunderbar, auch in aktuellen Rechnern, die keinen nativen COM-Port mehr haben. Lediglich die Latenzzeit ist groesser, aber das ist meist kein Problem.

twm


mikro1986 - Mo 09.03.09 19:24

Ich muss mich mit dem Problem nun auch auseinandersetzen...

Zu diesen Adaptern, hab jetzt schon viele ausprobiert, waren zwar für LTP, aber das sollte ja egal sein, jedenfalls hab noch keinen gefunden, der funktioniert hat... leider...

Und USB ist echt so schwer??

Ich hab mit LTP mit der INPOUT32.dll geproggt, kann man die auch für die COM-Schnittstelle nutzen?


dummzeuch - Mo 09.03.09 23:14

user profile iconmikro1986 hat folgendes geschrieben Zum zitierten Posting springen:

Zu diesen Adaptern, hab jetzt schon viele ausprobiert, waren zwar für LTP, aber das sollte ja egal sein, jedenfalls hab noch keinen gefunden, der funktioniert hat... leider...

Und USB ist echt so schwer??

Ich hab mit LTP mit der INPOUT32.dll geproggt, kann man die auch für die COM-Schnittstelle nutzen?


Ich habe noch keinen usb zu lpt Adapter probiert und kenne inpout32.dll nicht, deshalb kann ich dazu nichts sagen, aber Du kannst nicht davon ausgehen, dass es da keinen Unterschied gibt, den lpt war urspruenglich nur fuer Ausgabe gedacht und danach mehrfach aufgebohrt.

Die usb zu com adapter funkionieren in der Regel gut und werden angesprochen, wie eine ganz normale serielle Schnittstelle.

twm


Nersgatt - Di 10.03.09 08:10

Ich kann von den USB-COM Adapter auch nur gutes berichten. Bisher hat es immer funktioniert. Sogar ein Adapter, der mit Bluetooth statt Kabel arbeitet hat funktioniert, was mich schon fast gewundert hat. (das sah so aus: Gerät -> COM-Bluetooth-Adapter -> Bluetooth -> Computer).

Gruß,
Jens


mikro1986 - Di 10.03.09 16:31

ok... dann versuche ich mal mein Glück mit der COM-Schnittstelle...
Wie proggt ihr die denn, wenn nicht mit der Inpout32.dll?? Mein Lehrer meinte, das wäre die gängiste variante


JungerIslaender - Di 10.03.09 16:42

Ich könnte sonst noch die verwendung der parallelen Schnittstelle(anschluß f. Drucker) empfehlen. Viele neuere Computer haben diesen noch. Ich selbst habe mir so eine Ansteuerung für einen Roboter gebaut. (Und Roboter natürlich). Für das Problem mit Benutzung unter XP gäbe es dann die io.dll die sehr einfach zubenutzen ist. Einziger nachtteil, ist dass man mit der paralleln Schnittstelle keine Daten empfangen kann da sie nur zur Ausgabe geeignet ist.


dummzeuch - Di 10.03.09 23:31

user profile iconmikro1986 hat folgendes geschrieben Zum zitierten Posting springen:
ok... dann versuche ich mal mein Glück mit der COM-Schnittstelle...
Wie proggt ihr die denn, wenn nicht mit der Inpout32.dll?? Mein Lehrer meinte, das wäre die gängiste variante


Wenn Dein Lehrer das meint... Ich kenne diese dll wie schon gesagt nicht.

Alternativen:
1. Direkt per Windows API -> eher was fuer Masochisten, weil eigentlich erstmal recht einfach, aber viele Kleinigkeiten koennen einem dann spaeter Kopfschmerzen bereiten (Ich spreche aus Erfahrung.)
2. Mit irgendeiner passenden Delphi Komponente, z.B. http://sourceforge.net/projects/comport/ (von der habe ich Gutes gehoert, sie aber selbst noch nicht eingesetzt) oder TSerial (aus der Zeitschrift Toolbox, benutze ich, kann ich aber nur bedingt empfehlen, ich habe mich schon haeufig genug geaergert, dass ich damit angefangen habe).

twm