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
"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.
Ε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ß.
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
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.
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,
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.
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).
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
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.