mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik virutal com port in target designer?


Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich möchte gern einen virtuellen COM-Port (USB) erstellen auf meinem Xpe 
System. Das Programm für den LPC Prozessor (USB-Schnittstelle) hab ich 
bereits geschrieben für den virtuellen COM-Port.

Wenn ich Xpe starte, wird mir auch der "neue-hardware-found" dialog 
angezeigt, nur weiß ich nicht welche Componente ich im Target Designer 
auswählen muss, damit diese neue Componente auch als virtueller COM-Port 
dargestellt wird?

Muss ich da selbst Hand-anlegen oder gibt es hier ähnlich wie bei dem 
HID einen generic driver? Den USB Composite-Device hab ich bereits zum 
Xpe Image hinzugefügt.

Gruß
Martin

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ...gibt es hier ähnlich wie bei dem HID einen generic driver?
Wenn sich dein Controller gemäß CDC (CommunicationDeviceClass) anmeldet 
sollte es eigentlich gehen... Wie's unter XPe aussieht weiss ich leider 
nicht.

Ralf

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zwar gibt es die Standardgeräteklasse CDC, aber Windows installiert 
dafür nicht automatisch einen generischen Standardtreiber. Aus 
irgendwelchen Gründen ist zwingend eine *.inf-Datei zur Installation 
erforderlich.

Die üblichen USB-Seriell-Bridges aber (FTDI, SiLabs, Prolific oder TI) 
sind allesamt keine CDC-Implementierungen und benötigen daher eigene 
Treiber.

Diese Treiber sind in den Platform Builder als neue, selbst zu 
konstruierende Komponente zu integrieren.

An die genaue Vorgehensweise kann ich mich leider nicht erinnern, es ist 
einfach schon deutlich zu lange her, daß ich das das letzte Mal gemacht 
habe, und das Entwicklungssystem, mit dem ich das damals gemacht habe, 
existiert auch nicht mehr, als daß ich mal eben nachsehen könnte.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich dachte ich hätte gerade was gefunden, aber nach deiner Aussage ist 
diese wieder hinfällig. Hab nur herausgefunden, dass man eine usbser.sys 
im Driver-Verzeichnis benötigt, die bei mir noch fehlt...

Aber wahrscheinlich muss man wie du schon sagst, eine eigene Komponente 
anlegen.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn ich mehrere virtuelle Com-Ports erstellen möchte, benötige ich dann 
für jeden Com-Port eine eigene inf Datei (bezüglich der Vendor und 
Device-ID, welche in der inf stehen muss)?

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Hab nur herausgefunden, dass man eine usbser.sys
>im Driver-Verzeichnis benötigt, die bei mir noch fehlt...

Die hat Windows onboard.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn das unterschiedliche USB-Seriell-Bridges sind, dann ist für jede 
einzelne, die mit einem anderen Treiber kommt, eine Komponente zu 
erstellen.

Wenn Du aber mehrere gleichartige USB-Seriell-Bridges nutzen willst 
(also z.B. vier mal einen FT232), dann genügt eine.

Inf-Dateien sind nur für USB-Seriell-Bridges erforderlich, die die 
Standardgeräteklasse CDC implementieren. Andere benötigen (wie ich 
bereits ausgeführt habe) komplette Treiberpakete, hier ist die zum 
Treiber gehörende Inf-Datei zu verwenden.

Was exakt für eine Art von "virtuellen Com-Port" willst Du denn 
verwenden?

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rufus Τ. Firefly schrieb:
> Was exakt für eine Art von "virtuellen Com-Port" willst Du denn
> verwenden?

Hi Rufus,
als Ziel möchte ich gern 4x virtuelle COM-Ports erstellen die, die vier 
UARTs vom LPC1758 Prozessor mit Daten versorgen. Darüber sollen dann 
später DMX-Daten gesendet werden und auch empfangen werden können.

Bin mir allerdings nicht 100%ig sicher ob die "virtuellen com-ports" 
oder einfach vier HIDs die bessere Wahl dafür sind. Eine inf-Datei mit 
usbser.sys ist ja schnell geschrieben und unter [Devicelist] müsste man 
in der Lage sein, mehrere VID/PIDs anzugeben, falls man irgendwann noch 
eine anderen Device hat der auch einen oder mehrere virtuelle Com-Ports 
darstellen soll.

PC-seitig möchte ich mit c++ auf die Com-Ports oder den HIDs zugreifen 
können - Baudrate etc. einstellen (250kBaud - oder wählt man hier eine 
etwas höhere aus?) sowie Senden und Empfangen von Daten.

Wie aufwendig ist es einen eigenen Treiber zu schreiben und bringt es 
mir in diesem Fall überhaupt irgendwelche Vorteile?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK, wenn Du die CDC-Implementierung selbst in die Hand nimmst, dann ist 
die Inf-Datei die richtige Lösung.

Einer HID-Variante gegenüber hat sie den Vorteil der einfacheren 
Programmierung - das auf dem XPe-System laufende Programm muss nichts 
von USB, HID etc. wissen, sondern nur wissen, wie serielle 
Schnittstellen anzusteuern sind. Die Baudrate dürfte sogar völlig 
irrelevant sein, solange die Daten an tatsächlich virtuelle 
Schnittstellen gesendet werden.

Vergiss den eigenen Treiber, die Treiberentwicklung für Windows ist 
alles andere als mal eben so gemacht. Der Aufwand, sich darin 
einzuarbeiten ist die theoretischen Vorteile, die so etwas einer 
CDC-Lösung gegenüber haben könnte, nicht ansatzweise wert.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rufus Τ. Firefly schrieb:
> Die Baudrate dürfte sogar völlig
> irrelevant sein, solange die Daten an tatsächlich virtuelle
> Schnittstellen gesendet werden.

Weil USB alle x-ms die man einstellt im CDC Treiber nach vorhandenen 
Daten fragt und diese im Fullspeed Modus überträgt?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da muss ich gestehen: Keine Ahnung. Jedoch wird die Baudrate erst beim 
Übergang auf eine real existierende UART o.ä. relevant, und es wäre 
reichlich aufwendig, wenn der Treiber selbst die Baudrate verwendet, um 
timergesteuert mehr oder weniger viel Daten in das USB-Device zu 
übertragen.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Rufus,

weißt du wie es möglich ist, dass ein LPC mehr als einen virtuellen 
Com-Port installiert? Ist das überhaupt möglich? Hab mal ein zweites 
Interface (Descriptor) und zwei weitere Endpoints hinzugefügt -> 
Resultat war, dass das Gerät einen blauen Windows-Screen angezeigt hat 
(schwerer Ausnahmefehler)...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.