HP-GL Interpreter

Software-Entwicklung, Compiler, Interpreter, ...
Benutzeravatar
bbock
Beiträge: 242
Registriert: 08.02.2015, 15:31

HP-GL Interpreter

Beitrag von bbock »

Hallo Joyce-Freunde,

heute möchte ich euch mein jüngstes Projekt vorstellen: einen HP-GL-Interpreter für die Joyce. HP-GL steht für "Hewlett Packard Graphics Language"; das ist eine Sprache für die Steuerung von Plottern, wird aber auch z.B. für CNC-Maschinen zum Fräsen oder Gravieren eingesetzt. Die HPGL-Dateien haben oft die Endung ".plt" (für "plot"). Es handelt sich um gewöhnliche Textdateien mit einem relativ einfachen Aufbau. Die HP-GL-Befehle beginnen mit einem Code ("Mnemonic") aus zwei Großbuchstaben, dann können ein oder mehrere Parameter folgen, z.B. Stiftnummern, Farbcodes oder X-/Y-Koordinaten zur Stiftpositionierung.

Beispiele:
IN; Initialize = Plot Job beginnen
PU50,50; pen up = Stift anheben und zur Koordinate 50,50 bewegen
PD100,0,100,100,0,100,0,0; pen down = Stift absenken und zu den Koordinaten 100,0, dann 100,100, dann 0,100 und schließlich zu 0,0 bewegen (zeichnet ein Quadrat mit der Kantenlänge 100)

Das Semikolon schließt jeden Befehl ab. Trennsymbole können neben dem Komma auch Leerzeichen oder andere Whitespaces sein. Weitere Details zur Sprache finden man u.a. hier: https://en.wikipedia.org/wiki/HP-GL
Benutzeravatar
bbock
Beiträge: 242
Registriert: 08.02.2015, 15:31

HP-GL Interpreter

Beitrag von bbock »

Die Befehle zum Zeichnen von Linien, Ellipsen, usw. erzeugen also ein Bild auf Papier oder in Holz oder Metall gefräst; dieses Bild kann man aber auch auf einem Computermonitor ausgeben. Dazu muss der Interpreter die HP-GL-Befehle in Zeichenbefehle umwandeln, dann kann man die Bildentstehung auf dem Monitor bewundern.
Die erste Version meines HP-GL Interpreters unterstützt nur einen Teil der möglichen Befehle, insbesondere diejenigen zum Positionieren und zum Zeichnen von Linien. Verschiedene Farben werden nicht unterstützt, auch keine Strichdicken oder verschiedene Stifte. Trotzdem kann man bereits viele plt-Dateien ansehnlich auf dem Bildschirm darstellen.
HPGL.zip
HP-GL Interpreter und PLT-Dateien
(171.84 KiB) 1181-mal heruntergeladen
Weitere Details zur Programmierung und erweiterte Programmversionen folgen demnächst.
wnb
Beiträge: 60
Registriert: 06.03.2015, 12:16
Wohnort: Werner aus Wolfhagen

Re: HP-GL Interpreter

Beitrag von wnb »

Moin Bernd,
habe mir die Dateien heruntergeladen und es macht echt Spaß,
dem JOYCE beim Plotten zuzuschauen - Danke dass Du uns teilhaben lässt !
Freue mich schon auf die Erweiterungen, die Du beim Klubtreffen angekündigt hast.
VG Werner
Benutzeravatar
bbock
Beiträge: 242
Registriert: 08.02.2015, 15:31

Re: HP-GL Interpreter

Beitrag von bbock »

Z.Z. arbeite ich an einer automatischen Skalierung auf max. Bildschirmgröße. Die Koordinatenumrechnung ist komplizierter, als man denkt...
Dazu muss das Parsing zweimal durchlaufen werden: beim ersten Durchgang werden die maximalen und minimalen Koordinaten bestimmt, im zweiten wird bildschirmfüllend gezeichnet.

Später möchte ich noch die Möglichkeit einbauen das fertige Bild als Bilddatei zu speichern. Dann vielleicht noch eine Kommandozeilenoption zur Batch-Verarbeitung.

Es gibt viel zu tun!

Viele Grüße
Bernd
wnb
Beiträge: 60
Registriert: 06.03.2015, 12:16
Wohnort: Werner aus Wolfhagen

Re: HP-GL Interpreter

Beitrag von wnb »

Habe `mal vier JOYCiE Cliparts in Plotter-Dateien umgewandelt. War etwas zeitaufwendig, mußte die original Dateien mehrfach 'verformen' und ausprobieren, um Sie ansehnlich auf dem JOYCE-Bildschirm plotten lassen zu können. Nachfolgend vom JOYCE-Bildschirm abfotographiert, der xMAS-JOYCiE. Wenn Du die automatische Skalierung implementiert hast, werde ich die JOYCiE-Vorlagen noch einmal nacharbeiten und neue Plotterdateien erstellen. Bis dahin hier schon `mal die JOYCiE-Plotter Dateien zum Download ...
PLT_pcw.zip
(139.16 KiB) 1158-mal heruntergeladen
JOYCiE
JOYCiE
xMAS_PLT_kl.jpg (44.16 KiB) 40662 mal betrachtet
...
Benutzeravatar
bbock
Beiträge: 242
Registriert: 08.02.2015, 15:31

Re: HP-GL Interpreter

Beitrag von bbock »

Die Grafiken sind ja wirklich hübsch, und sie machen auch auf dem grünen Bildschirm richtig was her! :D

Hier kommt die nächste Version des HPGL Interpreters. Die PLT-Datei wird zweimal geladen. Beim ersten Durchlauf werden die minimalen und maximalen Koordinaten bestimmt, die in der Datei verwendet werden. Im zweiten Durchlauf wird die Skalierung aufgrund dieser Werte berechnet und die Grafik bildschirmfüllend gezeichnet.

Die Skalierung war schon etwas knifflig, weil für eine verzerrungsfreie Darstellung neben der Koordinatenumrechnung auch noch die Form der Pixel beachtet werden musste, denn die sind bei der Joyce nicht quadratisch! Der Bildschirm hat das Format 4:3 bei einer Auflösung von 720x256 Bildpunkten. 720 / 256 ist aber nicht 4 / 3, also ist die sog. "pixel aspect ratio" nicht 1 (das wäre sie bei quadratischen Pixeln).

Ich werde demnächst noch näher auf die Details eingehen; hier kommt erst einmal das neue Programm:
(gelöscht)
Benutzeravatar
bbock
Beiträge: 242
Registriert: 08.02.2015, 15:31

Re: HP-GL Interpreter

Beitrag von bbock »

Die Version aus dem letzten Beitrag hatte Probleme mit negativen Koordinaten; die aktuelle Version 2.1 behebt das. Einen bekannter Fehler ist die falsche Skalierung von Bildern im Querformat; das behebe ich demnächst - bevor neue Features hinzukommen.

Hier der Source Code und das ausführbare COM-Programm:
hpgl21.zip
Pascal Source Code und COM-Datei
(11.58 KiB) 1055-mal heruntergeladen
Probiert doch mal die Datei RITTER3.PLT aus. Sie wird jetzt korrekt dargestellt.
Benutzeravatar
bbock
Beiträge: 242
Registriert: 08.02.2015, 15:31

Re: HP-GL Interpreter

Beitrag von bbock »

Es wird langsam. :)
Die Version 2.2 skaliert das Querformat jetzt korrekt. Außerdem werden die Skalierungsinformationen schöner ausgegeben und man kann den Dateinamen in der Kommandozeile übergeben, z.B.:

Code: Alles auswählen

B>hpgl22 girl2.plt
hpgl22.zip
Source Code und COM-Datei Version 2.2
(11.61 KiB) 1161-mal heruntergeladen
kurt
Beiträge: 163
Registriert: 26.10.2019, 20:11

Re: HP-GL Interpreter

Beitrag von kurt »

Hallo,
tolle Sache dein HP-GL-Intrpreter. Da habe ich doch gleich einen neuen Projekt-Punkt fuer meine Multicomp xgraph Bibliothek: die Funktionsaufrufe von C nach PASCAL portieren oder besser Dein Programm nach C. Da koennten sich ganz neue Anwendungsmoeglichkeiten ergeben. Da ich aber weder PASCAL noch C Spezialist bin, muss ich mir das noch einmal genauer ansehen. Die Gleikomma-Rechnungen koennten zum Problem werden, der von mir benutzte C-Compiler kann nur Integer16. Vielleicht kann man das entschaerfen...


Gruß
Kurt
Benutzeravatar
bbock
Beiträge: 242
Registriert: 08.02.2015, 15:31

Re: HP-GL Interpreter

Beitrag von bbock »

Hallo Kurt,
wo kann man denn etwas über deine „Multicomp xgraph Bibliothek“ finden?
Was die Gleitkomma-Operationen angeht: das wird schwierig, denn die werden für die Skalierung und die Koordinatenumrechnung gebraucht. Ich könnte mir vorstellen, dass man mit Bruchrechnung weiterkommt, wobei Zähler und Nenner in Integers gespeichert werden.
Antworten