Forum: PC-Programmierung Simples Terminal mit Plot-Funktion


von Bernd K. (prof7bit)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

das ist mein erstes Posting hier (obwohl ich lesenderweise schon viel 
länger hier bin). Also kurz zu mir: Seit den 80ern versuche ich (teils 
erfolgreich) programmierbaren Rechenmaschinen meinen Willen aufzuzwingen 
(Unter Verwendung von Pascal, C, Java, Python, etc.) und oft (in letzter 
Zeit wieder öfter) sieht man mich auch mit dem Lötkolben herumfuchteln, 
manchmal sogar beruflich, dann ist meist ein AVR Tiny oder Mega 
involviert ;-)

Bislang bin ich meistens ich gut mit Bray's Terminal ausgekommen aber 
das hat seine Grenzen (die Plot-Funktion) und ich hab mich aus gegebenem 
Anlass  mal hingesetzt und eine eigene Lösung für genau dieses eine 
Problem zusammengestrickt. Der Fokus lag auch darauf daß das Programm 
nicht sofort das Handtuch wirft wenn zig kB/s aus der seriellen 
Schnittstelle purzeln und man das noch in Echtzeit plotten kann.

Das Ergebnis veröffentliche ich unter GPL-V2:

https://github.com/prof7bit/DebugTerminal

Es wirkt sehr spärlich, all die dutzenden Konfigurationsmöglichkeiten 
bezüglich Datenbits, Parität, Handshake, etc hab ich mal komplett 
weggelassen weil sie unnötig sind (ich hab schließlich volle Kontrolle 
über das andere Ende der Leitung).

Geplottet werden können bis zu 4 "Kanäle" a 16 bit, ich kann also 8 
bytes pro Sample schicken, ganz ohne darumliegendes Protokoll, einfach 
nur die nackten Daten (der Sync Button dient dazu den Datenstrom mit den 
erwarteten Kanälen in Deckung zu bringen, jedesmal klicken schiebt ihn 
ein Byte weiter). Im einfachsten Falle (1 Kanal, 8 bit) sende ich nur 
ein byte pro Sample, dann brauchts natürlich kein Sync.

Auf dem Terminal-Tab gibts noch 8 konfigurierbare Buttons die 
vordefinierte Byte-Sequenzen an das Device schicken, sowas ist mir schon 
mehrmals sehr gelegen gekommen.

Das Programm ist mit Lazarus/FPC erstellt, alle Quellen sind GPL/LGPL, 
auf der Release-Seite gibts fertige statische Binaries für Windows (32 
oder 64 bit), Linux (64 bit, wahlweise GTK2 oder Qt4 (Qt4 linkt gegen 
Qt4Pas, das muss installiert sein, die anderen laufen out-of-the-box))

-Bernd

___
EDIT: Mittlerweile (v1.4) habe ich einige Fehler beseitigt:

* Das Lesen von der seriellen Schnittstelle ist jetzt unter Windows so 
performant wie es sein soll (es gab Ruckeln und Aussetzer mit FTDI 
basierten USB/Seriell-Adaptern und deren Windows-Treibern, die mögen es 
gar nicht wenn man Bytes einzeln auslesen will, das ist jetzt behoben)

* Die Zoom- und Pan-Funktionen sind jetzt mit der Maus genauso zu 
handhaben wie man es erwartet: Linke Taste: Zoom-Rechteck aufziehen oder 
alternativ einfach am Mausrad drehen, rechte Taste zum Verschieben. Zoom 
ist jetzt nicht mehr sprunghaft sondern fließend animiert so daß das 
Auge leicht folgen kann und sorgt auch für dezentes Eye Candy, sehr 
gediegen.

* neue Screenshots oben in diesem Posting (sorry, einige sind mehrfach, 
die Forensoftware scheint ein bisschen kaputt zu sein was Bildanhänge 
angeht, man kann sie auch nicht mehr löschen)

: Bearbeitet durch User
von bal (Gast)


Lesenswert?

Hört sich gut an.
Magst du vielleicht 3,4 Screenshots hier reinstellen, damit man sich 
vorrab schon bisl was anschaun kann?

von ./. (Gast)


Lesenswert?

Teraterm hat einen Tek-Emulator an Bord.
Aber keine Ahnung wie fix man den an die Wand fahren kann.

Vorteil: Das Tek-Protokoll ist ein festgeschriebener 
(Industrie-)Standard.

von Bernd K. (prof7bit)


Angehängte Dateien:

Lesenswert?

bal schrieb:
> Hört sich gut an.
> Magst du vielleicht 3,4 Screenshots hier reinstellen, damit man sich
> vorrab schon bisl was anschaun kann?

Wenn Du auf der Github-Seite ganz runterscrollst kommen ein paar 
screenshots.

In diesem gezeigten Fall sende ich einfach zwei Bytes abwechselnd and 
das Terminal (da hängt grad ein Arduino mit nem kleinen Bastelexperiment 
dran, das gelbe ist ein Timer-Wert den ich verändere (und damit die 
Samplerate) und das blaue ein gemessener Wert vom ADC nach ner diskreten 
Fourier-Transformation).

Nicht erschrecken wegen der grünen Farbe, das ist nur mein momentanes 
Desktop-Theme.

Beim Screenshot war das Terminal im "disconnected" Modus, das Rechteck 
mit der Maus ist die manuelle Zoom-Funktion (um rauszufinden welchen 
Wert die gelbe Linie genau hat an der Stelle). Der Schieber links oben 
zoomt die X-Achse im normalen Betrieb, Y-Zoom ist automatisch. Die Werte 
auf der X-Achse sind die fortlaufende Nummer der geplotteten Samples.

: Bearbeitet durch User
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.