Hallo, Windows 10 setzt beim öffnen eines COM-Ports als Standard immer den DTR Pin auf ON gesetzt, leider sitzt auf der anderen Seite ein Device das bei DTR High einen Reset auslöst... Flusssteuerung steht auf "Keine", leider wird der DTR trotzdem beim öffnen des Ports gesetzt. Im Gerätemanager gibt's leider auch keine Einstellungsmöglichkeit und ein inventieren des DTR-Signals (beim FT232RL möglich) ist auch nicht Zielführend, da dann bei geschlossenem Port ein Dauer-Reset gemacht wird. Gibt es da irgendeinen Trick wie ich den DTR abschalten kann? Gruß Michael
:
Bearbeitet durch User
Geht leider nicht, Gerät hat USB-Anschluss und internen FTDI Chip
:
Bearbeitet durch User
Michael S. schrieb: > Gibt es da irgendeinen Trick wie ich den DTR abschalten kann? Womit willst Du denn darauf zugreifen? Mit eigenem Code?
Michael S. schrieb: > Geht leider nicht, Gerät hat USB-Anschluss und FTDI Chip intern... Dann muss das PC seitige Programm den DTR korrekt bedienen um das Gerät korrekt zu bedienen. Erzähl doch einfach mal um was für ein Gerät es sich handelt und was du genau machen willst.
:
Bearbeitet durch User
Cyblord -. schrieb: > Dann muss das PC seitige Programm den DTR korrekt bedienen um das Gerät > korrekt zu bedienen. Ja entweder die Software, was sie nicht macht, oder irgend was zusätzliches was den DTR fest deaktiviert (deshalb die Frage) > Erzähl doch einfach mal um was für ein Gerät es sich handelt und was du > genau machen willst. Spielt eigentlich bei dem generellen Problem (DTR macht Hardware Reset) keine Rolle, aber die Software nennt sich CANHacker und Hardware ist ein alter USB SLCAN-Adapter UART Ansteuerung mit hterm, ZOC (DTR Signal off) möglich, aber nicht mit CANHacker, Windows Terminal, putty, TeraTerm (nur mit Macro setdtr 0) Staus LED normal immer an, bei (Dauer)Reset aus, Problem liegt also definitiv am DTR Signal.
:
Bearbeitet durch User
Michael S. schrieb: > Ja entweder die Software, was sie nicht macht, oder irgend was > zusätzliches was den DTR fest deaktiviert (deshalb die Frage) Wenn Du in der Lage bist, eigene Software zu schreiben, könntest Du die Anwendungen, die Du benutzen willst, mit einem virtuellen Port von com0com reden lassen. Am anderen Ende hängt dann Dein Tool, das zwischen virtuellem und echtem COM-Port Daten schaufelt und dabei DTR ausgeschaltet lässt. Geht etwas durch die Brust ins Auge, aber sollte funktionieren.
Michael S. schrieb: > Windows 10 setzt beim öffnen eines COM-Ports als Standard immer den DTR > Pin auf ON Sei froh, dass Windows das Gerät nicht als Maus erkennt! ;-) Michael S. schrieb: > UART Ansteuerung mit hterm, ZOC (DTR Signal off) möglich, aber nicht mit > CANHacker Also ist es nicht Windows sondern Dein CANHacker! Hmmm schrieb: > com0com Ja! Gruss Chregu
Michael S. schrieb: > Windows 10 setzt beim öffnen eines COM-Ports als Standard immer den DTR > Pin auf ON gesetzt, leider sitzt auf der anderen Seite ein Device das > bei DTR High einen Reset auslöst... Das Problem scheint bekannt zu sein. Daher wird oft der Resetpin über einen Kondensator angesteuert. Es wird also nur ein kurzer Impuls ausgelöst, egal wie DTR steht.
Mal eine Idee (habs jetzt nicht ausprobiert): Kann man mittels FTProg (das Tool zum Konfigurieren der FTDI Chips) nicht die DTR Funktion im Chip deaktivieren? Ich weiß ja nicht, wozu und wie oft der Reset gebraucht wird. Für den Fall (Firmwareupdate?) könnte man ihn ja wieder aktivieren.
Michael S. schrieb: >> Erzähl doch einfach mal um was für ein Gerät es sich handelt und was du >> genau machen willst. > Spielt eigentlich bei dem generellen Problem (DTR macht Hardware Reset) > keine Rolle, Doch spielt eine Rolle, weil es schlicht unklar ist, wie es überhaupt zu der Situation kommen kann. Du tust so als ob das ein Windows Problem wäre. Ist es nicht. So viele Geräte laufen über UART und nutzen den DTR und es geht. > aber die Software nennt sich CANHacker und Hardware ist ein > alter USB SLCAN-Adapter > UART Ansteuerung mit hterm, ZOC (DTR Signal off) möglich, aber nicht mit > CANHacker, Windows Terminal, putty, TeraTerm (nur mit Macro setdtr 0) Dann kann das Gerät eben schlicht NICHT mit der SW CanHacker zusammen arbeiten. So einfach manchmal. Maurice S. schrieb: > Kann man mittels FTProg (das Tool zum Konfigurieren der FTDI Chips) > nicht die DTR Funktion im Chip deaktivieren? Es wird einen Grund geben dass das Gerät das DTR Signal nutzt.
:
Bearbeitet durch User
Peter D. schrieb: > Daher wird oft der Resetpin über einen Kondensator angesteuert. > Es wird also nur ein kurzer Impuls ausgelöst, egal wie DTR steht. Das ändert aber nichts daran, dass dann beim Connect ein Reset ausgelöst wird. Michael S. schrieb: > UART Ansteuerung mit hterm, ... möglich Bei hterm hängt es von der Programmeinstellung ab, ob es beim Connect DTR setzt oder nicht.
:
Bearbeitet durch User
Sigi S. schrieb: > Die Lösung lautet: > > Schalter Für DICH lautet die Lösung: Lesen und Verstehen des ganzen Threads.
Michael S. schrieb: > aber die Software nennt sich CANHacker und Hardware ist ein alter USB > SLCAN-Adapter Da offensichtlich CANHacker das DTR aktiv setzt, empfiehlt sich, den Autor dieser Software nach der Lösung zu fragen.
Beitrag #7919787 wurde vom Autor gelöscht.
Der DTR wird wohl nur für Firmwareupdates benötigt, die Idee mit temporärem deaktivieren im FTDI Chip EEProm oder der Treiber.ini hatte ich auch schon, aber außer den DTR zu inventieren habe ich keine andere Möglichkeit gefunden. Die Software ist leider auch schon steinalt und wird schon viele Jahre nicht mehr gepflegt, stammt noch aus der Win XP/7 Zeit. Ich habe auch keine andere gefunden die das SLCAN Protokoll nutzt und freie Hardware über COM Port zulässt. com0com werde heute abend mal probieren...
Michael S. schrieb: > Flusssteuerung steht auf "Keine", Das ist flash. Setzte die Flussteuerung mal auf "Hardware" oder "RTS/CTS". Bei mindestens einer der Einstellungen lässt Windows die Steuersignale in Ruhe, es ist aber eben NICHT die Einstellung "keine". Dafür muss aber der Code in der Anwendung selbst sauber programmiert sein. Oftmals gäbe es die Option aber irgendwo wenn der Code noch aus Zeiten von echten seriellen Schnittstellen stammte.
Alle getestet, gibt nur Xon/Xoff, Hardware und keine
Jim M. schrieb: > Michael S. schrieb: >> Flusssteuerung steht auf "Keine", > > Das ist flash. Setzte die Flussteuerung mal auf "Hardware" oder > "RTS/CTS". > > Bei mindestens einer der Einstellungen lässt Windows die Steuersignale > in Ruhe, es ist aber eben NICHT die Einstellung "keine". Das ist natürlich kompletter Unsinn. Die einzige Einstellung, bei der "Windows" (in Wirklichkeit natürlich: der Treiber) selber mit den Signalen hantiert, ist natürlich "Hardware". Ist logisch, weil der Hardware-Handshake nunmal über eben diese Leitungen abgewickelt wird und der Treiber deshalb natürlich nicht umhinkommt, daran rumzuspielen. Bei allen anderen Einstellungen hat die Software, die den Port öffnet, die Kontrolle über diese Leitungen. Windows mischt sich da nicht weiter ein. Dementsprechend kann man auch nur bei der Software selber ansetzen, um da etwas am Verhalten dieser Leitungen zu ändern. Ist das nicht möglich, bleibt nur noch physisches Abtrennen der Hardware. Sprich: Dreileiterstrippe als Verlängerung verwenden und alles ist gut.
Michael S. schrieb: > Alle getestet, gibt nur Xon/Xoff, Hardware und keine Wenn die Software nicht an den Handshake Pins fummelt, kann man mit dem guten alten mode einiges einstellen. mode -? zeigt die die Möglichkeiten.
:
Bearbeitet durch User
mode hat bei USB-Seriell Adaptern Einschränkungen bei Handshake Signalen. Kanns leider nur mit CP210x nachvollziehen, laut Auskunft einer gewöhnlich gut unterrichteten Software könnte dies beim FT232RL auch so sein. Spannungsmessung am DTR pin(Low = 0V, High = 3,3V)
1 | nach Einstecken DTR High |
2 | mit teraterm öffnen DTR Low |
3 | teraterm schließen DTR High |
4 | mode com3 dtr=on DTR kurzer glitch nach Low, dann sofort wieder High |
mit python:
1 | DTR High |
2 | import serial |
3 | ser = serial.Serial('COM3') DTR Low |
4 | ser.dtr = False DTR High |
5 | ser.dtr = True DTR Low |
6 | ser.close() DTR High |
Works as designed: Der Zweck von DTR ist es, einem angeschlossenen Gerät anzuzeigen, dass das Gerät (Computer) bereit ist, Daten zu kommunizieren.
Helmut H. schrieb: > mode hat bei USB-Seriell Adaptern Einschränkungen bei Handshake > Signalen. Kann sein, dass es mit manchen Einschränkungen gibt. Ich benutze es wenn ich den DTR Reset von Arduinos unterbinden möchte, um z.B. um per copy Daten vom PC zum Arduino zu spielen. Funktionieren tuts mit 16U2 eines UNO und CH340 der Nano Nachbauten.
Mit "Mode" konnte ich leider auch keine funktionieren Einstellung machen... Habe mit com0com zwei virtuelle Com Ports nur mit durchverbundenen TX/RX Steuerleitungen erstellt und da die sich ja nicht mit einem echten COM-Port verbinden lassen noch mit hub4com per Kommandozeile verbunden: COM3 <-> COM6 com0com erstellte virtuelle Ports COM4 FTDI-USB Device \hub4com-2.1.0.0-386>hub4com --baud=115200 \\.\COM4 \\.\COM6 COM4 Open("\\.\COM4", baud=115200, data=8, parity=no, stop=1, octs=on, odsr=off, ox=off, ix=off, idsr=off, ito=0) - OK COM6 Open("\\.\COM6", baud=115200, data=8, parity=no, stop=1, octs=on, odsr=off, ox=off, ix=off, idsr=off, ito=0) - OK Route data COM6(1) --> COM4(0) Route data COM4(0) --> COM6(1) Route flow control COM6(1) --> COM4(0) Route flow control COM4(0) --> COM6(1) Started COM4(0) Started COM6(1) Aber sofort nach dem Befehl geht die Status LED im Gerät aus (Dauerreset)
:
Bearbeitet durch User
Beitrag #7920589 wurde vom Autor gelöscht.
Michael S. schrieb: > Aber sofort nach dem Befehl In dem sehe ich keinen Kommandozeilenparameter für DTR.
Mit Putty gehts doch angeblich: https://www.asus.com/de/support/faq/1052775/ welches Terminalprogramm wird hier verwendet? Wenn es mit USB-Dongle nicht geht, dann "echte" COM Schnittstelle in den PC stecken. 2 Port PCI Express RS232 Serial Adapter Card https://www.amazon.de/s?k=2+port+pci+express+rs232+serial+adapter+card&crid ciao gustav
:
Bearbeitet durch User
Harald K. schrieb: > In dem sehe ich keinen Kommandozeilenparameter für DTR. Leider gibt es für DTR nichts was man setzen kann und bei den anderen Parametern habe ich on/off probiert, alles ohne Erfolg... Karl B. schrieb: > Mit Putty gehts doch angeblich: Nein, mit Putty geht es auch nicht, sobald verbunden Dauerreset > Wenn es mit USB-Dongle nicht geht, dann > "echte" COM Schnittstelle in den PC stecken. Wenn den Beitrag richtig gelesen hättest, wüsstest du das Device den FTDI Chip eingebaut hat...
:
Bearbeitet durch User
Michael S. schrieb: > Leider gibt es für DTR nichts was man setzen kann
1 | >hub4com --help=pinmap |
2 | Usage: |
3 | hub4com ... --create-filter=pinmap[,<FID>][:<options>] ... --add-filters=<ports>:[...,]<FID>[,...] ... |
4 | Wire options: |
5 | ... |
6 | --rts=[!]<s> - wire input state of <s> to output pin RTS. |
7 | --dtr=[!]<s> - wire input state of <s> to output pin DTR. |
8 | |
9 | The possible values of <s> above can be cts, dsr, dcd, ring, break or |
10 | connect. The exclamation sign (!) can be used to invert the value. If no any |
11 | wire option specified, then the options --rts=cts --dtr=dsr are used by |
12 | default. |
Möglicherweise geht --dtr=!dsr, dann müsste nach Aufruf von hub4com das Gerät nicht in Dauerreset gehen.
:
Bearbeitet durch User
--dtr scheint er überhaupt nicht zu kennen: \hub4com-2.1.0.0-386>hub4com --baud=115200 --dtr=!dsr \\.\COM4 \\.\COM6 Unknown option '--dtr=!dsr' \hub4com-2.1.0.0-386>hub4com --baud=115200 --dtr=off \\.\COM4 \\.\COM6 Unknown option '--dtr=off' \hub4com-2.1.0.0-386>hub4com --baud=115200 --dtr=dsr \\.\COM4 \\.\COM6 Unknown option '--dtr=dsr'
hub4com-2.1.0.0-386>hub4com --create-filter=pinmap:--dtr=!dsr --add-filters=0,1:pinmap --baud=115200 \\.\COM4 \\.\COM6 COM4 Open("\\.\COM4", baud=115200, data=8, parity=no, stop=1, octs=on, odsr=off, ox=off, ix=off, idsr=off, ito=0) - OK COM6 Open("\\.\COM6", baud=115200, data=8, parity=no, stop=1, octs=on, odsr=off, ox=off, ix=off, idsr=off, ito=0) - OK Route data COM4(0) --> COM6(1) Route data COM6(1) --> COM4(0) Route flow control COM4(0) --> COM6(1) Route flow control COM6(1) --> COM4(0) Filters: ______ \---------------> COM4(0) | ________/<-{pinmap.OUT}<- ______ \---------------> COM6(1) | ________/<-{pinmap.OUT}<- COM4(0) Event(s) [DSR] will be monitored Started COM4(0) COM6(1) Event(s) [DSR] will be monitored Started COM6(1) Error COM4(0): OVERRUN, total RXOVER=0 OVERRUN=1 RXPARITY=0 FRAME=0 scheint zu funktionieren, LED bleibt an, aber dann kommt Error nach kurzer Zeit.
Michael S. schrieb: > Error COM4(0): OVERRUN, total RXOVER=0 OVERRUN=1 RXPARITY=0 FRAME=0 Klingt danach, dass auf COM4 RTS/CTS-Handshake aktiviert ist und irgendwann der Buffer überläuft, weil CTS low ist. Wie sieht die Verdrahtung in com0com aus?
Eigentlich dürfte das egal sein, da RTS/CTS an jedem Port verbunden sind, aber mit ++octs=off funktioniert es jetzt endlich!!! Nur Schade das Windows dafür immer mit Startoption 7 (Treibersign. deaktivieren) gebootet werden muss... Hier die funktionierende Config wenn USB-Device an COM4 hängt: com0com wie auf dem Foto einstellen und in Adim Eingabeaufforderung: hub4com --create-filter=pinmap:--dtr=!dsr --add-filters=0,1:pinmap --baud=115200 --octs=off \\.\COM4 \\.\COM6
Probiers mal mit --octs=off Teraterm <--> COM8 COM9 <--> Hub4Com <--> COM3 CP210x RX TX verbunden
1 | >hub4com --route=All:All --no-default-fc-route=All:All --baud=38400 --octs=off \\.\COM3 \\.\COM8 |
2 | COM3 Open("\\.\COM3", baud=38400, data=8, parity=no, stop=1, octs=off, odsr=off, ox=off, ix=off, idsr=off, ito=0) - OK |
3 | COM8 Open("\\.\COM8", baud=38400, data=8, parity=no, stop=1, octs=off, odsr=off, ox=off, ix=off, idsr=off, ito=0) - OK |
4 | Route data COM3(0) --> COM8(1) |
5 | Route data COM8(1) --> COM3(0) |
6 | No route for flow control |
7 | Started COM3(0) |
8 | Started COM8(1) |
9 | DTR hat 0 V |
1 | >hub4com --route=All:All --no-default-fc-route=All:All --baud=38400 --octs=off --create-filter=pinmap:--dtr=!dsr --add-filters=0,1:pinmap \\.\COM3 \\.\COM8 |
2 | COM3 Open("\\.\COM3", baud=38400, data=8, parity=no, stop=1, octs=off, odsr=off, ox=off, ix=off, idsr=off, ito=0) - OK |
3 | COM8 Open("\\.\COM8", baud=38400, data=8, parity=no, stop=1, octs=off, odsr=off, ox=off, ix=off, idsr=off, ito=0) - OK |
4 | Route data COM3(0) --> COM8(1) |
5 | Route data COM8(1) --> COM3(0) |
6 | No route for flow control |
7 | Filters: |
8 | ________ |
9 | \---------------> |
10 | COM3(0) | |
11 | ________/<-{pinmap.OUT}<- |
12 | |
13 | ________ |
14 | \---------------> |
15 | COM8(1) | |
16 | ________/<-{pinmap.OUT}<- |
17 | |
18 | COM3(0) Event(s) [DSR] will be monitored |
19 | Started COM3(0) |
20 | COM8(1) Event(s) [DSR] will be monitored |
21 | Started COM8(1) |
22 | DTR hat 3,3V |
In beiden Fällen kann man viele Zeichen von Teraterm schicken, die auch wieder zurückkommen.
Michael S. schrieb: > Nur Schade das Windows dafür immer mit Startoption 7 (Treibersign. > deaktivieren) gebootet werden muss... Sollte aber nur bei der Treiberinstallation, also beim Anlegen eines neuen Port-Paars notwendig sein, oder? Aber schön, dass es funktioniert. Ich hatte hub4com gar nicht mehr im Hinterkopf und hätte mir wohl unnötig ein eigenes Tool für die Verbindung zwischen com0com und dem echten Port gebaut.
Bitte meinen vorigen Beitrag ignorieren (konnte nicht mehr löschen), schön dass es funktioniert.
:
Bearbeitet durch User
Hmmm schrieb: > Sollte aber nur bei der Treiberinstallation, also beim Anlegen eines > neuen Port-Paars notwendig sein, oder? schön wär's, aber leider werden bei normalen Windows start dann die com0com Ports wegen nicht sign. Treiber als fehlerhaft angezeigt... Danke erstmal an alle die Mitgewirkt haben, das Problem zu lösen!
https://www.serialtool.com/ hat signierten Treiber, der unter Win10 und Win11 bei mir problemlos funktioniert. Ein Pärchen kann man in der Free-Version installieren, harmoniert auch mit hub4com.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.