LxTerminal auslesen

Antworten
Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 4276
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

LxTerminal auslesen

Beitrag von af0815 »

Ich möchte den Inhalt eines LxTerminal auslesen, daher den Inhalt der sichtbar ist. Dieser wird durch eine Verbindung mit einem anderen Rechner über TCP/IP befüllt (TN5250 Emulation). Diese Verbindung kann ich nicht direkt übernehmen, da ich ansonsten alle möglichen Terminalbefehle auswerten müsst und richtig darauf reagieren. Es sind relativ einfach gehaltetene Masken die ich auswerten möchte und später dann Eingaben senden. Das ganze unter Raspbian. Alternativ wäre eine Terminalemulation in Pascal Sourcecode. Nur dazu habe ich nichts gefunden, was brauchbar erscheint.

Bildschirm hardcopy und daraus eine Mustererkennung machen, ist auch nicht die beste Lösung. Kommt man irgendwie an den Inhalt des Fensters heran ?
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Socke
Lazarusforum e. V.
Beiträge: 2799
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: LxTerminal auslesen

Beitrag von Socke »

Ich glaube nicht, dass du so einfach an den Text-Inhalt des Fenster heran kommst.
Du könntest eine Aufzeichnung mit [url0https://asciinema.org/]asciinema[/url] aufzeichnen und diese dann auswerten. Oder du schaltest ein eigenes virtuelles Terminal zwischen LxTerminal und deinem Programm.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Winni
Beiträge: 405
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.06, fpc 3.04
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: LxTerminal auslesen

Beitrag von Winni »

Hallo!

Lass Linux für Dich arbeiten. Dafür gibt es den Befehl

script

Dieser muss gestartet werden, bevor die TCP/IP Daten dort reinkommen.
script schreibt alle Daten der Konsole in eine Datei Deiner Wahl.

Für Dich passend ist

script -af /MeinVerzeichnis/MeineDatei

-a bedeutet "append" - wird an die Datei angehängt - falls vorhanden. Sonst Datei erzeugt.
-f bedeutet "flush" - nach jedem write an die Konsole werden die Daten in die Datei geflusht.

Nun kannst Du die Daten aus Deiner Datei auslesen.
Ob neue Daten anliegen musst Du mit filesize checken.

Winni

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 4276
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: LxTerminal auslesen

Beitrag von af0815 »

Danke für den Input, da muss ich mal weiter Grundlagenstudien machen.
Socke hat geschrieben:
Mo 13. Jul 2020, 13:54
Oder du schaltest ein eigenes virtuelles Terminal zwischen LxTerminal und deinem Programm.
Die Variante wäre am besten, mal sehen ob das mit Script bzw. asciinema grundlegend geht.

Irgendwo bin ich schon mal über das Pseudoterminal und Pascal gestolpert, mal sehen ob ich das wiederfinde.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

sstvmaster
Beiträge: 354
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: OS: Windows 10 | Lazarus: 2.0.8 + Fixes + Trunk 32bit
CPU-Target: 32Bit
Wohnort: Dresden

Re: LxTerminal auslesen

Beitrag von sstvmaster »

af0815 hat geschrieben:
Mo 13. Jul 2020, 16:10
Irgendwo bin ich schon mal über das Pseudoterminal und Pascal gestolpert, mal sehen ob ich das wiederfinde.
Meinst du das? https://forum.lazarus.freepascal.org/in ... ic=42830.0

Hier gibts auch ein Terminal: https://forum.lazarus.freepascal.org/in ... ic=40870.0
LG Maik

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 4276
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: LxTerminal auslesen

Beitrag von af0815 »

Ich bin mir nur nicht sicher ob vte und 5250 zusammen passen. Wie gesagt ich bin am Testen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Boris
Beiträge: 12
Registriert: Mo 1. Okt 2007, 21:57
OS, Lazarus, FPC: Linux: KDE Neon, Sparky - akt. Lazarus stable, FPC 3.0.2
CPU-Target: 32/64Bit
Wohnort: Rommerskirchen, NRW

Re: LxTerminal auslesen

Beitrag von Boris »

Hallo,

kenne das Screenscraping auf IBM 3270 sonst nur aus vba.

Aber ginge es hiermit http://x3270.bgp.nu/ nicht schneller? Ein Programm ist extra fürs scripten ausgelegt afair...

Gruß

Boris

Euklid
Lazarusforum e. V.
Beiträge: 2829
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Re: LxTerminal auslesen

Beitrag von Euklid »

af0815 hat geschrieben:
Mo 13. Jul 2020, 13:08
Ich möchte den Inhalt eines LxTerminal auslesen, daher den Inhalt der sichtbar ist. Dieser wird durch eine Verbindung mit einem anderen Rechner über TCP/IP befüllt (TN5250 Emulation). Diese Verbindung kann ich nicht direkt übernehmen, da ich ansonsten alle möglichen Terminalbefehle auswerten müsst und richtig darauf reagieren.
Hallo Andi,

ich wollte vor kurzem ebenfalls den Inhalt aus einem Terminal auslesen und bin dabei auf die Idee gekommen, das Konsolenprogramm, welches den Terminal-Output erzeugt, direkt selbst aus meiner Anwendung heraus zu starten und den Output-Stream zu lesen.
Über TProcess ist das ziemlich einfach möglich. Dazu habe ich das Verfahren gewählt, welches im folgenden Link unter der Überschrift "Reading large output" genannt wird:
https://wiki.freepascal.org/Executing_E ... rge_output

Vielleicht kannst Du diese Idee auch für Dein Problem verwenden.

Liebe Grüße vom Euklid

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 4276
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: LxTerminal auslesen

Beitrag von af0815 »

Boris hat geschrieben:
Di 14. Jul 2020, 13:30
Aber ginge es hiermit http://x3270.bgp.nu/ nicht schneller? Ein Programm ist extra fürs scripten ausgelegt afair...
EIn 3270 ist nicht mit dem 5250 ident. Das 5250 ist wesentlich umfangreicher von den Befehlen die es selbst verarbeiten kann. Ich nehme es trotzdem mal auf meine Testliste.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Boris
Beiträge: 12
Registriert: Mo 1. Okt 2007, 21:57
OS, Lazarus, FPC: Linux: KDE Neon, Sparky - akt. Lazarus stable, FPC 3.0.2
CPU-Target: 32/64Bit
Wohnort: Rommerskirchen, NRW

Re: LxTerminal auslesen

Beitrag von Boris »

Sorry, wer lesen kann ist klar im Vorteil. Hatte 3270 = 5250 gesetzt.

Da wir auf der Arbeit aber nur eine 3270er Emulation haben, kenne ich mich auch nur damit so ein wenig aus - habe ein paar Arbeitsprozesse mit Excel automatisiert (war zu faul zum tippen). Daher sah das x3270 für mich so aus, als könnte es helfen. Aber wenn ein 5250 gebraucht wird...

Lese trotzdem mal interessiert mit, man kann ja nie wissen, ob man es mal braucht :)

Antworten