Komunikation mit RS232 (FTDI) und Terminal

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Du gibst natürlich z.B. zum Auslesen des Status in einem Terminaltool nur rs ein und mit dem drücken der Entertaste, sendet das Terminaltool das "rs" und hängt ein CR + LF dran. Das mit dem CR + LF muß man aber zuvor im Terminaltool einstellen. Hast Du mal die beiden IR Sende Signale mit dem Handy beobachtet?

  • Du gibst natürlich z.B. zum Auslesen des Status in einem Terminaltool nur rs ein und mit dem drücken der Entertaste, sendet das Terminaltool das "rs" und hängt ein CR + LF dran. Das mit dem CR + LF muß man aber zuvor im Terminaltool einstellen.

    Gut, oder auch nicht. Dann gibt die Schnittstelle nicht das zurück, was ich erwarte. (Mit Putty nichts und mit "Serial Port Monitor" unbrauchbaren Content.)


    Hast Du mal die beiden IR Sende Signale mit dem Handy beobachtet?

    Da verstehe ich nicht so recht was mir das bringen soll? Mit dem Windows Programm vom Hersteller werden die aktuellen Daten angezeigt. Damit ist die Schnittstelle ja ok, oder? BTW: Ich wüsste nicht dass meine Telefonzelle das unterstützt, da muss ich mich mal schlau machen.

    Vielen Dank an euch für die geduldige Unterstützung, wirklich sehr nett! :bravo2:

  • Kannst Du Dir unter Windows anschauen welche Einstellungen für die serielle Schnittstelle bei der Verbindung gemacht werden? Also Baud, Anzahl Datenbits, Anzahl Stopbits, macht die Software etwas mit den Leitungen die nicht rein für die Datenübertragung verwendet werden? Was steht denn dazu in der Dokumentation zu dem Gerät/Protokoll, wo Du die Befehle her hast, die man an das Gerät senden kann?

    In den Spalten "Data", "Data (chars)", und "Data length" sieht man ja gleich am Anfang: 72 74 64 3c 63 72 3e 3c 6c 66 3e ;"rtd<cr><lf>";11

    Das müsste eigentlich so aussehen (unter der Annahme, dass die beiden Steuerzeichen in der "Data (chars)"-Spalte als Punkte angezeigt werden): 72 74 64 0d 0a ;"rtd..";5

    “Dawn, n.: The time when men of reason go to bed.” — Ambrose Bierce, “The Devil's Dictionary”

  • Kannst Du Dir unter Windows anschauen welche Einstellungen für die serielle Schnittstelle bei der Verbindung gemacht werden? Also Baud, Anzahl Datenbits, Anzahl Stopbits, macht die Software etwas mit den Leitungen die nicht rein für die Datenübertragung verwendet werden? Was steht denn dazu in der Dokumentation zu dem Gerät/Protokoll, wo Du die Befehle her hast, die man an das Gerät senden kann?

    Sehen kann ich das nicht, ich habe die Einstellungen gemäß der Dokumentation übernommen.

    In den Spalten "Data", "Data (chars)", und "Data length" sieht man ja gleich am Anfang: 72 74 64 3c 63 72 3e 3c 6c 66 3e ;"rtd<cr><lf>";11


    Das müsste eigentlich so aussehen (unter der Annahme, dass die beiden Steuerzeichen in der "Data (chars)"-Spalte als Punkte angezeigt werden): 72 74 64 0d 0a ;"rtd..";5

    Sorry, hier verstehe ich nicht was du meinst.


  • Na Du hast in #35 einen Mitschnitt der Daten gezeigt, und da steht das erste, sollte aber das zweite zu sehen sein. Wenn Du bei so einem Mitschnitt also das zweite siehst, dann weisst Du das die Daten inhaltlich richtig sind, und der Fehler wo anders liegen muss. Solange Du nicht das zweite siehst, ist das der/ein Fehler.

    Als nächstes müsstest Du dann herausfinden welche Einstellungen für die serielle Schnittstelle die funktionierende Windows-Software vornimmt. Entweder weicht die von den Angaben der Dokumentation ab, oder da wird mehr gemacht als in der Dokumentation steht.

    “Dawn, n.: The time when men of reason go to bed.” — Ambrose Bierce, “The Devil's Dictionary”

  • ... Da verstehe ich nicht so recht was mir das bringen soll? Mit dem Windows Programm vom Hersteller werden die aktuellen Daten angezeigt. Damit ist die Schnittstelle ja ok, oder? BTW: Ich wüsste nicht dass meine Telefonzelle das unterstützt, da muss ich mich mal schlau machen.

    Vielen Dank an euch für die geduldige Unterstützung, wirklich sehr nett! :bravo2:

    Das Windows Tool ist ja auch nicht das Problem, sondern dass Du die Daten nicht über einen anderen Weg auslesen kannst. Für "normale" kabelgebunden RS232 Schnittstellen gibt es Tester mit LED's, wo man sehen kann, was die serielle Schnittstelle macht. Bei der Frage nach dem IR-Sendesignal, soll einfach nur zur Eingrenzung des Problems festgestellt werden, ob ein Signal für die Abfrage gesendet wird, bzw. ob das Gerät antwortet, aber der Empfang der Daten das Problem ist. Eine Schnittstelle hat ja auch Steuersignale zur Flußsteuerung ( RTS, DSR usw. ) kann ja sein, dass es dort klemmt. Wenn Du ein Gerät mit Kamera und Display / Monitor hast, sollte man damit IR Signale sehen können.

  • Als nächstes müsstest Du dann herausfinden welche Einstellungen für die serielle Schnittstelle die funktionierende Windows-Software vornimmt. Entweder weicht die von den Angaben der Dokumentation ab, oder da wird mehr gemacht als in der Dokumentation steht.

    Das hier sendet die Windows Software an die Schnittstelle:

    • 2 01/10/2022 12:52:22 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_BAUD_RATE) DOWN COM3
    • 3 01/10/2022 12:52:22 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_BAUD_RATE) UP STATUS_SUCCESS 80 25 00 00 €%.. 4 COM3
    • 4 01/10/2022 12:52:22 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_LINE_CONTROL) DOWN COM3
    • 5 01/10/2022 12:52:22 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_LINE_CONTROL) UP STATUS_SUCCESS 00 00 08 ... 3 COM3
    • 6 01/10/2022 12:52:22 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_CHARS) DOWN COM3
    • 7 01/10/2022 12:52:22 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_CHARS) UP STATUS_SUCCESS 00 00 00 00 00 00 ...... 6 COM3
    • 8 01/10/2022 12:52:22 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_HANDFLOW) DOWN COM3
    • 9 01/10/2022 12:52:22 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_HANDFLOW) UP STATUS_SUCCESS 01 00 00 00 40 00 00 00 00 08 00 00 00 02 00 00 .... ........... 16 COM3
    • 10 01/10/2022 12:52:22 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_BAUD_RATE) DOWN 80 25 00 00 €%.. 4 COM3
    • 11 01/10/2022 12:52:22 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_BAUD_RATE) UP STATUS_SUCCESS COM3
    • 12 01/10/2022 12:52:22 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_CLR_RTS) DOWN COM3
    • 13 01/10/2022 12:52:22 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_CLR_RTS) UP STATUS_SUCCESS COM3
    • 14 01/10/2022 12:52:22 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_CLR_DTR) DOWN COM3
    • 15 01/10/2022 12:52:22 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_CLR_DTR) UP STATUS_SUCCESS COM3
    • 16 01/10/2022 12:52:22 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_LINE_CONTROL) DOWN 00 00 08 ... 3 COM3
    • 17 01/10/2022 12:52:22 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_LINE_CONTROL) UP STATUS_SUCCESS COM3
    • 18 01/10/2022 12:52:22 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_CHARS) DOWN 00 00 00 00 00 00 ...... 6 COM3
    • 19 01/10/2022 12:52:22 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_CHARS) UP STATUS_SUCCESS COM3
    • 20 01/10/2022 12:52:22 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_HANDFLOW) DOWN 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 16 COM3
    • 21 01/10/2022 12:52:22 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_HANDFLOW) UP STATUS_SUCCESS COM3
    • 22 01/10/2022 12:52:22 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_TIMEOUTS) DOWN ff ff ff ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ÿÿÿÿ................ 20 COM3
    • 23 01/10/2022 12:52:22 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_TIMEOUTS) UP STATUS_SUCCESS COM3
    • 24 01/10/2022 12:52:22 IRP_MJ_WRITE DOWN 72 72 71 0d 0a rrq.. 5 5 COM3
    • 25 01/10/2022 12:52:22 IRP_MJ_WRITE UP STATUS_SUCCESS 72 72 71 0d 0a rrq.. 5 COM3

    Wenn ich mit der Maus über die Zeilen gehe, bekomme ich folgende ToolTips:



    Hier stehen jetzt Werte für die Flow Control und Handshake. Flow Control habe ich in Putty auf none stehen, Handshake wird nicht angeboten.

    Sind das Werte für none?

    Fliegenhals Das muss ich mir in Ruhe ansehen, davon habe ich noch nie gehört.

  • Das sind nicht die Werte für „none“, aber das war ja auch der GET-Aufruf. Später beim SET-Aufruf steht das alles auf 0.

    Also das müsste dann bei Putty 9600 Baud, 8 Datenbits, 1 Stopp-Bit, Parity: None, und Flow Control: None sein. Und es sollte sichergestellt sein, das am Zeilenende sowohl „carriage return“ als auch „line feed“ gesendet werden. Wie man das im Beispielmitschnitt ja beim "rrq" in den letzten beiden Zeilen/Punkten sehen kann. Da bin ich ja immer noch ein bisschen verwundert wie Du "rtd<cr><lf>" in #35 als Text *ohne* jegliches Zeilenendezeichen hinbekommen hast. Eventuell unter den Terminal-Einstellungen „local line editing“ auf „force on“ stellen, um sicherzustellen, dass nicht einzelne Zeichen in der Geschwindigkeit in der man tippt sofort gesendet werden, sondern nur komplette Eingaben erst wenn man die Eingabetaste drückt.

    Ansonsten kannst Du das gleiche Protokoll mal mitschneiden wenn Du Putty benutzt. Da müsste man die Unterschiede dann ja sehen, zwischen Putty und dem Programm.

    Wie geht es eigentlich weiter wenn die Kommunikation mit Putty klappt? Wolltest Du dann ein Programm schreiben? Falls ja in welcher Programmiersprache?

    “Dawn, n.: The time when men of reason go to bed.” — Ambrose Bierce, “The Devil's Dictionary”

  • So ich habe Putty auch gemonitort:

    • 2 01/10/2022 17:49:39 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_BAUD_RATE) DOWN COM3
    • 3 01/10/2022 17:49:39 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_BAUD_RATE) UP STATUS_SUCCESS 80 25 00 00 €%.. 4 COM3
    • 4 01/10/2022 17:49:39 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_LINE_CONTROL) DOWN COM3
    • 5 01/10/2022 17:49:39 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_LINE_CONTROL) UP STATUS_SUCCESS 00 00 08 ... 3 COM3
    • 6 01/10/2022 17:49:39 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_CHARS) DOWN COM3
    • 7 01/10/2022 17:49:39 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_CHARS) UP STATUS_SUCCESS 00 00 00 00 00 00 ...... 6 COM3
    • 8 01/10/2022 17:49:39 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_HANDFLOW) DOWN COM3
    • 9 01/10/2022 17:49:39 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_HANDFLOW) UP STATUS_SUCCESS 00 00 00 00 00 00 00 00 00 08 00 00 00 02 00 00 ................ 16 COM3
    • 10 01/10/2022 17:49:39 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_BAUD_RATE) DOWN COM3
    • 11 01/10/2022 17:49:39 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_BAUD_RATE) UP STATUS_SUCCESS 80 25 00 00 €%.. 4 COM3
    • 12 01/10/2022 17:49:39 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_LINE_CONTROL) DOWN COM3
    • 13 01/10/2022 17:49:39 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_LINE_CONTROL) UP STATUS_SUCCESS 00 00 08 ... 3 COM3
    • 14 01/10/2022 17:49:39 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_CHARS) DOWN COM3
    • 15 01/10/2022 17:49:39 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_CHARS) UP STATUS_SUCCESS 00 00 00 00 00 00 ...... 6 COM3
    • 16 01/10/2022 17:49:39 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_HANDFLOW) DOWN COM3
    • 17 01/10/2022 17:49:39 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_GET_HANDFLOW) UP STATUS_SUCCESS 00 00 00 00 00 00 00 00 00 08 00 00 00 02 00 00 ................ 16 COM3
    • 18 01/10/2022 17:49:39 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_BAUD_RATE) DOWN 80 25 00 00 €%.. 4 COM3
    • 19 01/10/2022 17:49:39 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_BAUD_RATE) UP STATUS_SUCCESS COM3
    • 20 01/10/2022 17:49:39 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_RTS) DOWN COM3
    • 21 01/10/2022 17:49:39 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_RTS) UP STATUS_SUCCESS COM3
    • 22 01/10/2022 17:49:39 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_DTR) DOWN COM3
    • 23 01/10/2022 17:49:39 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_DTR) UP STATUS_SUCCESS COM3
    • 24 01/10/2022 17:49:39 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_LINE_CONTROL) DOWN 00 00 08 ... 3 COM3
    • 25 01/10/2022 17:49:39 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_LINE_CONTROL) UP STATUS_SUCCESS COM3
    • 26 01/10/2022 17:49:39 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_CHARS) DOWN 00 00 00 00 00 00 ...... 6 COM3
    • 27 01/10/2022 17:49:39 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_CHARS) UP STATUS_SUCCESS COM3
    • 28 01/10/2022 17:49:39 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_HANDFLOW) DOWN 01 00 00 00 40 00 00 00 00 08 00 00 00 02 00 00 .... ........... 16 COM3
    • 29 01/10/2022 17:49:39 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_HANDFLOW) UP STATUS_SUCCESS COM3
    • 30 01/10/2022 17:49:39 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_TIMEOUTS) DOWN 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .................... 20 COM3
    • 31 01/10/2022 17:49:39 IRP_MJ_DEVICE_CONTROL (IOCTL_SERIAL_SET_TIMEOUTS) UP STATUS_SUCCESS COM3
    • 32 01/10/2022 17:49:39 IRP_MJ_READ DOWN STATUS_PENDING 1 COM3
    • 33 01/10/2022 17:49:47 IRP_MJ_WRITE DOWN 72 73 rs 2 2 COM3
    • 34 01/10/2022 17:49:47 IRP_MJ_WRITE UP STATUS_SUCCESS 72 73 rs 2 COM3
    • 35 01/10/2022 17:49:47 IRP_MJ_WRITE DOWN STATUS_PENDING 0d . 1 1 COM3

    Bei SET_ und GET_HANDFLOW gibt es Unterschiede. Könnte dass der Grund sein?

    Wie geht es eigentlich weiter wenn die Kommunikation mit Putty klappt? Wolltest Du dann ein Programm schreiben? Falls ja in welcher Programmiersprache?


    Ja genau, ich möchte die aktuellen Daten immer auf dem Handy/Tablet sehen können. Sobald ich die Daten lesen kann baue ich mir einen Data Reader, dann eine REST API und dann eine Website, später vielleicht auch eine App. Ich werde alles mit C# machen.

  • Guten Morgen zusammen! :)

    Ich habe den IR-Sensor demontiert und konnte mit meinem Handy ganz schwaches blinkendes Licht erkennen. Den Test habe ich mit meinem Windows Gerät und der Software für den Heizstab durchgeführt. Mit dem Serial Port Monitor bekomme ich das selbe Ergebnis. Wie kann ich das mit dem Raspberry testen? Mit Putty wird ja immer nur ein Einzelsignal gesendet. Ich brauche eine Möglichkeit, das Signal wiederholt zu senden, damit ich es überhaupt erkennen kann. Habt ihr eine Idee wie ich alle 250ms ein Signal mit dem PI senden kann?

  • So, das IR-Signal kann ich am Handy erkennen. Wenn ich mit meinem self made code etwas sende bekomme ich auch etwas zurück. :)

    Komisch dass das mit Putty nicht funktioniert. :conf:

    Die Daten muss ich erstmal analysieren. Was da ankommt ist kein Klartext.

    OT: Kann man eigentlich jeden beliebigen USB-IR-Reader nehmen? Die gibt es ja für schmales Geld, wenn ich das mit dem Orginal vergleiche.

  • Damit kannst Du ja nun das Problem eingrenzen. Die Daten werden vermutl. im hex Format vorliegen

    .

    OT: Kann man eigentlich jeden beliebigen USB-IR-Reader nehmen? Die gibt es ja für schmales Geld, wenn ich das mit dem Orginal vergleiche.

    Was meinst Du denn damit? Du könntest Dir auch einen IR Empfänger an einen GPIO Port deines RPi basteln ( da wäre es aber von Vorteil, wenn man die Trägerfrequenz des Sender kennt, ansonsten einfach mal einen 3,3V IR Empfänger aus einem defeken Gerät mit IR FB testen ) Damit könnte man sehen, ob mit lirc o.ä. etwas Brauchbares empfangbar ist. Es gibt auch IRDA Module mit denen man Daten via IR per Rx / Tx Logikpegel, senden und empfangen kann.

  • Sieht alles gut aus, der Rest ist jetzt nur noch Fleißarbeit. Viele der Fragen hier wären eigentlich nicht nötig gewesen, wenn Putty das Ergebnis angezeigt hätte. Na ja, egal, Hauptsache es funktioniert jetzt. :)

    Vielen Dank für die freundliche Unterstützung, wirklich sehr nett von euch! :thumbup:

    EDIT: Martin28 Danke für den Hinweis, das werde ich morgen mal prüfen. Das Problem hat den Prof of Concept sehr in die Länge gezogen. :no_sad:

  • Hallo

    Was willst du von mir ? Könntets du dich mal klarer Ausdrücken ! Danke.

    Du hattest mir als erster in diesem Thema geantwortet und Putty empfohlen. Putty funktioniert leider nicht wie erwartet mit dem Serial Port, ein Workaround ist in Link beschrieben. Ich habe halt ewig gebraucht bis ich das rausgefunden habe, ich hatte sogar die Hardware untersucht. Und das könnte man Mitlesern mit einem Hinweis ersparen. :)

  • Hallo,

    Du hattest mir als erster in diesem Thema geantwortet und Putty empfohlen. Putty funktioniert leider nicht wie erwartet mit dem Serial Port, ein Workaround ist in Link beschrieben. Ich habe halt ewig gebraucht bis ich das rausgefunden habe, ich hatte sogar die Hardware untersucht. Und das könnte man Mitlesern mit einem Hinweis ersparen. :)

    Entschuldige, wenn ich so mal in den Wortschatz greifen muss, der eigentlich nicht zu meinem Standard Repartuar gehört.

    "Verwöhnter, wahrscheinlich Windows User / DAU"

    Ich verwende selber sowohl die Onboard Serielle RasPi, wie auch beim ESP dieses Schnitstellenkarte und das in Verbindung mit Putty Clientseite auf Linux und habe diese von dir aufgeführten Probleme noch nicht feststellen können. Ebenso Raspi ( RasbianOS 32 Bit ) auf "ESP ohne USB Buchse" mithilfe dieses Adapters, und auch hier ohne jegliches von dir dargestelltes Problem.

    Vielleicht solltest du, bevor du verallgemeinernde Forderungen an Andere stellst, auch mal zu deiner Konfiguration eine Aussage machen, bzw. diese veröffentlichen.

    → Denn wenn mir dieser von dir beschriebene Fehler auch untergekommen wäre, hätte ich sicherlich die notwendigen Anpassungen dazu auch angegeben.

    "Woher kommt der Größenwahn, dass viele Leute immer annehmen oder voraussetzen, dass alle User auch Windows verwenden. Linux / auch MacOS hat diese Probleme komischer Weise nicht ! " Offtopic-Ende.

    Steffen.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!