Forum: PC-Programmierung Virtueller COM Port


von Jan (Gast)


Lesenswert?

Möchte gern Daten über USB von meinem Controller an den PC senden. Der
Controller ist ein Atmel AT90USB1287. Suche jetzt einen Treiber der es
mir ermöglicht einen virtuellen Com Port zu erstellen, damit ich die
Daten über das Terminal ausgeben, oder mit einer MVC C++ Anwendung
auslesenund Verarbeiten kann.
Die MVC Anwendung funktionier schon per serieller Schnittelle. Jetzt
möchte ich die Daten von meinem ersten Controller (Mega128) zum STK525
mit At90USB1287 schicken, der die dann per USB an den PC sendet.

Sagt mir bitte auch falls das so gar nicht geht...
Vielen Dank
Gruß Jan

von Paul Baumann (Gast)


Lesenswert?

Such mal bei Constellation Data System. Da ist ein Programm zu finden,
welches einen virtuellen Com Port emuliert.

MfG Paul

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Wenn Du auf Deinem USB-Controller die Standardgeräteklasse für serielle
Schnittstellen (CDC) emulierst, benötigst Du nur eine *.inf-Datei, und
der mit Windows mitgelieferte Standardtreiber wird verwendet.

Ein Beispiel dafür liefert LPCUSB*, das ist ein USB-Stack für einen
LPC2148.

Zitat:

   On Windows XP, the device uses the built-in usbser.sys
   driver and just needs an .inf file.
   The extra COM port simply shows up as a COMx device.

   On Linux, the USB serial port is handled by the
   cdc_acm module, which causes the serial port to
   show up as /dev/ttyACMx.


Im Zusammenhang mit einem PIC wird das ganze auch erwähnt**:

   Es gibt bei Microchip mehrere Code-Beispiele wie
   man Programme für den PIC schreibt.
   Als HID (Human Interface Device), über eine spezielle
   DLL von Microchip

*  oder als CDC-Device (Communication Device Class).
*  Letzteres habe ich hier benutzt. CDC arbeitet über
*  einen virtuellen COM-Port. Man schreibt seine Programme
*  so als würde man eine serielle Schnittstelle ansprechen.
*  Für CDC ist kein spezieller Treiber erforderlich. Alles
*  läuft über die USBSER.SYS. Die ist bei W98 und höher dabei.
*  Das CDC-Demo von Microchip läuft nur mit W2000/XP.
*  Für W98 gibt es leider keine INF-Datei zum installieren
*  des Treibers bei Microchip.


Dasselbe wird recht ausführlich auch für AT91SAM7X beschrieben***, auch
dort sollte sich eine passende INF-Datei finden lassen.


Also: Implementiere auf dem AT90USB1287 ein CDC-Device, dann benötigst
Du nur noch 'ne *.inf-Datei.


Viel Erfolg!



*) http://wiki.sikken.nl/index.php?title=LPCUSB#USB_serial_port
**) http://www.holger-klabunde.de/usb/18f2550.htm
***)http://www.freertos.org/portsam7xlwIP.html

von Moritz (Gast)


Angehängte Dateien:

Lesenswert?

und wie kann ich in der .inf-Datei dem Gerät einen Virtuellen
(existierenden) COM-Port zuweisen?

Hier mal die .inf-Datei im Anhang

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Was jetzt, virtuell oder existierend?

Die Einstellung, welche Schnittstellennummer die virtuelle
Schnittstelle verpasst bekommt, die wird im Gerätemanager vorgenommen;
sie fest in die *.inf-Datei zu schreiben wäre kontraproduktiv - was
passiert auf einem PC, auf dem die betreffende Nummer bereits durch
irgendwas anderes belegt ist?

von Moritz (Gast)


Lesenswert?

Ok, ich habe mittels IrCOmm2k einen virtuellen COM-Port installiert.
Nun möchte ich dem USB-IrDA Dongle diesen Port zuweisen.
Wie geht das?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

So gar nicht.

Der USB-IrDA-Dongle ist keine serielle Schnittstelle und auch kein
CDC-Device.

Worauf greift denn IrComm2k zu? Verwendet das nicht die vorhandene
Ir-Schnittstelle?

von Moritz (Gast)


Lesenswert?

Das hat mir einfach einen Port installiert. Ich wüsste nicht worauf es
zufreifen sollte.
Dachte ich könnte das mit der VID_xxxx in der .inf-Datei einstellen

von Moritz (Gast)


Lesenswert?

ginge es denn auch ohne das IrCOMM2k Teil?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Moment mal.

  "Das hat mir einfach einen Port installiert.
  Ich wüsste nicht worauf es zufreifen sollte."

IrComm2k ist ein Treiber, der virtuelle serielle Schnittstellen zur
Verfügung stellt. Der Treiber setzt auf der der IrDA-Hardware und dem
IrDA-Stack des Rechners auf.

Was solltest Du da noch einstellen wollen?

Ob "es" auch ohne IrComm2k ginge, hängt davon ab, was "es" ist und
was Du überhaupt erreichen willst.

Was für ein Gerät möchtest Du mit was für einer Software ansprechen?

von Moritz (Gast)


Lesenswert?

Es handelt sich um einen USB-Infrarot Stick.
Ich möchte per PocketPC etwas auf den Rechner schicken.
Ich hab also auf dem PC eine Server-Software und auf dem PocketPC eine
Client Software die mir etwas schickt.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das reicht nicht als Beschreibung aus.

Der auf beiden Geräten vorhandene IrDA-Stack ermöglicht eine
Kommunikation des PCs mit dem PDA und umgekehrt, ohne daß IrComm oder
virtuelle serielle Schnittstellen benutzt werden müssten.

von Moritz (Gast)


Lesenswert?

Aha, und wie nutzt man den IrDA-Stack.
Meines Wissens ist das das Betriebsgeheimnis von M$

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Wer schreibt denn die Software, bzw. wer hat denn die Software
geschrieben, die Du da nutzen willst?

von Moritz (Gast)


Lesenswert?


von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Dein erster Link (http://www.hh-system.com/danielstrigl/irda.shtml)
beschreibt doch ganz gut, wie vorzugehen ist; was aber lässt Dich zu
IrComm2k greifen?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.