Forum: Mikrocontroller und Digitale Elektronik suche vt100 Terminal auf android über USB zu uC


von Karl (charley_a)


Lesenswert?

Hallo,
ich bin auf der Suche nach einem Terminalprogramm das VT100-Kommandos 
versteht, auf Android läuft und über USB und FTDI-Chip mit einem 
Microcontroller spricht.
Auf dem PC geht das perfekt mit Teraterm.
Ich habe da diverse AT_mega-Anwendungen, die komplett embedded laufen, 
und nur zur Inbetriebnahme einige Parameter einzustellen haben. Da 
rentiert sich kein eigenes Windows-Gui auf dem PC, das man dann auch 
noch versionskompatibel mitpflegen muss. Aber direkt über Kommandozeile 
eingeben ist doch zu umständlich.
Drum hab ich da vor vielen Jahren mal so eine semigraphische Oberfläche 
geschrieben, die kaum Speicher braucht und auf der 
Microcontrollerapplikation mit läuft. Und die läuft halt über 
VT100-Kommandos.
Die Kommunikation zwischen Handy und AT-Mega funktioniert schon, nur 
mein Terminal versteht halt keine ESC-Sequenzen.
Ich weiß, es ist uralt-Zeugs, aber wäre halt schön, wenn man nicht immer 
das Notebook mitschleppen müsste und einfach das Handy anstöpseln 
könnte.
Hat da jemand einen heißen Tipp?

von Gerd E. (robberknight)


Lesenswert?

Als Programm würde z.B. picocom unter Termux funktionieren.

Aber das Problem ist vermutlich:

Karl schrieb:
> auf Android läuft und über USB und FTDI-Chip mit einem

Für den FTDI-Chip brauchst Du ein Android-ROM was den passenden 
Kerneltreiber für FTDI enthält.

Wenn Du Dir nen Lineage etc. selbst baust kein Problem, wenn das Android 
vom Gerätehersteller kommt habe ich so meine Zweifel ob das mit 
einkompliert ist.

von Jobst M. (jobstens-de)


Lesenswert?

Gerd E. schrieb:
> Für den FTDI-Chip brauchst Du ein Android-ROM was den passenden
> Kerneltreiber für FTDI enthält.

Wieso sollten sie nicht dabei sein?
Nicht nur die Sensoren unserer Firma nutzen diese (und auch andere) 
Bridges für die Verbindung mit der dazugehörigen App. Bisher ist mir 
kein Android-Handy bekannt, mit dem das nicht gehen würde.

Gruß
Jobst

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Bin nicht sicher ob es VT100 unterstützt aber grundsätzlich funktioniert 
diese App sehr gut unter jedem Android:

https://play.google.com/store/apps/details?id=de.kai_morich.serial_usb_terminal

Gerd E. schrieb:
> Für den FTDI-Chip brauchst Du ein Android-ROM was den passenden
> Kerneltreiber für FTDI enthält.

Jobst M. schrieb:
> Wieso sollten sie nicht dabei sein?

Weil der Smartphone -Hersteller die Treiber nicht mitkompiliert hat. Und 
selbst wenn, bekommen normale Apps keinen Zugriff auf /dev/ttyUSB etc.

Macht aber nichts, o.g. App greift direkt auf das USB-Gerät zu über das 
US Manager API von Android, und implementiert die FTDI Treiber im 
Userspace über diese Library: 
https://github.com/mik3y/usb-serial-for-android . Dadurch ist es völlig 
egal welche Treiber im Kernel mitgeliefert sind.

Jobst M. schrieb:
> Nicht nur die Sensoren unserer Firma nutzen diese (und auch andere)
> Bridges für die Verbindung mit der dazugehörigen App

Wie greift die App auf die serielle Schnittstelle zu? 
open("/dev/ttyUSB...") geht IIRC nicht (im Allgemeinen).

: Bearbeitet durch User
von Harald K. (kirnbichler)


Lesenswert?

Niklas G. schrieb:
> Bin nicht sicher ob es VT100 unterstützt

Ziemlich sicher nicht, da steht

"'Serial USB Terminal' ist ein zeilenorientiertes Terminal Programm"

Das ist also genausowenig ein Terminalprogramm wie es "hterm" ist, 
sondern nur ein serieller Monitor mit der Möglichkeit, komplette 
Zeichenketten an die Gegenstelle zu senden.

Ein Terminalprogramm emuliert ein Terminal (wie eben vt100) und sendet 
daher jeden einzelnen Tastendruck unmittelbar an die Gegenseite, denn 
anders ist so etwas wie z.B. vi oder ein beliebiger anderer Editor über 
die serielle Verbindung nicht verwendbar.

Durch die modische Verwässerung und Neudefinition etablierter Begriffe 
wie z.B. "Terminal" wird das natürlich immer unverständlicher.

Ein Terminal ist ein Stück Hardware, das ist ein (kleiner) Computer mit 
Bildschirm und Tastatur, der über eine serielle Schnittstelle mit 
irgendeinem Gegenstück kommuniziert. Das Terminal sendet Tastendrücke an 
die Gegenstelle, und empfängt Steuerkommandos von dieser, die die 
Bildschirmausgabe steuern. Verbreitet ist da der VT100-Befehlssatz, es 
gab aber auch viele andere Terminals (vt52, tvi950 etc. pp.)

Terminalprogramme unter Windows sind so etwas wie Hyperterminal (war 
früher mal im Lieferumfang von Windows enthalten), Teraterm oder auch 
putty.

Das hier wäre ein Terminalprogramm für Android:

https://www.kanda.com/sena-bterm-android.php

allerdings fehlt da die USB-Unterstützung, das möchte gerne via BT 
kommunizieren.

von Bauform B. (bauformb)


Lesenswert?

Harald K. schrieb:
> Das hier wäre ein Terminalprogramm für Android:
>
> https://www.kanda.com/sena-bterm-android.php
>
> allerdings fehlt da die USB-Unterstützung, das möchte gerne via BT
> kommunizieren.

Das wäre ja noch viel komfortabler, es gibt ja BT<->Seriell Konverter 
mit Batteriebetrieb oder 9 bis 36 Volt für Tragschiene oder HC0x oder...

Gibt es so Programm vielleicht auch für iOS?

: Bearbeitet durch User
von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Harald K. schrieb:
> Ziemlich sicher nicht, da steht
>
> "'Serial USB Terminal' ist ein zeilenorientiertes Terminal Programm"

Ja stimmt, es ist kein vollwertiges Terminal und kann kein VT100. Man 
könnte auf Basis der gleichen Technologie ( usb-serial-for-android 
Library ) ein VT100-Terminal implementieren, aber ob sich das lohnt...

Harald K. schrieb:
> Durch die modische Verwässerung und Neudefinition etablierter Begriffe
> wie z.B. "Terminal" wird das natürlich immer unverständlicher.

Eigentlich wäre der korrekte Begriff "Terminal emulator".

Karl schrieb:
> Die Kommunikation zwischen Handy und AT-Mega funktioniert schon, nur
> mein Terminal versteht halt keine ESC-Sequenzen.

Aus Interesse, was für ein Terminal nutzt du...?

von Karl (charley_a)


Lesenswert?

Das Programm heißt Serial USB Terminal V1.57, das funktioniert super und 
unterstützt ziemlich viele USB-Chips, aber ist halt kein echtes 
Terminal.
Aber wenn das sena-bterm vt100 emuliert, nehm ich halt das. Ob ich ein 
USB-Kabel oder einen BT-Adapter anstecke ist mir eigentlich egal. Ich 
werds mal testen.
Ich brauch was fertiges, hab keine Ahnung von Android und will mich da 
auch nicht zu weit eingraben. Bei Microcontrollern und den 
Schnittstellen drumrum fühl ich mich wohler.

von Cartman E. (cartmaneric)


Lesenswert?

Karl schrieb:

> Ich brauch was fertiges, hab keine Ahnung von Android und will mich da
> auch nicht zu weit eingraben. Bei Microcontrollern und den
> Schnittstellen drumrum fühl ich mich wohler.

Fertig gibt es z.B. die Airconsole.
Auf die kann man per Netzwerk (Ethernet, WLAN-AP/Client), oder per
Bluetooth verbinden. Dank Akku kann die auch mobil verwendet werden.
Für Android wäre z.B. der ConnectBot oder seine Forks tauglich.
Die können ganz selbstverständlich auch eine VT100-Emulation.

Ganz billig ist der Spass aber nicht.

von Harald K. (kirnbichler)


Lesenswert?

Bauform B. schrieb:
> Gibt es so Programm vielleicht auch für iOS?

Für USB-Seriell-Adapter gibt es das nicht, weil die nicht "MFI" (made 
for ios) sind.

Von Startech gibt es das hier https://www.startech.com/de-de/netrsapp, 
was eine Netzwerkverbindung zu einem Ethernet-Deviceserver voraussetzt.

Und es gibt das hier:

https://redpark.com/usb-c-serial-cable/

Das ist ein mit iOS funktionierender USB-Seriell-Adapter, aber die App 
dafür muss man sich selbst schreiben ...

(Apples Lizenzgebaren ist mehr als bizarr)

von Εrnst B. (ernst)


Lesenswert?

Evtl. reicht eine Webseite:
https://googlechromelabs.github.io/serial-terminal/
https://webserial.io/
o.Ä.

Allerdings: Wenn der USB-Seriell Treiber im Kernel fehlt, verwenden die 
das "web-serial-polyfill", was direkt auf das USB-Device zugreift, und 
den Treiber in Javascript nachimplementiert.
Momentan nur CDC-ACM, Support für FTDI, Prolific, CH340, CP210x ... 
fehlt.

Bei eigenen Devices hätte man sogar die Möglichkeit, die Webseite im 
USB-Descriptor zu verlinken. Gerät anstöpseln, Notification bestätigen, 
GUI öffnet sich im Browser und kann über WebSerial mit dem Device 
kommunizieren... Zumindest in der Theorie schick.
Inzwischen von ESP32&co überholt worden, wo der µC genug Speicher hat, 
um die ganze Webseite selber über WLan bereitzustellen.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Εrnst B. schrieb:
> Bei eigenen Devices hätte man sogar die Möglichkeit, die Webseite im
> USB-Descriptor zu verlinken

Und man hätte die Möglichkeit ganz auf Serial zu verzichten und direkt 
ein natives USB-Protokoll mit dem UsbManager zu implementieren.

Harald K. schrieb:
> (Apples Lizenzgebaren ist mehr als bizarr)

Typisch Apple halt. Wer extra Geld für einen besonders schönen goldenen 
Käfig ausgibt... 🤷‍♂️

: Bearbeitet durch User
von Karl (charley_a)


Lesenswert?

Ja also Danke für die ganzen Tips, aber ich hab gesehen, was ich suche, 
das gibts einfach nicht. Oder zumindest nicht einfach ;-)
Und nein, ich will mich nicht mit Apples Lizenzpolitik beschäftigen und 
auch keinen Webserver auf uralte Motorsteuerungen basteln.
Ich hab hier noch ein uraltes Webbook mit Win-XP, da läuft Teraterm mit 
vt100-Emulation drauf, und da kommt ein 80ct USB-RS232 Adapter dran. 
Mehr brauch ich nicht.

Ich hab gestern in einem Roboterforum gesehen, dass da einer vor 2 
Jahren genau das selbe gesucht hat und nach 5 Seiten Diskussion auch 
aufgegeben hat :-)

von Vanye R. (vanye_rijan)


Lesenswert?

> (Apples Lizenzgebaren ist mehr als bizarr)

Nicht ganz. Die Idee eine serielle Schnittstelle uber USB als virtuelle 
serielle dazustellen ist eigentlich ziemlich bizarr und fuehrte ja auch 
zu vielen Problemen wegen des gaenzlich unterschiedlichen 
Timingverhalten und den USB-Blockgroessen. Aber weil es halt erlaubt das 
Programmierer schoen doof bleiben koennen hat sich das naetuerlich stark 
verbreitet. Dafuer hat halt der eine oder andere Programmierer ein paar 
graue Haare mehr wenn er auf ein Protokoll getroffen ist das etwas 
schraeg/alt ist. .-)

Vanye

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Ich bringe mal ESPTerm [1] ins Spiel. Es entspricht zwar nicht ganz der 
gewünschten Spezifikation, ist jedoch trotzdem eine Alternative.

Das ESPTerm spricht mit der zu koppelnden Hardware über Tx und Rx des 
ESP. Die Kommunikation mit Android oder IOS oder, oder erfolgt über ein 
Web-Interface des ESPTerm. Auf der Hardware läuft echte VT102 
Kommunikation.

[1]  https://espterm.github.io/term.html

von Vanye R. (vanye_rijan)


Lesenswert?

> [1]  https://espterm.github.io/term.html

Ich sag es nur ungern, aber ziemlich cool! Fuehl ich mich gleich wieder 
wie in 1990. :-D

Vanye

von Cartman E. (cartmaneric)


Lesenswert?

Joe G. schrieb:
> Ich bringe mal ESPTerm [1] ins Spiel. Es entspricht zwar nicht ganz der
> gewünschten Spezifikation, ist jedoch trotzdem eine Alternative.
>
> Das ESPTerm spricht mit der zu koppelnden Hardware über Tx und Rx des
> ESP. Die Kommunikation mit Android oder IOS oder, oder erfolgt über ein
> Web-Interface des ESPTerm. Auf der Hardware läuft echte VT102
> Kommunikation.

Eine serielle Verbindung über ein Socket, kann ein ESP8266 schon
mit der originalen Firmware. Und das vermutlich performanter als
so ein Webgefrickel.

Von HP gab es sowas vor Jahrzehnten nämlich auch schon.
Da konnte man ein HP-Terminal als Javaapplet im Browser laufen
lassen. Das war eher eine träge Masse als ein Terminal.
Immerhin war es nur Zigarettenschachtelgross, und ersparte den
Platz für ein echtes (HP-)Terminal. Andere Emulationen waren
auch gar nicht vorgesehen...

von Jobst M. (jobstens-de)


Lesenswert?

Niklas G. schrieb:
> Jobst M. schrieb:
>> Wieso sollten sie nicht dabei sein?
>
> Weil der Smartphone -Hersteller die Treiber nicht mitkompiliert hat.

Ja, das ist eine komplexe Kausalität, welche der Ursprung der Tatsache 
zu sein scheint.

Ganz anderes Thema: Warum sollte der Hersteller die Treiber nicht 
mitkompilieren? Vor allem bei Beachtung der Tatsache, dass das eigene 
Produkt dann weniger Peripherie unterstützt als es Konkurenzprodukte 
können?


> Und
> selbst wenn, bekommen normale Apps keinen Zugriff auf /dev/ttyUSB etc.
>
> Jobst M. schrieb:
>> Nicht nur die Sensoren unserer Firma nutzen diese (und auch andere)
>> Bridges für die Verbindung mit der dazugehörigen App
>
> Wie greift die App auf die serielle Schnittstelle zu?
> open("/dev/ttyUSB...") geht IIRC nicht (im Allgemeinen).

Wie genau, weiß ich nicht mehr. Sie greift darauf zu. Ich habe vor 7 
Jahren einfach mal gegoggelt wie man das macht, ein Proof-of-concept 
geschrieben, das hat funktioniert. Und wie das Ding dort heißt, ist mir 
eigentlich auch vollkommen egal. Die dürfen auch gerne COMn: oder anders 
heißen.
Tatsache ist, dass man einfach aus Java heraus mit einer einfachen App 
ohne Klimmzüge Zugriff auf die UART-Bridges hat.


Unter Linux gibt es minicom, welches ANSI und VT100/102 unterstützt.
Für Android gibt es einen Port: microcom - Keine Ahnung, was das kann. 
Wäre aber einen Versuch wert.

Gruß
Jobst

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Jobst M. schrieb:
> Warum sollte der Hersteller die Treiber nicht mitkompilieren?

Weil Apps den Treiber sowieso nicht nutzen können und er somit sinnlos 
ist. Der einzelne FTDI Treiber ist zwar nicht groß, aber wenn man auf 
Verdacht alle Treiber mit kompiliert summiert es sich schon auf.

Jobst M. schrieb:
> Wie genau, weiß ich nicht mehr. Sie greift darauf zu. Ich habe vor 7
> Jahren einfach mal gegoggelt wie man das macht, ein Proof-of-concept
> geschrieben, das hat funktioniert

Dann funktioniert es mit aktuellen Android Versionen wahrscheinlich 
nicht mehr...

von Jobst M. (jobstens-de)


Lesenswert?

Niklas G. schrieb:
> Weil Apps den Treiber sowieso nicht nutzen können und er somit sinnlos
> ist.

Na, unsere App nutzt sie doch! (Und andere ebenso!)

> Dann funktioniert es mit aktuellen Android Versionen wahrscheinlich
> nicht mehr...

Doch, hat auch erst ein Update bekommen (Weil Goggel das so wollte)
Die Kunden kaufen und nutzen es!

Gruß
Jobst

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Jobst M. schrieb:
> Na, unsere App nutzt sie doch! (Und andere ebenso!)

Da würde mich wirklich interessieren wie das geht. Auf meinem 
Smartphones geht das nicht so. Nur mit der usb-serial-for-android 
Library, welche eben keinen Kernel Treiber nutzt.

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
Noch kein Account? Hier anmelden.