ESC-Code von Android erzeugen?

  • Hallo wertes Forum, ich habe da eine Frage:


    Ich habe ein Modem über USB an ein Tablet-PC angeschlossen, welches Android als Betriebssystem benutzt. Auf dem Tablet habe ich die App "USB-Terminal" installiert und so konfiguriert, dass sie das Modem erkennt und dessen Antworten anzeigt.


    Alle Steuerbefehle an das Modem müssen ein vorangestelltes ESC haben,ü sonst erkennt das Modem den String nicht als Befehl, sondern interpretiert ihn als Text, der übertragen werden soll.


    Nur wie generiere ich in jenem Terminalprogramm den Code für ESC??? Ich stehe da gerade "auf dem Schlauch"!


    Es gibt eigentlich keine ESC-Taste unter Android, aber man kann die App "Hacker's Keyboard" installieren. Dort gibt es zwar die Tasten ESC und CTRL, doch es ist nach der Betätigung weder eine Zeichenfolge erkennbar noch reagiert das Modem auf den String als Befehl...


    73 Andy

    Einmal editiert, zuletzt von DH5AK ()

  • Hallo Andy,


    ich bin mir nicht sicher, welche App Du verwendest, denn unter der Bezeichnung "USB Terminal" ploppen so viele hoch. Wenn Du die Android-App Serial USB Terminal von Kai Morich verwendest, ist die Lösung einfach.


    ASCII-Zeichen lassen sich ausgeben, wenn Du im Reiter "Edit Macro" als "Edit Mode" die Auswahl bei "Text" setzt. Steuercodes lassen sich ausgeben, wenn Du im Reiter "Edit Macro" als "Edit Mode" die Auswahl bei "Hex" setzt. ESC lässt sich dann als 27 eingeben. Wenn Du in den Steuercodes zusätzlich ASCII-Zeichen ausgeben willst, müsstes Du diese selbst in den Hex-Wert umrechnen.


    73/72 de Ingo, DK3RED - Don't forget: the fun is the power!

  • Hallo Ingo,

    ja, es ist exakt jene App. Ich versuche mal, Deine Tipps umzusetzen. Ich bin nicht so der Softwarefreak. Werde wahrscheinlich nochmal nachhaken müssen...

    73 Andy

  • Hallo Andy,

    Werde wahrscheinlich nochmal nachhaken müssen...

    kein Problem. Unter anderem dafür ist ja das Forum da.


    73/72 de Ingo, DK3RED - Don't forget: the fun is the power!

  • Hallo Andy,


    Tom hat im vorherigen und nächsten Posting recht. 27 ist der Dezimalwert, der sich als Steuercode nicht eingeben lässt. Du müsstest für ESC also 1B als Steuercode eingeben. Die vollständige Liste mit Steuerzeichen findest Du zum Beispiel hier. Dort ist in der Zeile mit 1... und in der Spalte mit ...B der Code ESC vermerkt. Der Hex-Wert ist somit 1B.


    73/72 de Ingo, DK3RED - Don't forget: the fun is the power!

    4 Mal editiert, zuletzt von DK3RED () aus folgendem Grund: Eigenen Denkfehler entdeckt.

  • Ingo, 27 (Hex) ist aber das ', ESC ist 1b (Hex). Das meinte ich. Ich bin davon ausgegangen, wenn man auf Hex stellt, dass dann auch der Hex-Code eingegeben werden muss und nicht der Dezimal-Code. Je nach Terminal lassen sich die Steuercodes auch anders angeben, das hängt von der Terminal-Emulation ab. Zum Beispiel wäre ESC bei ANSI Terminals ^[, bei Modemsequencen sind es oft 3 Plus Symbole: +++ Übliche Modems, die AT Befehle verstehen, schalten mit den +++ in den Befehlsmode um und mit AT0 wieder zurück.


    73, Tom

  • Hallo Tom, hallo Ingo,


    Ja, ich habe auch 1b eingegeben, wenn ich auf Hex gestellt habe. Tippe ich dann auf Text, zeigt der Macro-Editor ^[ an, aktiviere ich dann wieder Hex, zeigt er wieder 1b an. Er konvertiert also selbst hin und her, das ist hilfreich.


    Das Modem, ein DSP-TNC von SCS, stellt sich aus meiner Sicht aber doch etwas "bockbeinig" an, denn es antwortet auf Hex 1b mit drei Fragezeichen, versteht den Befehl also nicht, auch nicht, wenn ich einen simplen Befehl hinten dran hänge.


    Ich hatte gehofft, das Teil von einem Android-Tablet aus ansprechen zu können - also, ich hoffe das immer noch...


    73 Andy

  • Stimmen denn die übrigen Parameter ?? 7-bit/8bit, speed, ................... wird vielleicht noch DTR und Co verwendet ?? Manche Modems machen Speederkennung und wollen erst einmal Sterne sehen *********** . Ich arbeite noch mit einen alten TNC (Pakratt 232), geht auch via USB-COMx und manchmal muß man den liebevoll resetten und wieder von vorne anfangen. Ich hatte auch schon Probleme mit dem USB-COMx Chip und das Kabel inzwischen entsorgt.


    Sorry, aber solche Nicht-Erkennung beim Modem kann an mehr als nur dem Escape hängen. Einfach nochmal ganz von vorne .........

    73 Peter

  • Moin Andy,

    Das Modem, ein DSP-TNC von SCS, stellt sich aus meiner Sicht aber doch etwas "bockbeinig" an, denn es antwortet auf Hex 1b mit drei Fragezeichen, versteht den Befehl also nicht, auch nicht, wenn ich einen simplen Befehl hinten dran hänge.

    wenn Dein Terminalprogramm es erlaubt, dann füge vor und hinter dem ESC noch eine Pause ein. Manche Modem benötigen einen Augenblick, um in den Befehlsmodus zu schalten. Wenn ich das Handbuch richtig deute, will der TNC vor jedem Befehl ein ESC. Das ist anders als bei Modems mit AT Befehlssatz. Dort schaltet man den Befehlsmodus mit ESC ein und mit AT0 wieder aus. Auch dort war es häufig nötig, eine Pause vor und nach dem ESC einzufügen. Ich glaube der Standard definierte die Pause auf 2s. Man ist das lange her, Mailboxen mit C64/C128/Amiga und später mit PCs in einem Novell Netware Netz ;)


    Funktioniert der TNC denn am PC? Das würde ich evtl. erst mal prüfen und dann mit dem Tablett. Ein schönes Programm, was ich häufig bei Microcontroller verwende, ist HTerm.


    73, Tom

  • @ Peter,

    Speed stimmt, die anderen Werte, denke ich, auch, denn die Terminal-App schreibt die Antworten vom Gerät gut mit.

    Obwohl ich mich im Nachhinein wundere, warum es sich heute morgen NICHT seiner kompletten Meldung gemeldet hat. Dem will ich mal auf den Grund gehen.


    @Tom,

    Ist eine gute Idee, es erstmal unter Windows zu probieren.


    Da habe ich dann etwas zu tun...

    73 Andy

  • Hallo Andy,


    da sich das DSPTNC von SCS sowohl per Software als auch teilweise über Schalter einstellen lässt, habe ich mir einmal das Intruction Manual/Command Description heruntergeladen.


    Der DIP-Schalter 2 sollte auf "Off" stehen, damit die langsamere Geschwindigkeit zwischen Steuerrechner und TNC eingestellt wird, in diesem Fall 38400 Bd. Dieser Wert sollte auch im Terminal-Programm unter "Settings" --> "Serial" eingestellt sein. Die ebenfalls im Manual zu findenden Baudraten 300 Bd, 1200 Bd und 9600/19200 Bd betreffen lediglich die andere Seite des Modems, die Sendeseite.


    Den DIP-Schalter 4 würde ich erst einmal auf "On" schalten, um die Standard-Einstellungen zu nutzen und nicht eventuell durch die %ZS-Kommandos schon "verstellte" Einstellungen zu nutzen.


    Von Pausen in den Steuerkommandos habe ich auf die Schnelle nichts im Manual gelesen. Diese könntest Du im Terminal-Programm unter "Settings" --> "Serial" ganz unten einstellen. Bedenke, dass diese Verzögerung auch bei den ASCII-Zeichen übertragen wird. Lasse erst einmal "BREAK duration" auf 0 ms stehen.


    Zur Anzahl der Bits, Stopp-Bits und zur Parität habe ich nichts im Manual gefunden. Ich würde daher unter "Settings" --> "Data bits" auf 8 setzen, "Serial" die "Parity" auf "None" einstellen und "Stop bits" auf 2 setzen.


    Da das DSPTNC via USB angeschlossen wird, kannst Du "Show controll lines" ausschalten.


    Das das Modem irgendwie gar nichts versteht, sendet es Fragezeichen zurück. Ich würde daher mit den Einstellungen unter "Settings" --> "Send" experimentieren, also bei "Newline".


    73/72 de Ingo, DK3RED - Don't forget: the fun is the power!

  • Hallo Ingo,

    hatte bisher mit 38400 und 8N1 gearbeitet, aber ich versuche auch gern mal 8N2. Den DIP-Schalter Nr. 4 prüfe ich nachher nochmal.

    73 Andy

  • Obwohl ich mich im Nachhinein wundere, warum es sich heute morgen NICHT seiner kompletten Meldung gemeldet hat.

    Dauert bei mir morgens auch länger, Modems sind auch nur Menschen. Wenn das ESC zur Statusänderung benutzt wir, bin ich bei Tom. Dann auf jeden Fall Wartezeit. Ich war mir nicht sicher, weil manchmal werden Sonderzeichen auch als Datenstream-Anfang und Ende benutzt. Da gibt es zwar Standards, aber auch jede Menge Wildwuchs.


    Ich habe gerade noch das angegeben Manual quer gelesen. Das erinnert mich an meine PAKRATT und TNC1 Probleme. Wenn Du im Terminal-Mode bist, erwarten die Kisten i.d.R. CR oder LF oder beides zum Moduswechsel (in den Command-Modus). Es sitzt ja jemand am Terminal und befiehlt. Du bist nicht im HOST-Modus und sagst explizit per Terminal-Taste "ich Chef, nix Host". Wie es bei Dir gehandhabt wird, weiß ich nicht. Aber per (Basic-)Terminalprogramm läuft es bei mir so. Ich muß CTL-C für den Commandmodus drücken, müßte jetzt länger wühlen um das Tastatur-generierte Zeichen zu finden.


    Zu DIP-Switches: ich habe mir den TNC umgebaut und an der Front zwei Mini-Kippschalter dafür. Mich hat das ewige Configurieren meiner eierlegenden Wollmilchsau von PAKRATT so genervt, daß ich vorne per Kippschalter vor Power on sagen kann, jetzt neue Config oder die alte. Da ich öfter mal ein Terminal-Programm nutze (und den TNC nativ nutze), dann wieder ein fertiges Host-Programm für PR und APRS gibt es immer wieder mal Hänger und dann hilft der Kippschalter mit "alles von vorne neu" ganz gut. (Die Host-Programme schicken initial Ihre Config vom PC bei jedem Start selber rüber, da ist die Nutzung alter Config nicht sinnvoll).


    73 Peter


    PS 2 Stopbits werden m.E. bei der speed nichts bringen. Die waren früher mal analog mit TTY-speed ~45/50 bps nützlich, aber auch nur sehr selten.

    Einmal editiert, zuletzt von DB6ZH ()

  • Installation unter Windows 10 lief natürlich anders als erwartet, anders als in der alten Installationsbeschreibung geschildert, aber es lief. Konnte den TNC konfigurieren, also mein Call und Parameter eintragen etc., soweit mir das etwas gesagt hat. Konnte die Konfiguration in den nichtflüchtigen Speicher schreiben und von dort auch wieder aufrufen. Habe dann mutig sogar die aktuellste Firmware geladen, auch das lief gut.

    Morgen geht's am Tablet weiter, ich bin gespannt!

    73 Andy

    Einmal editiert, zuletzt von DH5AK ()

  • So, nun bin ich wieder dran. Für alle, die mitlesen: Trotz meines Alters bin ich Anfänger in diesem Thema:


    Zuerst ging wieder überhaupt gar nix. Die Terminal-App fand trotz korrekt eingestellter Geschwindigkeit mit 38400bps und 8N1 nicht mal das FTDI-Device. Der DIP-Schalter Nr. 4 ist auf ON, alle anderen auf OFF.

    Bisher hatte ich das Modem stets über einen Delock 64044 USB-Hub angeschlossen, denn dort kann ich zusätzlich das Netzteil (Ladegerät) vom Tablet anstöpseln und von dem Hub erhoffe ich mir einen gewissen Schutz für das Tablet...

    ... aber wenn das Tablet das FTDI-Device connected hatte, war es nach weniger als einer Sekunde schon wieder disconnected. Ich habe dann den Hub gegen einen passiven OTG -Adapter ausgetauscht und SCHON ließ sich das Modem dauerhaft connecten!


    Dann habe ich mir die Einstellungen vorgenommen, die Ihr mir empfohlen habt. Die Pausenzeit gabe ich auf 2000ms hochgesetzt. Als Characterset habe ich auf Anraten eines Kollegen US-ASCII eingestellt, damit die Antwort des Modems wahrscheinlich eher lesbar sein wird.

    Ich hatte schon am Sonntag einige Macrotasten mit Befehlssequenzen programmiert. "Mycall" hatte ich zwar schon bei der Windows-Installation eingetragen, teilweise als Hex-Code, teilweise als Text. Zwischen den beiden Modes lässt sich im Macro-Editor ja schön hin und her schalterten und die Eintragungen werden auch jeweils konvertiert, sodass man sich eigentlich die korrekten Sequenzen und Codes zusammenstellen können müsste *(siehe letzte Absatz).

    Aber ich habe die programmierte Mycall-Sequenz nochmals vom Tablet über das Terminal an das Modem geschickt, von der Macrotaste aus. Für ESC hatte ich 1b eingetragen, abgeschlossen habe ich die Sequenz mit 0d für CR, stand so im Manual.


    Und siehe da: Das Modem (der TNC) meckert fast gar nicht mehr. Es meldet sich mit einem Punkt zurück - aber leider wird am Modem die PTT-LED kurzzeitig aktiv. :( Das Modem scheint wohl die Sequenz auszusenden, also weiterhin NICHT als Befehlszeile zu akzeptieren, so interpretiere ich das. Vor der Windows-Installation war das nicht der Fall, weil noch kein Rufzeichen eingetragen war. Aber jetzt wird alles, was kein Befehl ist, ausgesendet.


    Aus Interesse habe ich den OTG-Adapter nochmal gegen den Hub getauscht und das Modem lässt sich auch jetzt connecten und bleibt auch connected. Das ist etwas verwirrend, finde ich, weil ich da (noch) keinen Zusammenhang erkennen kann.


    Also, das Modem funktioniert wohl, aber ich habe es (wohl) immer noch nicht mit einer Befehlssequenz erreicht - ächz! :/

    Ich habe dann versucht, entgegen dem Manual, die im Macro programmierte Sequenz mit CR + LF abzuschließen. Das hat natürlich nicht funktioniert...


    73 Andy

    Einmal editiert, zuletzt von DH5AK ()

  • Schickst Du ESC getrennt vom eigentlichen Befehl oder alles in einem Rutsch ?? Mein bisheriger TNC1 (abgeraucht) und der PK232 kriegen erst den Tastaturbefehl für Cmd-Mode und melden sich dann mit cmd: und ich gebe dann erst das Command ein. Der TNC bleibt im cmd-Mode und muß erst wieder per Converse-Befehl in den "Dialog"-Modus (send/receive) geschickt werden.


    Ich mag jetzt nicht nachlesen, prüf das mal. Ich hatte früher ein super Tool unter DOS bzw. OS/2 DOS-Box, der direkt die ganzen Signale und Daten an der COMx Schnittstelle anzeigte. War sehr hilfreich. Jetzt mit USB/COMx ist es nicht einfacher geworden, weil der USB-Treiber mit rein spukt.


    Es könnte sein, daß der FTDI-Treiber mit dem Hub nicht klar kommt. Ich nutze nur USB/COMx direkt am PC. Möglicherweise verändert der Hub auch die COM Nummer - hast Du mal im Device-Manager geschaut, ob Du in beiden Fällen die gleiche COMx kriegst ?? Die wird u.a. in der Config und/oder Firmware gespeichert, nicht nur im Win10 und dann haut es beim Umstecken u.U. nicht mehr hin. Der HUB verändert auf jeden Fall zum Win die USB-Schnittstelle selber und nimmt evtl. eine neue COMx.


    73 Peter

  • Hallo Peter,


    ich habe inzwischen auch versucht, die Befehlssequenz mit CTRL-C zu starten, aber das ebenso keinen Effekt und steht so auch nicht im Handbuch vom TNC. ESC soll dem String vorangestellt werden, CR soll ihn abschließen.


    Ich will den TNC ja vom Android-Tablet her ansprechen, das ist der Grund für dieses Experiment. Wahrscheinlich gibt es auch unter Android soetwas wie einen Device-Manager. Aber auch mit dem (passiven) OTG-Adapter ändert sich nichts: Der TNC versteht die von der Terminal-App übertragene Befehlszeile nicht als solche. Auf den geforderten ESC-Befehl reagiert er nicht, er sendet ihn einfach aus, wie er das auch mit allen anderen Strings tut, selbst wenn die mit ESC (Hex 1B) beginnen.


    Aber die Kommunikation vom TNC zum Tablet funktioniert offensichtlich gut. Hier ein Screenshot. Nach dem Einschalten der Stromversorgung zum TNC meldet sich dieser...

    73 Andy

  • Bin nun doch ein Stück weiter gekommen. Es hat auch etwas mit der Zeit zu tun - mit der zeitlichen Abfolge:


    Wenn ich direkt nach dem der TNC aufgewacht ist, den String


    ESC Idh5sk CR


    an den TNC schicke, antwortet der mit


    *Idh5ak


    Mit dem Befehl I (großes i) schreibe ich mein Rufzeichen in das betreffende Register des TNC. Der TNC akzeptiert das also und antwortet mir mit einem vorangestellten * (als Prompt, wer kennt das Wort noch?, hi) und wiederholt den String, der bei ihm eingegangen ist.

    Alles was danach als Befehl kommt, wird als Text interpretiert, der ausgesendet wird. Dann ist dort als Prompt ein . (Punkt).


    Ich vermute, dass ich also direkt nach dem Einschalten der Stromversorgung des TNC einen Befehlsstring schicken müsste, der für die gewünschte Betriebsart ALLE Befehle umfasst, mit Hex 1b anfängt und mit Hex 0a endet. Alle weiteren Befehle werden als Text aufgefasst und daher ausgesendet.


    Aber wie trenne ich in dem String die Befehle untereinander??? Das steht nicht im Handbuch.


    Das könnte dann die Lösung des Problems sein. Nicht so schön, wie ich das gedacht hatte, aber vielleicht doch ein gangbarer Weg.


    Aus dem Text-Modus gibt es nach meiner jetzigen Erkenntnis nur den Weg, wieder zur Befehlseingabe zu gelangen, den TNC neu booten zu lassen, Strom aus, Strom an und neue Befehle laden.

    Peter: Ist es das, was Du mit den nachträglich eingebauten Schaltern erreichen wolltest?


    73 Andy

    3 Mal editiert, zuletzt von DH5AK ()