Wie TX der RS232 dauerhaft einschalten



  • Wenn ich while(1) pComPort->WriteSingle(0x0);
    schreibe ist TXD=ON, aber der Rechner natürlich blockiert.

    EscapeCommFunction(COMDEV(TTYInfo), SETBREAK);
    Funktioniert nicht.
    Wie kann ich den TX-Pin in Visual Stdudio 98 dauerhaft ansteuern?


  • |  Mod

    @behelfsemail sagte in Wie TX der RS232 dauerhaft einschalten:

    TXD=ON

    Falscher Weg. SetCommBreak und ClearCommBreak wären die Methoden der Wahl.

    https://stackoverflow.com/questions/8535017/manual-control-of-serial-port-pins-txd-and-rxd

    Die Frage wann Du das machen möchtest ist was anderes. Setze einen Timer oder ruf die Funktionen regelmäßig auf... evtl. lager das in einen anderen Thread aus, aber mach Dir bitte Gedanken was es bedeutet wenn Du die ganze Zeit Statements ausführst...



  • Wollte eigentlich gar nichts regelmäßig aufrufen sondern TX einmal statisch setzen (oder geht das gar nicht?).
    Aber mit
    CComPort* pComPort = new CComPort(g_sComPort);
    SetCommBreak(COMDEV(TTYInfo));
    bzw.
    ClearCommBreak(COMDEV(TTYInfo));
    tut sich nichts (die angelötete LED bleibt dunkel).

    SetCommBreak soll TX auch nur für 25ms setzen, habe ich gelesen?
    Oder kann man da was mit _asm{... out dx,al...} machen?


  • |  Mod

    Da bin ich überfragt... ich habe das mal zum Triggern der Leitung benötigt.



  • @behelfsemail sagte in Wie TX der RS232 dauerhaft einschalten:

    SetCommBreak soll TX auch nur für 25ms setzen, habe ich gelesen?

    Die doku sagt "until ClearCommBreak is called", nicht 25 ms. -> Probier's doch erstmal aus bevor du auf Grund von Vermutungen jede Hoffnung aufgibst und weitersuchst.

    Oder kann man da was mit _asm{... out dx,al...} machen?

    Nein, kann man nicht. Wenn dann kannst du maximal noch schauen ob du Treiber Sourcen für deine Hardware bekommst, und dann einen modifizierten Treiber bauen.



  • @hustbaer sagte in Wie TX der RS232 dauerhaft einschalten:

    Probier's doch erstmal aus bevor du auf Grund von Vermutungen jede Hoffnung aufgibst und weitersuchst.

    ich schrieb ja:
    nach SetCommBreak(COMDEV(TTYInfo)) bleibt die TX-LED dunkel.
    Dachte, ich hätte das vor Jahren mal in TurboC gemacht, aber dann war es wohl doch nur RTS/CTS...



  • @behelfsemail
    Wenn das aus irgendwelchen Gründen nicht klappt, dann nimm einen anderen Pin (RTS/CTS/usw.) und löte das Kabel um.



  • Bzw. wenn es wirklich nur darum geht ne LED zu steuern dann könnte man auch einfach Daten senden. IIRC müssten es lauter Nullbytes sein, bzw. wenn ich mich irre dann eben 0xFF Bytes. Ein Start- und Stop-Bit, no Parity. Das erzeugt natürlich kein komplett ununterbrochenes Signal, aber es sollte reichen damit ne LED für das menschliche Auge ruhig und stetig leuchtet.

    ps:

    ich schrieb ja:
    nach SetCommBreak(COMDEV(TTYInfo)) bleibt die TX-LED dunkel.

    Sorry, hatte ich überlesen. War mir fast sicher dass es gehen muss, aber wenn du es schon probiert hast... doof.



  • Guten Tag

    Ich weis dass ich etwas spät dran bin.
    Aber eventuell hilfts späteren Suchenden.

    Das dauerhafte Einschalten von RX / TX dürfte an vielen PC's schon auf der Hardwareebene scheitern.
    Zum Schalten verwendet man die Hand-Shake Leitungen.

    Was man hier aber nicht vergessen sollte ist, das bei RS232 die üblichen Spannungen ca. +12/-12V betragen. (An Laptops ist diese Spannung oft deutlich geringer).
    Die Schaltung, die am RS232 hängt, sollte also damit klar kommen das sich die Polarität des Signals umkehrt.

    Eine normale LED mit Vorwiederstand wird hier schnell beschädigt.
    Diese benötigt unbedingt eine antiparalelle Diode, da die maximale Sperrspannung einer LED sehr niedrig ist.

    Für Basteleien eignet sich die gute, alte parallele Schnittstelle viel besser, da hier zwischen 0V/+5V geschalten wird.
    Und hier kann man jeden Ausgangspin dauerhaft schalten.

    Man sollte aber den "Printer Ready / Initialisierungs Pin" nicht verwenden, da Windows diesen Pin immer wieder einfach so setzt.

    Das hat mir damals (Tm) bei meinen Roboter-Basteleien so manchen crash beschehrt bis ich es herausgefunden habe.

    Heutzutage würde ich für Basteleien einen AVR / Arduino verwenden und diesen über USB an den PC anschließen.

    Das funktioniert einfacher und man ist nicht mehr an eine im aussterben begriffene Schnittstelle angewiesen.