CTS-Leitung

Hallo

ich erstelle mir für meine Modelleisenbahn derzeit ein Interface (zwischen PC und ARDUINO UNO).

Auf dem PC verwende ich eine Steuerungs-Software "TRAINCONTROLER".

Für die Kommunikation zwischen PC-Software "TRAINCONTROLER" und dem ARDUINO-Interface erwartet die [u]PC-Software die Verwendung eines Hardware-Handshakes/u.

Ich habe bisher noch keine Lösung gefunden, wie ich die CTS-Leitung zum PC aktivieren / deaktivieren kann.

Kann mir hier jemand weiterhelfen ?

vielen Dank im Voraus

Günter

Nunja....

Wie wäre es mit einem Stückchen Schaltdraht? Und einer Programmänderung auf dem µC ....

Hallo, ich gebe aus eigener und sehr leidvoller Erfahrung folgendes zu berücksichtigen:

Was soll geschehen, wenn der PC den Geist aufgibt und du nur noch Folgegeräte bekommst, die keinen geeigneten Port mehr haben (z.B. Laptop o.ä.)? Dann kannst du (wie ich selbst mit einer Parallel-Schnittstelle) das komplette Konzept in die Tonne werfen und mit allem von vorne anfangen - inkl. einem neuen Interface.

In der heutigen Zeit würde ich generell nur noch auf Software aufsetzen, die via USB mit solchen Dingen kommuniziert... LG, Rudi

Hallo

wenns’ nur so einfach wäre…hätte ich nicht gefragt !!!

Schaltdraht: wie dick und in welcher Farbe ??? :slight_smile:

(Spass beiseite);

In anderen Projekten (wo die CTS-Leitung auf der PC-Seite nicht abgefragt wird) habe ich Kommunikation zwischen ARDUINO und PC auch perfekt realisiert.

aber:
auf dem ARDUINO gibt es ja für die Kommunikation zwischen ARDUINO und dem PC die beiden pins RX und TX.

gibt es einen weiteren pin auf dem ich die CTS-Leitung bedienen kann, damit dies auch über das USB-Kabel an die Schnittstelle des PC’s weitergeleitet werden kann.

Hinweis: die eingesetzte Software des PC gibt die Daten über die COM-Schnittstelle aus und erwartet
natürlich auch dort die Rückantworten und auch die Aktivierung / Deaktivierung der CTS-Leitung

Gruß
Günter

Das mit USB (wie Rudi schreibt) würde ich auf jeden fall vorziehen. Sollte das aktuell noch nicht funktionieren, hat das Web (ist sicher bekannt) unzählige Beiträge, die da helfen könnten. Z.B. dieser hier. Mehr findest du mit Google.

In der heutigen Zeit würde ich generell nur noch auf Software aufsetzen, die via USB mit solchen Dingen kommuniziert…

Das ist aber eine lustige Idee!

OK, ich kenne TRAINCONTROLER nicht.
Möchte aber darauf wetten, dass es mit USB<->Serielladaptern und nativen RS232C gleichermaßen funktioniert.

CTS gibts auch bei nahezu allen USB<->Serielladaptern.
Ob die allerdings herausgeführt sind, liegt an der konkreten Schaltung.


Also:
Aus meiner Sicht sind die Gegensätze, welche du da aufziehst, keine Gegensätze, sondern Gemeinsamkeiten.


Nachtrag:

Das mit USB (wie Rudi schreibt) würde ich auf jeden fall vorziehen.

Hallooo…
UNOs werden per USB angeschlossen…
Schon mal anders gesehen?

Ethernet ist doch viel aufwändiger…

combie:
UNOs werden per USB angeschlossen…
Schon mal anders gesehen?

Ethernet ist doch viel aufwändiger…

??

Schaltdraht: wie dick und in welcher Farbe

So dünn, wie möglich, so dass du es gerade noch händeln kannst. Pink würde ich vorschlagen. Pink ist angemessen, für diesen Fall.

Was hast du für einen UNO? Ich habe hier einen Chinesischen mit CH340 vor mir liegen. Bei dem müsste man nur eine Stiftleiste einlöten, um an CTS ran zu kommen. Die Bohrungen sind schon da.

HotSystems: ??

Ja, da guckste aber.....

Aber ich stimme dir noch mal ausdrücklich zu: Es ist sehr sinnvoll, ein USB Gerät per USB mit dem PC zu verbinden.

combie: Ja, da guckste aber.....

Und zwar reichlich, ich konnte gar nicht so viel Brillen auftreiben, wie ich brauchte....

Aber ich stimme dir noch mal ausdrücklich zu: Es ist sehr sinnvoll, ein USB Gerät per USB mit dem PC zu verbinden.

So sehe ich das auch.

Jedoch habe ich den TO so verstanden, dass er eine zusätzliche serielle Verbindung zum PC aufbauen wollte, die eben nicht über USB funktioniert.

Aber ok, sei's drum. ;)

HotSystems: Jedoch habe ich den TO so verstanden, dass er eine zusätzliche serielle Verbindung zum PC aufbauen wollte, die eben nicht über USB funktioniert.

Ok... Ich habe folgendes gelesen:

gibt es einen weiteren pin auf dem ich die CTS-Leitung bedienen kann, damit dies auch über das USB-Kabel an die Schnittstelle des PC's weitergeleitet werden kann.

Mir vorher schon sowas gedacht, und klar mit JA beantwortet. OK, OK, mag mit dem einen Modell schwieriger sein, als mit einem anderen... Aber möglich ist es.

Du könntest das hier gezeigte Programm um den Handschlag erweitern.

HotSystems: Und zwar reichlich, ich konnte gar nicht so viel Brillen auftreiben, wie ich brauchte....

So sehe ich das auch.

Jedoch habe ich den TO so verstanden, dass er eine zusätzliche serielle Verbindung zum PC aufbauen wollte, die eben nicht über USB funktioniert.

Aber ok, sei's drum. ;)

Wenn er eine Softwareschnittstelle auf Arduino-Seite oder eine der 3 anderen seriellen Schnittstellen eines Mega verwenden will kann er aber mt einem USB-SerialTTL Adapter (zb FT232, CH350, PL2102 ecc) wieder auf USB ummünzen

Grüße Uwe

Bitte mal #0 lesen:

"Für die Kommunikation zwischen PC-Software "TRAINCONTROLER" und dem ARDUINO-Interface erwartet die PC-Software die Verwendung eines Hardware-Handshakes (über die CTS-Leitung der COM-Schnittstelle)."

Von USB auf PC-Seite steht da nichts! Und Software, die per Hardware die Hand schüttelt, wird Softwarehandshake nicht unterstützen. Also diese wollen verbunden werden:

  • PC: COM-Schnittstelle mit Hardwarehandshake (+-10V)
  • Arduino: Rx/Tx-Schnittstelle (0-5V)

agmue:
Bitte mal #0 lesen:

“Für die Kommunikation zwischen PC-Software “TRAINCONTROLER” und dem ARDUINO-Interface
erwartet die PC-Software die Verwendung eines Hardware-Handshakes (über die CTS-Leitung der
COM-Schnittstelle).”

Von USB auf PC-Seite steht da nichts! Und Software, die per Hardware die Hand schüttelt, wird Softwarehandshake nicht unterstützen. Also diese wollen verbunden werden:

  • PC: COM-Schnittstelle mit Hardwarehandshake (±10V)
  • Arduino: Rx/Tx-Schnittstelle (0-5V)

Wer hat hier bisher von “Softwarehandshake” gesprochen?

CTS tuts über eine Native RS232C genauso gut, wie über jede Virtuelle COM Schnittstelle.
Wie kommst du nur auf die absurde Idee, dass CTS an eine Native RS232C gekoppelt sein muss?
Geschichtlich, stammt es daher, aber heutzutage gibts doch mehr Virtuelle (also USB<->Serial Adapter), als reale RS232C.
Die ganzen USB<->Serial Adapter haben alle(die meisten) CTS Pins.
Das ist doch kein Softwarehandshake, wenn man einem Pin zieht?
Oder?
Das ist Hardware, lupenreine Hardware.

uwefed:
Wenn er eine Softwareschnittstelle auf Arduino-Seite oder eine der 3 anderen seriellen Schnittstellen eines Mega verwenden will kann er aber mt einem USB-SerialTTL Adapter (zb FT232, CH350, PL2102 ecc) wieder auf USB ummünzen

Danke Uwe, das ist mir schon klar.

Dank combie habe ich erst später gelesen, das er es über die vorhandene USB-Schnittstelle machen möchte.
Das hat er ja in Post #3 nachgeschoben.

Evtl. sollte der TO nochmal deutlich schreiben, was er genau möchte.
Seriell, wie in #1 oder USB wie in #3 geschrieben.

Auch wenn ich glaube, es zu “wissen”. :wink:

Hallo, nach div. Forumsbeiträgen, ist die Erzeugung der Steuersignale RTS und CTS nicht in der Serial Library integriert (http://forum.arduino.cc/index.php?topic=39974.0 https://forum.arduino.cc/index.php?topic=443445.0). Für die Steuersignale muss man also einen zusätzlichen Ein- und Ausgang am Uno spendieren und die Signale dafür mit der eigenen Software bedienen. Mit einem oder zwei MAX232 kann man das Ganze dann konform für RS232 umsetzen (+/- 12V). Hilfreich für sie dürfte auch diese Seite sein (http://www.sprut.de/electronic/interfaces/rs232/rs232.htm). Viele Grüße Manfred

Mein Vorschlag ist ein MAX232 Board, bei dem laut Schaltbild von MikroElektronika die 9-polige D-SUB Buchse auch mit RTS und CTS belegt ist.

Damit wäre die Spannungsanpassung gelöst, nicht aber der Hardwarehandshake.

combie: Wer hat hier bisher von "Softwarehandshake" gesprochen?

Es gibt unterschiedliche Datenflusssteuerungen:

  • Datenflusssteuerung durch RFR/CTS (oft fälschlich als RTS/CTS bezeichnet)
  • Software-Flusssteuerung, Software-Handshake, Software-Protokoll oder X-ON/X-OFF

(Quelle)

Was macht der Arduino an Rx/Tx, ist das X-ON/X-OFF? Dann müßte diese Software-Flusssteuerung in eine Datenflusssteuerung durch RFR/CTS gewandelt werden. Dieser Wandler ist gesucht.

guenter: gibt es einen weiteren pin auf dem ich die CTS-Leitung bedienen kann, damit dies auch über das USB-Kabel an die Schnittstelle des PC's weitergeleitet werden kann.

Diesen Satz halte ich für falsch, da USB meines Wissens keine CTS-Leitung kennt.

Interessant, wie du wiederholt meine Kompetenz, in der Sache, in Frage stellst. Nicht, dass du das nicht dürftest... Fühlt sich aber komisch an.

Es gibt unterschiedliche Datenflusssteuerungen: Datenflusssteuerung durch RFR/CTS (oft fälschlich als RTS/CTS bezeichnet) Software-Flusssteuerung, Software-Handshake, Software-Protokoll oder X-ON/X-OFF

Das weiß ich! U.A. Weil ich mich seit über 30 Jahren damit rum schlage. Mein zweiter Name ist RS232C

Was macht der Arduino an Rx/Tx, ist das X-ON/X-OFF?

Nein. Die Arduino Serial Klasse macht überhaupt keine Flusssteuerung. Nichts.

Diesen Satz halte ich für falsch, da USB meines Wissens keine CTS-Leitung kennt.

Bitte lesen: Datenblatt der FTDI Datenblatt der CP2102 und 2104 Ebenso das des CH340 Und welche auch sonst noch, freie Auswahl. Alle diese Bausteine haben CTS Eingänge, welche von jedem modernen Betriebssystem auch korrekt abgehandelt werden. Wenn es denn von der Anwendung angefordert wird. Und das tut diese Anwendung offensichtlich.

Selbst im Code von 16U2 und 8U2 habe ich schon CTS Abhandlungen vorgefunden. Weiß aber nicht ob das auf dem UNO oder Mega auch umgesetzt wurde. Aber selbst wenn nicht, gibt es doch Implementierungen welche man übernehmen könnte.

Mein Vorschlag ist ein MAX232 Board, bei dem laut Schaltbild von MikroElektronika die 9-polige D-SUB Buchse auch mit RTS und CTS belegt ist.

Kein Mensch braucht hier einen nativen RS232C Port. Keinerlei Bedarf.

Sorry, wird jetzt OT, muß aber mal sein, finde ich.

combie: Interessant, wie du wiederholt meine Kompetenz, in der Sache, in Frage stellst. Nicht, dass du das nicht dürftest... Fühlt sich aber komisch an.

Warum bin ich hier im Forum aktiv? Um anderen zu helfen und dabei selbst etwas zu lernen.

Kann ich etwas von einem Anfänger lernen? Eher unwahrscheinlich.

Wenn also jemand mit Kompetenz etwas schreibt und ich eine andere Ansicht dazu habe, dann widerspreche ich in der Hoffnung, etwas zu lernen. Entweder wird dadurch meine Ansicht gefestigt oder revidiert. Auf jeden Fall ist es eher ein Kompliment an Deine Kompetenz :)

Kritisch sehe ich den Stil einiger Deiner Äußerungen, da ich manche Beiträge schlicht nicht verstehe und daher auch nicht als hilfreich ansehe, obwohl ich unterstelle, daß sie so gemeint sind. Da sehe ich Optimierungspotential.

combie: Mein zweiter Name ist RS232C

Dann kennst Du sicher die Gehäuse mit 25 poligem Stecker und Buchse, in der Mitte LEDs und Jumper. Damit habe ich mir manches Essen auf Kosten der gastgebenden Firma verdient. USB ist da leider längst nicht so "lukrativ".

Danke für die Links, ich lese jetzt.