Adresse(n) der seriellen Schnittstelle lesen



  • Hallo,

    wie lässt sich die Adresse einer Schnittstelle aus dem System auslesen? Die eigentliche Datenübertragung mache ich wie in dem Beispiel in der FAQ. Da dort nur der Com-Port als Nummer angegeben wird muss das ja irgendwie möglich sein...aber wie?

    Danke und Grüße,
    Jochen



  • Wozu brauchst _DU_ die Adresse? COM1..COMn reicht doch völlig? Und das lässt sich mit EnumPorts oder sowas (API-Funktion) wunderschön aus nivilieren...

    Und als weitere Frage stellt sich mir: Wie kommst du auf die Idee, dass die VCL eine derart betriebssystemabhängige und spezielle Funktion bietet? WinAPI oder Linux API wäre da wohl schon angebrachter.



  • Hi

    junix schrieb:

    Wozu brauchst _DU_ die Adresse? COM1..COMn reicht doch völlig?

    weil ich einen direkten (Lese)zugriff auf die Register des UART brauche, und somit die Adresse der Schnittstelle als Basisadresse benötige. Natürlich ist in >99% aller Fälle die Adresse für Com1 0x3f8. Aber eben nicht immer. Der eigentliche Zugriff ist kein Problem, wenn ich nur weiss wo.

    Und als weitere Frage stellt sich mir: Wie kommst du auf die Idee, dass die VCL eine derart betriebssystemabhängige und spezielle Funktion bietet? WinAPI oder Linux API wäre da wohl schon angebrachter.

    Nun, da die VCL nun mal im ersten Moment meine momentane Entwicklungsumgebung ist habe ich die Frage mal hier gestellt. Ich denke nicht dass eine Anfrage in mehreren Foren gleichzeitig gut ankommt 😉
    Wenn Du mir jedoch eine Lösung mit WinAPI anbieten kannst stelle ich meine Frage im entsprechendem Forum...

    Grüße,
    Jochen



  • JoKo schrieb:

    Hi

    junix schrieb:

    Wozu brauchst _DU_ die Adresse? COM1..COMn reicht doch völlig?

    weil ich einen direkten (Lese)zugriff auf die Register des UART brauche,

    Ich frage gern nochmals: Wozu? Damit handelst du dir höchstens Kompatibilitätsprobleme ein... Im Zuge von "Wir wollen sicherheit, finden die Ursachen aber nicht, unterbinden deshalb die symptome" dürfte es vermutlich bald immer schwieriger werden um die OS-API herumzuarbeiten...

    JoKo schrieb:

    Nun, da die VCL nun mal im ersten Moment meine momentane Entwicklungsumgebung ist habe ich die Frage mal hier gestellt. Ich denke nicht dass eine Anfrage in mehreren Foren gleichzeitig gut ankommt 😉

    Da hast du natürlich recht. Trotzdem solltest du dir bewusst sein, dass solche Spezialitäten eher der OS API vorbehalten sind. Ich schieb dich mal entsprechend weiter.

    Trotzdem würde mich interessieren wozu du direkten Zugriff auf die UART Register brauchst. Idr lässt sich alles durch den üblichen COM-Treiber managen...

    -junix



  • Dieser Thread wurde von Moderator/in junix aus dem Forum Borland C++ Builder (VCL/CLX) in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Hi,

    junix schrieb:

    Ich frage gern nochmals: Wozu? Damit handelst du dir höchstens Kompatibilitätsprobleme ein... Im Zuge von "Wir wollen sicherheit, finden die Ursachen aber nicht, unterbinden deshalb die symptome" dürfte es vermutlich bald immer schwieriger werden um die OS-API herumzuarbeiten...
    .....
    Trotzdem würde mich interessieren wozu du direkten Zugriff auf die UART Register brauchst. Idr lässt sich alles durch den üblichen COM-Treiber managen...

    Die üblichen Com-Treiber lassen nur das übliche automatisierte Handling mit oder ohne Handshake zu. Wenn ich jedoch gezielt z.B. das Set Break-Bit im LCR bedienen will, versagen diese Treiber jämmerlich. Wenn ich wie in meinem Fall eine normale Datenübertragung ohne Handshake und zusätzlich die Handshakeleitungen zu Steuerzwecken missbrauche sehe ich keine andere Möglichkeit als direkt auf die Register zuzugreifen.

    Grüße,
    Jochen



  • ääh stop mal "Set-Break-Bit"? Hilf mir mal schnell über die Strasse... Das wäre doch der Zustand wenn die Tx-Leitung der COM-Schnittstelle auf 0 gezogen wird oder?

    -junix



  • Ja, genau das.

    Jochen



  • [msdn]SetCommBreak[/msdn] ist da dein Freund (o; Hatte auch ne Weile zu suchen als ich nach ner möglichkeit suchte nen LIN Master über die PC Schnittstelle zu bauen...

    -junix



  • Ok, das erledigt das Problem mit dem Set Break...aber leider noch nicht mit den Handshakeleitungen....

    Jochen



  • Es gibt da noch wesentlich mehr Funktionen mit denen du auch DTR etc setzen kannst...

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/devio/base/communications_reference.asp

    -junix



  • junix schrieb:

    Es gibt da noch wesentlich mehr Funktionen mit denen du auch DTR etc setzen kannst...
    -junix

    ähm, und wie? Das sind dieselben Funktionen die auch in der Borland Hilfe aufgeführt sind. Und so wie ich das verstehe kann ich da DTR usw. nicht gezielt setzen, sondern lediglich die Unterstützung des Handshakes aktivieren....oder bin ich blind und habe etwas übersehen?

    Jochen



  • Schau dir mal die Funktionen an welche da im aufgeführten Link gelistet sind. EscapeCommFunction ist z.B. eine gute Adresse (o;

    -junix



  • AAAAHH ... und ich war doch blind, Danke! 🙂

    Jochen


Log in to reply