Discussion:
USB mittels COM-Befehlen programmieren
(zu alt für eine Antwort)
Wolfgang Weinmann
2007-03-17 20:44:29 UTC
Permalink
Hallo,

ich will auf mögl. eínfache Art und Weise eine Verbindung vom PC zu
einer seriellen Schnittstelle eines Controllers realisieren. Ich habe
mir dabei folgendes vorgestellt:
Für Delphi habe ich eine Komponente, mit der unter Windows auf die
ser. Schnittstelle zugegriffen werden kann. Ich habe mitbekommen, daß
es sowas wie einen virtuellen COM-Port gibt, wo ich unter Delphi die
serielle Schnittstelle anspreche und dieser Treiber das für den USB
umsetzt. Hardwaremäßig bräuchte ich dann noch einen Konverter an dem
USB, der dann den USB-BUs in seriell wandelt. Den könnte man ja auch
fertig kaufen.

Wer kann mir einen Link nennen, wo ich mich über das Thema virtuellen
Com Port informieren kann, oder eine komplette Lösung der Kette
virtueller Com-Port/HW-Umsetzung USB-Seriell aufgezeigt wird?

Gruß

Wolfgang Weinmann
--
www.ibweinmann.de
Brushless Motor Control
Thomas Graf
2007-03-17 20:55:10 UTC
Permalink
Hi,
Post by Wolfgang Weinmann
Für Delphi habe ich eine Komponente, mit der unter Windows auf die
ser. Schnittstelle zugegriffen werden kann. Ich habe mitbekommen, daß
http://www.torry.ru/ da gibts die Komponente TComPort. Funktioniert sehr
schön. Dann noch einen FTDI-Chip und fertig...

ciao - Thomas
Andreas Koch
2007-03-17 20:55:30 UTC
Permalink
Post by Wolfgang Weinmann
Für Delphi habe ich eine Komponente, mit der unter Windows auf die
ser. Schnittstelle zugegriffen werden kann.
Wunderbar.
Post by Wolfgang Weinmann
Wer kann mir einen Link nennen, wo ich mich über das Thema virtuellen
Com Port informieren kann, oder eine komplette Lösung der Kette
virtueller Com-Port/HW-Umsetzung USB-Seriell aufgezeigt wird?
USB-RS232 Adapter kaufen, Treiber installieren, den erzeugten
COM-Port in deiner Komponente verwenden, fertig.
Jan Stumpf
2007-03-17 21:00:52 UTC
Permalink
Hi!
Post by Wolfgang Weinmann
Wer kann mir einen Link nennen, wo ich mich über das Thema virtuellen
Com Port informieren kann, oder eine komplette Lösung der Kette
virtueller Com-Port/HW-Umsetzung USB-Seriell aufgezeigt wird?
FT232R -> www.ftdichip.com

mfg
Jan
Marte Schwarz
2007-03-17 23:23:22 UTC
Permalink
Hallo Wolfgang,
Post by Wolfgang Weinmann
ich will auf mögl. eínfache Art und Weise eine Verbindung vom PC zu
einer seriellen Schnittstelle eines Controllers realisieren. Ich habe
Für Delphi habe ich eine Komponente, mit der unter Windows auf die
ser. Schnittstelle zugegriffen werden kann. Ich habe mitbekommen, daß
es sowas wie einen virtuellen COM-Port gibt, wo ich unter Delphi die
serielle Schnittstelle anspreche und dieser Treiber das für den USB
umsetzt. Hardwaremäßig bräuchte ich dann noch einen Konverter an dem
USB, der dann den USB-BUs in seriell wandelt. Den könnte man ja auch
fertig kaufen.
Genau so mach ich das auch. klappt sogar mit bitmanipulationen auf den
einzelnen Leitungen. Nur das eben mit den USB-typischen Zeiten. Unter ein
paar ms sollte man da nicht zugreifen wollen. Neuerdings haben wir ein paar
Problemchen mit USB-Seriell-Wandler mit dem ark3116 Chip. Da scheinen die
Treiber für Windoof nicht so stabil zu sein. Wenn alles nach Plan klappt
geht alles, aber wehe man schließt z.B. Hyperterm, solange noch Daten vom µC
gesendet werden, dann ist ein kompletter Neustart von Windoof fällig, vorher
geht mit der Schnittstelle nichts mehr. Mit den Prolific-Chips gabs keine
Probleme, obwohl die IMHO vom Chip selbst identisch sein sollten. Also
aufgepasst und gut getestet!

Marte
Andreas Ruetten
2007-03-18 11:56:18 UTC
Permalink
Post by Wolfgang Weinmann
Hallo,
ich will auf mögl. eínfache Art und Weise eine Verbindung vom PC zu
einer seriellen Schnittstelle eines Controllers realisieren. Ich habe
Für Delphi habe ich eine Komponente, mit der unter Windows auf die
ser. Schnittstelle zugegriffen werden kann. Ich habe mitbekommen, daß
es sowas wie einen virtuellen COM-Port gibt, wo ich unter Delphi die
serielle Schnittstelle anspreche und dieser Treiber das für den USB
umsetzt. Hardwaremäßig bräuchte ich dann noch einen Konverter an dem
USB, der dann den USB-BUs in seriell wandelt. Den könnte man ja auch
fertig kaufen.
Das ist keine gute Idee.
Wie kommt dein Programm mit welche Schnittstelle der Comportredirector
vergeben hat?
Von Hand eingeben?
Was ist wenn der Benutzer für irgendwas ein gleichen USB Wandler verwendet?

Warum nimmst du nicht einfach die fertigen Treiber von FTDI oder Silabs,
bindest das in dein Programm ein und gut ist.
Ich glaube FTDI haben auch was für Delphi.

Alles andere ist üble Bastelei, die man keinen Kunden zumuten kann.
Es sei denn du brauchst das nur für dich, aber das schrubst da ja nicht.
Post by Wolfgang Weinmann
Wer kann mir einen Link nennen, wo ich mich über das Thema virtuellen
Com Port informieren kann, oder eine komplette Lösung der Kette
virtueller Com-Port/HW-Umsetzung USB-Seriell aufgezeigt wird?
http://www.ftdichip.com/

http://www.silabs.com
Wolfgang Weinmann
2007-03-23 22:26:03 UTC
Permalink
Post by Andreas Ruetten
Das ist keine gute Idee.
Wie kommt dein Programm mit welche Schnittstelle der Comportredirector
vergeben hat?
Von Hand eingeben?
Was ist wenn der Benutzer für irgendwas ein gleichen USB Wandler verwendet?
Warum nimmst du nicht einfach die fertigen Treiber von FTDI oder Silabs,
bindest das in dein Programm ein und gut ist.
Ich glaube FTDI haben auch was für Delphi.
1) Und was ist der Unterschied zwischen dem FTDI Treiber und einem
virtuellen COMport Treiber?
2) Funktioniert eine FTDI-Lösung auch mit einem USB/RS232-Konverter
aus einem Elektronikmarkt?

Gruß

Wolfgang
Henning Paul
2007-03-24 09:33:06 UTC
Permalink
Post by Wolfgang Weinmann
Post by Andreas Ruetten
Warum nimmst du nicht einfach die fertigen Treiber von FTDI oder
Silabs, bindest das in dein Programm ein und gut ist.
Ich glaube FTDI haben auch was für Delphi.
1) Und was ist der Unterschied zwischen dem FTDI Treiber und einem
virtuellen COMport Treiber?
2) Funktioniert eine FTDI-Lösung auch mit einem USB/RS232-Konverter
aus einem Elektronikmarkt?
Zur Klarstellung: FTDI ist ein Hersteller von
USB/RS232-Konverterbausteinen, früher bekam man mit diesem Baustein
aufgebaute Konverterdongle auch im Elektronikmarkt, allerdings sind die
dort mittlerweile von Prolific-Chips verdrängt worden.

FTDI-Chips erfreuen sich allerdings weiterhin bei Leuten großer
Beliebtheit, die die USB-Seriell-Konvertierung direkt in ihr Gerät
einbauen wollen, weil die Bausteine leicht (z.B. bei Reichelt)
erhältlich sind.

Neben dem FT232, einem reinrassigen USB-Seriell-Konverter, gibt es auch
noch den FT245, der sich dem PC gegenüber auch als serieller Port
vorstellt, in Wirklichkeit aber über eine parallele Busschnittstelle
verfügt.

Für die FTDI-Bausteine gibt es einerseits herkömmliche VCP-(Virtual Com
Port)-Treiber, die sich wie eine normale serielle Schnittstelle
ansprechen lassen, andererseits aber auch spezielle Treiber, die
bestimmte Vorteile bieten (v.a. beim FT245), deren
Programmierschnittstelle aber auch dokumentiert ist.

Alles klar?

Gruß
Henning
--
henning paul home: http://home.arcor.de/henning.paul
PM: ***@gmx.de , ICQ: 111044613
Wolfgang Weinmann
2007-03-24 10:00:45 UTC
Permalink
Post by Henning Paul
Alles klar?
So ganz raff ich das nicht.
Was ich gedacht habe:
Ein VCP ist ein Treiber, der es softwaretechnisch ermöglicht eine
"normalen" seriellen Port zu programmieren und der den realen USB-Port
am PC ansteuert. Auch beim Datenempfang habe ich im PC scheinbar einen
COM-Port - in Wirklichkeit hat der VCP-Treiber den Dateneingang am USB
auf einen scheinnbaren COM-Port umgesetzt.

Das dachte ich.

Das hätte aber zunächst gar nichts mit einem FTDI-USB-USART
Konverterchip zu tun. (Natürlich kann der an den USB angeschlossen
werden und ich kann dann ein Gerät mit USART somit am PC mit USB
betreiben)

Aber wenn ich mich bei FTDI usw. durchlese, habe ich immer den
Eindruck der Treiber hat was mit dem Chip zu tun. Also hört der
Treiber nicht an dem USB-Port auf und interessiert sich nicht, was
daran angeklemmt ist, sondern er kommuniziert mit dem USB-USART
Konverter.

Uns wenn das so ist, dann vermute ich mal, brauche ich immer einen
bestimmten Treiber für einen bestimmten Konverter ....

Reime ich mir das richtig zusammen?

Gruß

Wolfgang
Andreas Koch
2007-03-24 10:29:03 UTC
Permalink
Post by Wolfgang Weinmann
Uns wenn das so ist, dann vermute ich mal, brauche ich immer einen
bestimmten Treiber für einen bestimmten Konverter ....
Reime ich mir das richtig zusammen?
Ja.
Genauso wie du verschiedene Treiber für verschiedene USB-Drucker
(USB-Papier-Konverter) brauchst du verschiedene Treiber für
verschiedene USB-RS232-Konverter.

Auf der Applikationsseite kannst du den USB-Papier-Konverter und
den USB-RS232-Konverter dann unabhängig vom Treiber immer auf
die gleiche Art ansprechen (als Printer- oder COM-Gerät)


Es ist also wichtig, ob du

a) selbst ein Gerät bauen willst das
nach außen USB anbietet aber im innern den Controller mit RS232
ansteuert (was Andreas R. wohl vermutet hat) oder

b) ein Gerät bauen willst das nach außen RS232 anbietet und über einen
Elektromarkt-Adapter an USB angeschlossen werden soll (was ich vermute ;-) )
In letztem Fall installiert der Anwender den Treiber des
Elektromarkt-Adapters und hat dann einen "normalen" COM Port
den deine Anwendung wie gewohnt verwenden kann.
Wolfgang Weinmann
2007-03-24 10:41:28 UTC
Permalink
Post by Andreas Koch
Es ist also wichtig, ob du
a) selbst ein Gerät bauen willst das
nach außen USB anbietet aber im innern den Controller mit RS232
ansteuert (was Andreas R. wohl vermutet hat) oder
b) ein Gerät bauen willst das nach außen RS232 anbietet und über einen
Elektromarkt-Adapter an USB angeschlossen werden soll (was ich vermute ;-) )
In letztem Fall installiert der Anwender den Treiber des
Elektromarkt-Adapters und hat dann einen "normalen" COM Port
den deine Anwendung wie gewohnt verwenden kann.
Also ich denke es ist der Fall B:

Ich möchte einen Mikrocontroller mit USART an den PC anschließen. Da
die serielle Schnittstelle am PC eher verschwindet und ich aber kein
großartiger Windows und USB Programmierer bin und ich froh bin, wenn
ich mir für die Applikation eine Delphi Oberfläche zusammengeklickt
bekomme, suchte ich eine für mich möglichste Variante:

PC-Oberfläche unter Delphi, Kommunikation nach außen mit VCP, USB/RS
Umsetzer am USB und dort an RS-Seite wieder der Mikrocontroller.

Somit habe ich unter Delphi "nur" einen COM-Port anzusprechen und
denke, daß das der einfachste Weg ist.

Gruß

Wolfgang
Gernot Fink
2007-03-24 12:29:27 UTC
Permalink
Post by Wolfgang Weinmann
Post by Andreas Koch
Es ist also wichtig, ob du
a) selbst ein Gerät bauen willst das
nach außen USB anbietet aber im innern den Controller mit RS232
ansteuert (was Andreas R. wohl vermutet hat) oder
b) ein Gerät bauen willst das nach außen RS232 anbietet und über einen
Elektromarkt-Adapter an USB angeschlossen werden soll (was ich vermute ;-) )
In letztem Fall installiert der Anwender den Treiber des
Elektromarkt-Adapters und hat dann einen "normalen" COM Port
den deine Anwendung wie gewohnt verwenden kann.
Ich möchte einen Mikrocontroller mit USART an den PC anschließen. Da
die serielle Schnittstelle am PC eher verschwindet und ich aber kein
großartiger Windows und USB Programmierer bin und ich froh bin, wenn
ich mir für die Applikation eine Delphi Oberfläche zusammengeklickt
PC-Oberfläche unter Delphi, Kommunikation nach außen mit VCP, USB/RS
Umsetzer am USB und dort an RS-Seite wieder der Mikrocontroller.
Somit habe ich unter Delphi "nur" einen COM-Port anzusprechen und
denke, daß das der einfachste Weg ist.
Das ist bei A und B gleich.

Der unterschied zwischen A und B ist ob dein selbstgebasteltes Gerät eine
USB oder eine RS23-buchse hat. Softwaretechnisch am PC kannst du beide fälle
gleich behandeln.
--
MFG Gernot
Andreas Koch
2007-03-24 15:17:54 UTC
Permalink
Post by Gernot Fink
Post by Andreas Koch
a) selbst ein Gerät bauen willst das
nach außen USB anbietet aber im innern den Controller mit RS232
ansteuert (was Andreas R. wohl vermutet hat) oder
b) ein Gerät bauen willst das nach außen RS232 anbietet und über einen
Elektromarkt-Adapter an USB angeschlossen werden soll (was ich vermute ;-) )
In letztem Fall installiert der Anwender den Treiber des
Elektromarkt-Adapters und hat dann einen "normalen" COM Port
den deine Anwendung wie gewohnt verwenden kann.
Das ist bei A und B gleich.
Der unterschied zwischen A und B ist ob dein selbstgebasteltes Gerät eine
USB oder eine RS23-buchse hat. Softwaretechnisch am PC kannst du beide fälle
gleich behandeln.
Aber für A muss er selbst einen passenden Treiber (des Herstellers des
Konverterchips) mitliefern und installieren lassen, bei B fällt es in
den Verantwortungsbereich des Users ob/wie er einen COM-Port bereit
stellt :-)
Jürgen Appel
2007-03-25 02:08:23 UTC
Permalink
Post by Andreas Koch
Aber für A muss er selbst einen passenden Treiber (des Herstellers des
Konverterchips) mitliefern und installieren lassen, bei B fällt es in
den Verantwortungsbereich des Users ob/wie er einen COM-Port bereit
stellt :-)
Der Com-Port-Treiber für die ftdi-Chips ist bei den meisten aktuellen
Betriebssystemen schon dabei: Unter Linux garantiert und unter Windows XP
AFAIK auch. Falls nicht, wird er sicher bei der Erkennung neuer Hardware
(USB-Seriell-Konverter gefunden) nach Anfrage aus dem Web nachgeladen.

Die Beschaltung ist supersimpel (Die Bausteine werden direkt
aneinandergeklatscht), und wenn man den Microprozessor mit dem vom FTDI
ausgegebenen Takt (z.B. 12MHz) taktet, entfällt auch der Quarz.

Für FTDI-232RL und ATMEGA8 kann ich gerne auch einen Schaltplan mailen.

Gruß,
Jürgen
--
GPG key:
http://pgp.mit.edu:11371/pks/lookup?search=J%FCrgen+Appel&op=get
Wolfgang Weinmann
2007-03-25 15:34:38 UTC
Permalink
Post by Andreas Koch
Es ist also wichtig, ob du
a) selbst ein Gerät bauen willst das
nach außen USB anbietet aber im innern den Controller mit RS232
ansteuert (was Andreas R. wohl vermutet hat) oder
b) ein Gerät bauen willst das nach außen RS232 anbietet und über einen
Elektromarkt-Adapter an USB angeschlossen werden soll (was ich vermute ;-) )
In letztem Fall installiert der Anwender den Treiber des
Elektromarkt-Adapters und hat dann einen "normalen" COM Port
den deine Anwendung wie gewohnt verwenden kann.
Es ist der Fall b). Wenn ich das richtig verstehe, programmiere ich
zunächst auf dem PC eine serielle Schnittstelle. Der Treiber tritt zu
dem Zeitpunkt noch nicht auf den Plan. Ich kann das Programm auch
übersetzen und auch betreiben, wenn ich solch einen VCP-Treiber
installiert habe.

Wenn ich meine Mikrocontrollerschaltung an den Kunden ausliefere
bekommt er doch das PC-Programm und sonst nichts. Der Kunde kann dann
den Treiber, den er für seinen USB-RS232 Konverter benötigt
installieren und somit mit meinem PC-Programm, seinem Treiber und
seinem Konverter auf meine Mikrocontrollerschaltung mit USART
zugreifen.
Sagt jetzt bitte ja ....

Gruß

Wolfgang
Andreas Koch
2007-03-25 15:51:43 UTC
Permalink
Post by Wolfgang Weinmann
Wenn ich meine Mikrocontrollerschaltung an den Kunden ausliefere
bekommt er doch das PC-Programm und sonst nichts. Der Kunde kann dann
den Treiber, den er für seinen USB-RS232 Konverter benötigt
installieren und somit mit meinem PC-Programm, seinem Treiber und
seinem Konverter auf meine Mikrocontrollerschaltung mit USART
zugreifen.
Sagt jetzt bitte ja ....
Ja, sag' ich doch :-)
Du baust ein RS232-Gerät und ob der Kunde einen normalen oder einen
USB-RS232-Port hat betrifft nur den Kunden und nicht dein Programm.

(Auch wenns oben schon erwähnt wurde sag ichs sicherheitshalber
nochmal: Das trifft nur zu solange es um normalen Datentransfer
über die beiden Datenleitungen geht. Für rumspielen an den
Steuerleitungen mit irgendwelchen genauen Timings sind USB-Ports
unbrauchbar)

Metabastler
2007-03-18 12:10:40 UTC
Permalink
lantronix ?
Andreas Ruetten
2007-03-18 12:33:21 UTC
Permalink
Post by Metabastler
lantronix ?
oder besser Tomatensalat?
Kai Ebersbach
2007-03-18 17:50:46 UTC
Permalink
Moin Wolfgang,
Post by Wolfgang Weinmann
ich will auf mögl. eínfache Art und Weise eine Verbindung vom PC zu
einer seriellen Schnittstelle eines Controllers realisieren. Ich habe
Für Delphi habe ich eine Komponente, mit der unter Windows auf die
ser. Schnittstelle zugegriffen werden kann. Ich habe mitbekommen, daß
es sowas wie einen virtuellen COM-Port gibt, wo ich unter Delphi die
serielle Schnittstelle anspreche und dieser Treiber das für den USB
umsetzt. Hardwaremäßig bräuchte ich dann noch einen Konverter an dem
USB, der dann den USB-BUs in seriell wandelt. Den könnte man ja auch
fertig kaufen.
Ich habe so etwas mal mittels Handykabel gemacht. Zum Beispiel USB-Kabel
für Siemens SL-45 (Nokia geht aber auch bei bestimmten Typen, musst halt
nur darauf achten, dass der Wandler im Stecker oder im Kabel ist) von
ebay für ca. 3-4 Euronen samt Treiber-CD. Im USB-Stecker ist der Wandler
schon drin, beim Einstöpseln wird der Treiber angefordert und ein
virtueller COM-Port angelegt, den man dann wie einen normalen COM-Port
ansprechen kann (ich hab es mit Profan² gemacht www.profan.de, mit
Delphi sollte es ebenso einfach gehen).

TX vom USB-Kabel habe ich dann einfach mit RXD des Controllers
verbunden. Die Anschlussbelegung muss man halt selbst rausfinden, da sie
immer anders ist. Den Handystecker kann man ja abschneiden und durch
einen eigenen ersetzen oder halt das Kabel direkt am Gerät anbringen.
Ich empfehle, darauf zu achten, dass das Kabel abgeschirmt ist (können
die meisten ebay-Höker allerdings selten vorweg zusichern). Mit jeder
Lieferung bekommt man u.U. auch ein anderes Kabel, obwohl fürs gleiche
Handy. Ein weiteres "Problem" ist halt, dass verschiedene Kabel
eventuell auch verscheidene Treiber benötigen. Bei einer
Großserienfertigung kann es hier Nachschubprobleme geben. Einfach ist es
jedenfalls und als Bastellösung sehr günstig.

HTH + Grüße

Kai
--
Die Mailadresse wechselt jedes Quartal nach
dem Muster usenet-QQ-***@kai-ebersbach.de
Lesen Sie weiter auf narkive:
Suchergebnisse für 'USB mittels COM-Befehlen programmieren' (Fragen und Antworten)
13
Antworten
LINUX bessere Alternative zu VISTA?
gestartet 2007-12-05 02:55:36 UTC
software
Loading...