TekTerminal für TTgo-VGA32 nicht compilierbar

  • Nachdem ich schon Anfang des Jahres mir 2 TTgo-VGA32 V1.4 besorgt habe, bin ich nun zur Tat geschritten und habe das TektronixFabGLTerminal.ino compilieren wollen. Die Einrichtung der IDE entsprechend dem readme war etwas holprig, es ist das erste mal, das ich mich so intensiv mit der Arduino-IDE einlasse. Aber letztlich war dann alles soweit für die Übersetzung.


    Installiert sind die Bibliotheken FabGL-1.0.2 & FreeRTOS-10.4.3-8. Der erste Run mit 'Überprüfen/Kompilieren' wirft dann leider ein gutes Dutzend Fehlermeldungen auf den Schirm. Versuche mit Fabgl-1.0.0 & -1.0.1 ergeben die gleichen Fehlermeldungen. An FreeRTOS in älteren Versionen habe ich mich nicht mehr versucht. Als Hardware ist ESP32_Pico_Kit (hatte auch ESP32_Dev_Module probiert) ausgewählt. Hat aber keine Besserung gebracht.


    Die Fehlermeldungen im Anhang. Vielleicht kann sich Martin das einmal ansehen, ich komme da nicht weiter.


    Fehlermeldung_Compilerlauf_TEKTERM.txt

  • hhmmm, unter Linux findet sich nur ein Ordner ~/.arduino15/cache (kein build oder so), dessen Inhalt habe ich einmal gelöscht, ändert aber nichts - die Fehlermeldungen bleiben. Ansonsten kann ich nirgendwo weiter was verdächtiges finden. Die Linux-Version der Arduino-IDE könnte sich durchaus in dieser Sache anders verhalten. Ich hatte mitguidol schon konferiert, er konnte mein Problem mit den aktuellen Bibliotheken zumindest reproduzieren. Deshalb gehe ich davon aus, das dass Problem echt ist. Meine C(++)-Kenntnisse sind so minimal, das ich hier nur auf gut Glück hacken könnte, mit sehr geringen Erfolgsaussichten. Trotzdem Danke für den Hinweis, jeder Versuch zählt.

  • weil sich die FabGL-Software so häufig ändert habe ich da nur lose mitgekoppelt und nicht jede neue Version installiert.

    Aus den Fehlermeldungen sehe ich erstmal nur, dass offensichtlich mache Klassen und Funktionen nicht mehr existieren. Leider sind die FabGL Bibliotheken hinter den Kulissen nicht sehr gut strukturiert und nicht für leichte Erweiterung um neue Terminaltypen ausgelegt. Schön wäre es, wenn es eine Basisklasse gäbe, von der man dann neue Terminaltypen mit neune Escape-Sequenzen ableiten könnte. Das ist aber alles irgendwie zusammengewurstelt. Alles mit tollen Funktionalitäten, aber eben doch recht speziell.


    Ich hatte damals ein paar Änderungen in den Basisklassen machen müssen (hauptsächlich die private/public Sichtbarkeit betreffend), die ich aber nicht direkt in Fabrizio's Originalquellen integrieren wollte. Die Änderungen hatte ich ihm mitgeteilt, er hat sie aber nicht aufgegriffen.


    Ich habe mir aber gerade die heutige Version heruntergeladen und schaue mal, ob ich die Tektronix-Emulation dort wieder hineinbekomme. Das kann aber ein paar Tage dauern.


    Martin

  • Hallo Martin,

    vielen Dank für Deine Erklärungen, der Teufel scheint sehr im Detail zu stecken - damit habe ich nicht gerechnet. Ich hatte schon länger nach einer Terminal-Emulation mit Grafik-Möglichkeiten gesucht und war deshalb sehr davon angetan, als mir das TekTerm auf dem TTgo_VGA32 über den Weg lief. Sollte Dir die Integration noch einmal gelingen, ist es wohl in Anbetracht der Probleme angeraten, sich alle beteiligten (und zusammenpassenden) Softwarepakete zu archivieren, sollte eine Neuinstalation wegen defekter/neuer Hardware anstehen. Ich drück' schon mal die Daumen für's gelingen. :thumbup::thumbup:


    Gruß

    Kurt

  • Ich hatte schon länger nach einer Terminal-Emulation mit Grafik-Möglichkeiten gesucht und war deshalb sehr davon angetan, als mir das TekTerm auf dem TTgo_VGA32 über den Weg lief.

    Wenn es "nur" um Grafikfaehigkeiten geht.... das FabGL-Terminal haelt da auch einige Funktionen bereit
    ueber spezielle Esacpe-Sequenzen

  • Es hat mir keine Ruhe gelassen und ich habe mir mal die neuen Quellen heruntergeladen.

    Es war doch weniger Aufwand als befürchtet.

    Nach ein paar ganz kleinen Anpassungen kann ich die Skizze kompilieren und flashen, habe das aber nicht getestet, da ich die komplette Hardware gerade nicht aufgebaut habe.


    Hier die geänderten bzw. zugefügten Dateien (in /src) und die .ino Skizze (in /TektronixFabGLTerminal):

    FABGL+Tektronix.zip


    In den geänderten terminal Quellen habe ich mit // -MH- Kommentaren gekennzeichnet, was ich dort gegenüber dem offiziellen Archiv geändert habe.

    Kann aber keine Garantie dafür übernehmen und es kann sein, dass bei der Ausführung ein Sack Reis in China umfällt.


    Martin

  • ... eine kleine Ergänzung noch in der Datei tekterminal.cpp, die die Ausgabe der neuen FabGL spezifischen Escape-Sequenzen beim Start unterdrückt. Damit sollte dann beim booten grüner Text auf schwarzem Hintergrund erscheinen und keine "..$..$" Sequenzen mehr.


    Allerdings kann ich auch mit der neuen Bibliothek weiterhin nur 640 x 350 als Auflösung realisieren, alle höheren Einstellungen erzeugen kein Bildsignal, das meine TFTs erkennen.

    Es sind ja "modelines" bis zu sehr hohen Auflösungen definiert (800x600 wäre ja schön), aber ich sehe nicht. wie das mit dem auf dem TTGO board installierten ESP chip und dem Speicher gehen soll.


    Das mit den FabGL-spezfischen Escape-Sequenzen ist einerseits ganz nett, aber es gibt andereseits keine Standardsoftware aus der CP/M Zeit, die diese nutzt. Da war ja bestenfalls GSX als Standard verfügbar. "Man" könnte aber einen GSX Treiber für die FabGL Terminalemulation schreiben, der dann im Gegensatz zu Tektronix auch Farben unterstützen könnte.


    Martin

  • guidol Danke für den link - sehr hilfreich.

    Martin Irgend etwas mache ich hier falsch, ich habe schon wieder reichlich Fehlermeldungen. In Deinem letzten Archiv ist die terminal.cpp nicht enthalten, ist das richtig so ? Im readme steht, das alle 4 (terminal.* & tekterminal.*) ins ~/arduino/libraries/FabGL/src Verzeichnis sollen (und die alten sichern). Ist doch richtig ?


    Die Arduino-IDE ist ok, eine Probe-Compilierung des ANSI-Terminals läuft einwandfrei durch. Der Cache in ~/.aduino15/cache ist leer, Guidol hatte da von unschönen Erfahrungen im Forum berichtet.


    die Hardware steckt zwar schon im Gehäuse, ich muß jedoch mit dem Scope nochmal die abgehende RS232-Schnittstelle überprüfen. Da kommt noch nichts raus (mit ANSI-Terminal).



    Fehlermeldungen_neues_TekTerm_20210513_0.txt

  • Allerdings kann ich auch mit der neuen Bibliothek weiterhin nur 640 x 350 als Auflösung realisieren, alle höheren Einstellungen erzeugen kein Bildsignal, das meine TFTs erkennen.

    Du koenntest 640*480 probieren - wie ich in RunCPM mit:



    Code
    fabgl::VGA16Controller DisplayController;
    fabgl::Terminal          Terminal;
    
    DisplayController.begin(); //default
    DisplayController.setResolution(VGA_640x480_60Hz);
    
    Terminal.begin(&DisplayController);


    VGA16Controller gab es erst nach (FabGL v0.9 - August 2020) der Erstellung Deiner ersten Version (July 2020) mit FabGl v0.8 (aus Dec 2019)



    Ich kann es gerade nicht kompilieren, da ich auf dem GANZ aktuellen Stand der FabGL aus dem master.zip der github-seite vom 10.05.2021 bin.

    Ich gehe mal davon aus, dass Deine FabGL Library (nach dem "mal die neuen Quellen heruntergeladen" in der Arduino IDE "noch" die aktuelle Release v1.0.2 (Jan 2021) ist? (wobei ich mit der noch die Fehler wie kmg beim compilieren bekomme)

    2 Mal editiert, zuletzt von guidol ()

  • Sodele ich habe mal den alten "TEKTERM.ZIP" Sourcecode genommen und als FabGL die ALTE v0.8 installiert, die zum Zeitpunkt der alten TEKTERM Version aktuell war.


    Damit lies es sich dann compilieren ;) (die alte Version).

    (d.h wenn kmg mit dem Library Manager die aktuelle v1.0.2 deinstalliert und die v0.8 installiert, sollte er die alten Sourcen compilieren koennen und auch anpassen.... ist aber in den FabGL Moeglichkeiten auch auf v0.8 beschraenkt :( )


    Zur Sicherung habe ich mal Log-file und die Binarys (die man so auch flashen koennte) eingepackt.


    Wenn Martin Hepperle seinen neuen Code fuer eine neue FabGL gemacht hat und der kompilierbar ist, kann er auch den neuen VGA16Controller nutzen und damit auch 640*480 auf dem Monitor (und evtl. andere neuere Aufloesungen).

  • ... o.k., ich habe mal das "VGAController" Objekt durch ein "VGA16Controller" Objekt ersetzt und damit kann ich tatsächlich die höheren Auflösungen (nur 640x480 probiert) erreichen. Das ist schon mal schön - Danke für den Tipp. Die Dokumentation hat mir das leider nicht wirklich verraten.


    Mit der FabGL Bibliothek habe ich wohl zwischen meinen nun 3 verschiedenen Arduino-Umgebungen vertan.

    Da ich diverse alte und neue Arduino Projekte habe, kann sollen manche auf der entsprechenden alten Umgebung eingefroren bleiben. Mit System- und lokalen Libraries ist das Ganze inzwischen recht unübersichtlich.

    Ich hatte mir gestern die aktuelle Version als *.zip heruntergeladen, aber wohl in den falschen Arduino-Baum integriert. Mal sehen, ob ich zum Wochenende dazu komme, das nochmal zu aktualisieren.


    Ansonsten sind natürlich wie Guido schon sagte, die FabGL-spezifischen Escape-Sequenzen auch eine Möglichkeit, sogar Farbgrafik zu machen. Sind halt leider an keinen Standard angelehnt.


    Martin

  • ... o.k., ich habe mal das "VGAController" Objekt durch ein "VGA16Controller" Objekt ersetzt und damit kann ich tatsächlich die höheren Auflösungen (nur 640x480 probiert) erreichen. Das ist schon mal schön - Danke für den Tipp. Die Dokumentation hat mir das leider nicht wirklich verraten.

    Wie geschrieben - die damals von Dir genutzte v0.8 der FabGL kannte dies noch nicht.

    Verraten haette Dir dies evtl. die Release-Note der v0.9 (und groesser) auf Releases-Seite in GitHub

    Die Dokumentation finde ich gegen andere Projekte schon richtig gut, wenn man weiss, dass es eine eigene Seite gibt ;)

    Die Suchfunktion fuer die Keywoerter (wie z.B. VGA16Controller oder VGATextController) liefern gute Info und Syntax.

    Weiterhin fuehrt die Suche auch zur Syntax in den dort auch aufgefuehreten Examples.
    Fuers Terminal lohnt sich ein Blick in die Examples der ANSI, Text, Network-Ternminals.

    Wenn Du nur Text brauchst ist auch der VGATextController gut, da er mehr Zeilen(32?) liefert - aber weniger Text-Attribute oder Fonts.


    Um zu sehen was die Examples machen, lohnt auch immer ein Blick in seinen YT-Kanal

  • Mit der FabGL Bibliothek habe ich wohl zwischen meinen nun 3 verschiedenen Arduino-Umgebungen vertan.

    Also, mit der FabGL-0.8 und meiner Arduino-IDE-V1.8.9 (Linux) schmeißt der Compiler Fehlermeldungen auf den Schirm, sowas wie "multiple definitions...". Ich habe den Fehlerscreen nicht kopiert - jedenfalls ist da mit meiner Arduino-Installation scheinbar nichts zu machen.

    Wenn Du nur Text brauchst ist auch der VGATextController gut, da er mehr Zeilen(32?) liefert - aber weniger Text-Attribute oder Fonts.

    Das werde ich für den Anfang ins Auge fassen, denn neben dem Terminal-Thema ist da auch noch der Hardware-Handshake beim Multicomp. Mittels Google habe ich den Verdrahtungsplan für ein Null-Modem-Kabel mit Handshake-Loopback gefunden. Werde also jetzt ersteinmal das Kabel zusammenlöten und testen - schaun 'mer mal, es regnet ohnehin grad' wieder...


    Null-Modem-Kabel_m_Hardware-Handshake-Loopback.pdf

  • Zur Sicherung habe ich mal Log-file und die Binarys (die man so auch flashen koennte) eingepackt.

    in dem Binary hat sich ein "Anzeige-Fehler" eingeschlichen :(
    Da steht in der Bildschirmhilfe, man soll RX an Pin 12 anschliessen, der Source verbindet aber schon richtig zu Pin 14 als RX.
    Baudrate ist im alten Binary 9600 Baud (Standard von Martin Hepperle )

    Ich habe kmg nun eine Version mit 115200 Baud compiliert und den falschen Text verbessert auf Pin14.

    Wenn er es getestet hat, habe ich ihn darum gebeten die Version hier einzustellen.

    Ist bei mir ein hin und her beim Arduino kompilieren zwischen FabGL 0.8/1.0.2/aktuellem master.zip :)

  • So, noch schnell die aktualisierte Version (von Guidol) geflasht und ausprobiert - löppt ! Ich habe alle *.bin files in einen Ordner 'bin' verschoben und noch zusätzlich ein Script für's flashen (Linux) sowie das 'esptool.py' hinzugefügt. So sind Doku und Daten schön getrennt. Windows-Nutzer müssen sich die Kommandozeile aus dem Arduino-Flash-Log (von Guidol) im bin-Ordner entsprechend extrahieren. Da ich die Richtigkeit der Extraktion nicht kontrollieren kann (mangels Windows), habe ich dem nicht vorgegriffen. Der Datenteil (bin-files) steht nämlich etwas abseits der Kommandozeile. Wie der Teil anzuhängen wäre übersehe ich nicht zweifelsfrei.


    TektronixFabGL_RX14_115200_w_flash-script.zip