Forum: PC Hard- und Software COM-Schnittstelle, COM PORT,


von chaqy B. (bigchaq)


Lesenswert?

Hallo zusammen,
nach einer verzweifelte Suche im Web, dachte ich mir ich stelle mal die 
Frage hier. es kann für viele von euch eine banale Sache sein aber ich 
kann keine vernünftige Informationen im Netzt finden.
Es geht um COM-Schnittstelle. ich weiss bereit dass es um die serielle 
Schnittstelle RS232 handelt. Was mich aber durcheinander bringt ist der 
Zusammenhang zwischen: COM-Ports, USB und die COM Schnittstelle.
Hier ist mein Problem:
Mein PC hat nur eine Physikalische COM-Schnittstelle. Aber über die 
angeschlossene Geräte melden sich jeweils an COM1, COM2... selbst wenn 
die über USB angeschlossen sind. wie ist geht das denn? was sind die 
COM1 bzw COM2? ist es eine reine virtuelle Geschichte? Kann man das 
beeinflussen oder ist es eine Sache vom Betriebssystem oder vom 
USB-Host?wie kann ich rausfinden über welchem COM sind ein Device 
meldet?

Ich bedanke mich bei euch und freue mich auf jede Erklärung

von Εrnst B. (ernst)


Lesenswert?

"COM Port" ist die Hardware, "RS232" das Übertragungsverfahren, und "COM 
Device" bzw COM1 ..COM4 ist der Name, den DOS damals an die einzelnen 
Schnittstellen vergeben hat, das wurde seitdem beibehalten. (Nur 
irgendwann auf COM-Port-Nummern > 9 erweitert,  '\\.\COM42' oder so...)

USB hat damit garnichts zu tun, ausser: Es gibt Geräte, die mit Hilfe 
des Betriebsystems vorgaukeln, sie wären an einem COM-Port 
angeschlossen, obwohl sie das nicht sind, und der PC evtl so einen 
garnichtmehr besitzt.
Solche Geräte sind oft, aber nicht zwingend, per USB verbunden.


Herausfinden, welches Gerät welche Port-Nummer erhalten hat, kann man 
wohl mit Registry-Suchereien oder so. Da frag aber besser einen 
Windows-Profi.

: Bearbeitet durch User
von Icke ®. (49636b65)


Lesenswert?

Εrnst B✶ schrieb:
> erausfinden, welches Gerät welche Port-Nummer erhalten hat, kann man
> wohl mit Registry-Suchereien

Einfacher über den Gerätemanager. Dort kann man die Zuordnungen auch 
ändern, wenn es sein muß.

von chaqy B. (bigchaq)


Lesenswert?

Zuerst vielen Dank für die schnelle Antworte.
also nur um sicher zu gehen dass ich richtig verstanden habe:
"COM PORT" ist die Hardware Schnittstelle. und COM1 bis COMx sind 
jeweils die Namen der einzelnen Ports, also Anschlüsse.
Ich weiß schon dass USB nichts mit COM zutun hat, aber es kommt schon 
vor, wie du gesagt hast, dass einige Geräte, obwohl die übe USB 
angeschlossen sind,sich von einem COMx Port anmelden. Wie ist das 
Möglich? ist es also ein reines Virtuelles Port? denn auf dieser Art 
kann ich mir schon vorstellen dass ihre Anzahl beliebig erweiterbar ist. 
Außerdem zeigt manchmal der Geräte Manager COM1 bis COMx obwohl es nur 
eine einzige Hardware-Schnittstelle gibt. Oder irre ich mich gerade ??
Das mit dem Geräte Manager werde ich probieren.
Vielen Dank noch mal

von Εrnst B. (ernst)


Lesenswert?

chaqy Bruno schrieb:
> Wie ist das
> Möglich?

Ganz einfach:
Programm sagt: ich will auf COM2 zugreifen.
Betriebsystem sagt: COM2 ist ein echter Comport, ich benutze meinen 
default-Treiber.
Oder:
Betriebssystem sagt: COM2 gehört einem USB-ACM Gerät, ich benutze 
usbser.sys
Oder:
Betriebssystem sagt: COM2 gehört einem FTDI, Prolific, XXX, YYY, ZZZ 
Gerät, ich benutze den Treiber, der dazu installiert wurde.

von chaqy B. (bigchaq)


Lesenswert?

Aha, Es wird nicht nur vom Betriebssystem zugewiesen, sondern die Geräte 
selbst können einen bestimmten Port über ihren Treiber wählen. Dann je 
nach der Art des gewählten Port reagiert der Betriebssystem auf die 
Anfrage mit der Wahl des jeweiligen Schnittstellentreiber.

jetzt habe ich es verstanden Danke,

von Icke ®. (49636b65)


Lesenswert?

chaqy Bruno schrieb:
> COM1 bis COMx sind
> jeweils die Namen der einzelnen Ports, also Anschlüsse.

Genauer ausgedrückt sind es die Namen der Softwareschnittstellen, unter 
denen Programme das Betriebssystem ansprechen können, um serielle 
Datenkommunikation zu starten. Dem Programm kann es dabei völlig egal 
sein, welche Art von Hardware dahinter steckt (bzw. es weiß davon gar 
nix), denn darum kümmern sich OS und Devicetreiber.

> Außerdem zeigt manchmal der Geräte Manager COM1 bis COMx obwohl es nur
> eine einzige Hardware-Schnittstelle gibt.

Da COMx nur Softwareschnittstellen sind, muß nicht unbedingt auch ein 
Gerät dahinter stecken. Das Programm bekommt in dem Falle einfach einen 
Fehler á la "Gerät nicht vorhanden oder nicht bereit" zurückgemeldet.

von Icke ®. (49636b65)


Lesenswert?

chaqy Bruno schrieb:
> sondern die Geräte
> selbst können einen bestimmten Port über ihren Treiber wählen

Nein. Welche COMx dem Gerät (Hardware) zugewiesen wird, legt das 
Betriebssystem fest. Unter Windows kann man die Zuordnungen auch manuell 
ändern, wenn z.B. die Software nur COM1 bis COM4 erlaubt, das Device 
aber bspw. auf COM9 liegt (die entsprechende COM darf natürlich nicht 
schon von anderer Hardware belegt sein).

von chaqy B. (bigchaq)


Lesenswert?

Das gibt auch Sinn. Denn die Schnittstellen sind ja da um den 
Datenaustausch zu ermöglichen egal was das für Geräte sind solang das 
Abkommen "Schnittstellen-Definition" respektiert wird.
Bei mir war das Problem dass ich nicht wusste was ich von allen diesen 
Begriffe an HW bzw SW  zuordnen sollte. Ich dachte nämlich die COM-Ports 
sind genau "und genau nur " die RS-232 HW Schnittstellen 
"HW-Anschlüsse". Das heißt es müsste also nur COM1 geben wenn es nur 
eine HW-Schnittstelle gibt. Und das hat mich verwirrt!!
Du bist mein Held ;-) danke dir noch mal

von Icke ®. (49636b65)


Lesenswert?

chaqy Bruno schrieb:
> Denn die Schnittstellen sind ja da um den
> Datenaustausch zu ermöglichen egal was das für Geräte sind solang das
> Abkommen "Schnittstellen-Definition" respektiert wird

So ist es.

> Ich dachte nämlich die COM-Ports
> sind genau "und genau nur " die RS-232 HW Schnittstellen
> "HW-Anschlüsse".

Die Verwirrung kommt möglicherweise daher, daß früher, als die PCs noch 
in ISA-Architektur aufgebaut waren und es weder USB noch virtuelle 
Geräte gab, hinter einer COM-Schnittstelle i.d.R. auch immer 
RS232-Hardware steckte. Wenn da jemand COM sagte, meinte er damit die 
physische serielle Schnittstelle. Obwohl DOS bereits entsprechende 
Softwareschnittstellen (DOS-Interrupts genannt) besaß, umgingen 
"findige" Programmierer diese und sprachen die Hardware direkt über die 
zugehörigen I/O-Ports an, um ein paar der wertvollen CPU-Takte zu 
sparen, Das hat seinerzeit funktioniert, weil nur ein einziger Task lief 
und somit keine Konflikte auftraten. Heute geht das nicht mehr, da 
direkte Hardwarezugriffe aus gutem Grund vom Betriebssystem unterbunden 
werden und somit die "findig" programmierten Anwendungen nicht laufen.

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.