Meine persönliche EAGLE CAD-Seite  

mein Eagle-Logo

User Language Programm


Die User Language (ULP) ermöglicht es auf EAGLE-Interne Daten so wie auf Dateien zuzugreifen und auch externe Programme zu starten.
Im Falle der Begrenzung der Freeware in Bezug auf die Anzahl der Schaltplanseiten und Ausdruck des Plan auf mehrere Papierseiten
unter Benutzung von Zeichnungsrahmen, kann ein ULP auch helfen an entsprechende Daten heranzukommen und daraus ein Script zu generieren
um z.B. die Seitennummerierung der Zeichnungsrahmen durchzuführen.

Weitere Infos hier (EAGLE Grenzenlos).

Generell kann mit einem ULP nur ein SCRIPT erzeugt werden, dass man an EAGLE zurück gibt exit(SCRIPT 'dateiname'); und dass dann die Änderungen vornimmt.
Man kann also mit einem ULP nicht die Daten selbst manipulieren/verändern. Es muß immer der Weg ULP - SCRIPT (EAGLE-Befehle) gegangen werden.
Man hat zwei Möglichkeiten die EAGLE-Befehle zurück zu geben..

Bei kurzen Befehlsanweisungen macht die 1. Methode Sinn. Man muß keine Datei output(Dateiname); erzeugen.
Werden längere Befehlssequenzen erzeugt, dann mach ein Script Sinn. Hier wird währen der SCRIPT-Ausführung ein Fortschrittsbalken angezeigt, der zusätzlich mit einer % Angabe
die Restlaufzeit des Script vermittelt. Das ist vor allem dann interessant wenn man Nervös ist und Eagle scheinbar nicht mehr reagiert.
So lange der Balken wächst und die % steigen, ist alles OK. Bleibt das stecken, dann hilft nur noch der Taskmanager. ;-)

Externe Programme

Funktion system();

Um ein Externes Programm zu starten muß im Quelltext des ULP die Funktion system(programmname) benutzt werden.
Soll EAGLE auf ein Ergebnis warten, reicht das, soll aber EAGLE ohne weitere Verbindung (Kontrolle des Programmablauf) weiterarbeiten können,
dann benötigt man eine BATCH (DOS-Datei) um mit CMD.EXE und der Option /C das eigentliche Programm zu starten.

Also system(name.bat);
In der Batch-Datei selbst steht dann CMD.EXE /C "programmname.exe" "startoption1" "startoption2".
Weitere Infos im Programmfenster der Eingabeaufforderung (DOSBOX) mit HELP CMD.

system() gibt an EAGLE den Fehlercode zurück dass das aufgerufene Programm zurückgegeben hat.
Mit int fehler = system(programmname); kann die Fehlernummer einer Variablen zugewiesen werden um sie dann weiter auszuwerten.
programmname kann jede .exe, .bat oder jede andere ausführbare Datei sein.

Beispiele für die Benutzung von externen Programmen mit Aufruf durch eine Batch-Datei, die entweder auf das Beenden des aufgerufenen Programm warten
oder direkt zum ULP zurückkehren und damit die Kontrolle wieder bei EAGLE ist, sind in den folgenden ULPs:

um nur ein paar Beispiele zu nennen.

Ausgabeumlenkung und Fehlerbehandlung

Programme (auch der Windows Befehlsinterpreter*) können Ausgaben und Fehler in eine Datei umlenken.
Dazu braucht es das > Umlenkungszeichen für den ertsen Kanal, wie z. B. bei DIR pfad\name > dateiname.

Damit wird die Ausgabe des DIR-Befehl in eine Datei umgelenkt, um sie anschließend nach der Rückkehr der Kontrolle zu EAGLE zu lesen
und entsprechend zu verarbeiten. Soll die Fehlerausgabe eines Programmaufruf in eine Datei umgelegt werden, dann muß dazu >> also
das Umleitungszeichen für den zweiten Kanal, den Fehler-Kanal angegeben werden.
Damit wird die Fehlerausgabe nicht an die Anzeige (DOS-BOX), sondern in die dahinter angegebene Datei ausgegeben, um sie dann ebenfalls
anschließend im ULP einzulesen und entsprechend auszuwerten.

*CMD.EXE ist der Windows Befehlsinterpreter. Alternativ kann auch die PowerShell benutzt werden.

Für Interessierte die selbst ULPs programmieren wollen, hier ein paar Tipps.


Bei Fragen: