Seit langem möchte auch ich wieder mal was zum Forum beitragen, meist lese ich ja nur... Es geht um die Ermittlung der Leitungslängen im Eagle-Router (4.x, 5.x). Da gibt es ja die Skripte /length-freq-ri.ulp/ und /length.ulp/, die es ermöglichen, die Leitungslängen aller Signale im Layout anzuzeigen. Wenn man aber intensiv Leitungspaare verlegt oder zeitkritisch routet, wird es extrem nervig, immer das Fenster aufzurufen (auch wenn das direkt auf eine Funktionstaste gelegt wird), das Signal rauszusuchen (das wird unangenehm und zeitaufwendig, wenn es mehrere Hundert sind!), sich die Länge zu merken und das Fenster wieder zuzuklickern. Weil es mich so extrem genervt hat, habe ich mal nach Möglichkeiten bei der Skriptsprache gesucht, aber da scheint es keine Möglichkeiten zu geben. Sämtliche Ausgaben sind modal, eine Art Callback bei Nutzerinteraktion gibt es auch nicht. Vielleicht habe ich ja da auch was übersehen... Letztlich kam mir aber eine bestechend einfache Idee: Bei z.B. F5 (so schön ähnlich zu Aktualisieren ;-) wird ein Skript *writelen.ulp* aufgerufen, welches die Signale und ihre Länge in eine externe Datei schreibt. Ein anderes Programm *showlengths.exe* mit einer schicken Tabelle "lauert" nun auf Änderungen im Inhalt und stellt sie dar. In /showlengths.exe/ kann man im linken Teil nun auch die wenigen Signale auswählen, die man gerade routet, und dann rechts auch noch (in der Tabelle) farbig markieren, das erhöht etwas die Übersicht. Das Programm /showlengths.exe/ habe ich selbst geschrieben (es ist natürlich virenfrei), und es darf frei verwendet werden (siehe auch "about" im Programm). Es braucht nicht installiert, sondern einfach nur parallel zu /eagle.exe/ gestartet zu werden. Der Name der von Eagle dafür benutzten Datei steht in /writelen.ulp/, bei /showlengths.exe/ lädt man gleich am Anfang diese Datei. Im Prinzip kann es dann dauerhaft laufen, auch für unterschiedliche Boards. /writelen.ulp/ stammt von /lengths.ulp/ ab und ist nur vereinfacht. Alles ganz simpel eigentlich. In der Hoffnung, dass ich dafür nicht geblamt werde und der eine oder andere etwas Nutzen aus dem Programm ziehen kann und/oder vielleicht sogar Verbesserungsvorschläge macht, freue ich mich auf Rückmeldungen. Wenn nicht, ist auch ok. Mir hat das Programm jedenfalls schon sehr geholfen. (PS: In der Vorschau werden meine Formatierungen nicht richtig angezeigt, was mache ich falsch? Schade)
Hi Schmitti, nett! (im positivsten aller Sinne!). Allerdings wäre es toll, wenn
1 | string destFile = "/Dokumente und Einstellungen/nutzer/Eigene Dateien/elec/eagle/projects/lengths.txt"; |
nicht auf (Dokumente und Einstellungen...) [benutzt das wirklich jemand absichtlich?] sondern auf den WorkFolder des gerade geöffneten BRDs zeigen würde. Das geht doch bestimmt irgendwie... Und das "UI": funktioniert tadellos und Virenfrei ;) Wäre natürlich toll, wenn da auch die Delta_in_% Angabe für die klassischen _N/_P Signalnamen dabei wäre... Da schaue ich meist drauf... Vielen Dank für die Arbeit, Stephan
Danke für die Rückmeldung! Ich hatte mal auf die Schnelle im ULP-Manual nach solchen vorgegebenen Variablen/Konstanten gesucht, aber nicht gefunden. Daher die Bemerkung, wo sich der String für die Datei zum Ändern befindet. Wer das passende findet, kann es ja einsetzen. Schlimmer wäre sowas im Binary ;-) ... Das mit der automatischen Namenszuordnung _P/_N oder auch +/- und der Anzige der Differenz wäre noch interessant, stimmt. Wenn das noch mehr Resonanz findet, würde ich das noch machen.
Hi Schmitti, //string destFile gaanz oben auskommentieren. BOARD context holen; b.name und ".outlen" (z.B.) dranhängen. filesetext() macht den Rest.
1 | sort( n, index, Signal); |
2 | |
3 | //20200330,sd-START
|
4 | string destFile; |
5 | if (board) board(B) { |
6 | destFile = filesetext(B.name, ".outlen"); |
7 | dlgMessageBox("destFile:", destFile); |
8 | }
|
9 | //20200330,sd-END
|
10 | |
11 | output( destFile, "wt") { |
vg, Stephan
stimmt, so kann man es machen. Allerdings erzeugt man so zu jedem Board ein *.outlen-File, was man eigentlich nicht unbedingt braucht. Mit meinem bisherigen Verfahren wäre ja auch ein Temp-File gleichzusetzen, welches ja als File nicht interessiert, sondern nur den Datentransfer bereitstellt. Hätte ich eigentlich besser gleich so machen sollen, dann wäre vielleicht mein "C:\Dokumente und ..." gar nicht negativ aufgefallen... Dennoch ist das alles ganz leicht im ULP-Skript zu ändern, und zwar ganz simpel, so dass ich es lieber dem Anwender überlasse. Trotzdem vielen Dank für die Idee!
M. S. schrieb: > so dass > ich es lieber dem Anwender überlasse. Die Idee ist gut, deine Meinung imho nicht. Nicht jeder, so wie ich, ist gut im ULP schreiben. Warum berücksichst du nicht die Vorschläge und schreibst das ULP dann fertig. Das wäre dann eine Sache. Du bist jetzt drin, andere müssen sich da erst reinlesen.
Lass dir von jedem 10Cent überweisen. 2000 rum habe ich mal eine Delphi_Anwendung geschrieben, die alle 10 Minuten (einstellbar) das komplette EagleProjekt gesichert hat. ( Über Timergesteuerte Windows-Messages "Menu->Save all". Das gab es bei der damals aktuellen Version 3.2(?) noch nicht. Später kam es ja dann hinzu. Ist, glaube ich, jetzt nicht mehr downloadbar. Wurde aber zigtausende Male heruntergeladen ;) Danke für deine Mühe! Gruß
Version 3.55 war es gewesen. Gibt es tatsächlich noch; ich musste grad' schmunzeln ;) http://www.n2dvm.com/files/Eagle/ftp.cadsoft.de/eagle/misc/ autosave.zip
Also in einer Zeile (10.) eine Zeichenkette "/Dokumente und ..." in eine andere Pfadangabe zu ändern, ist ja noch nicht "ULP Schreiben". Es ist nicht mehr, dazu muss man sich auch nicht einlesen (höchstens in die Bedienung eines Texteditors ;-). Ich tendiere nach einiger Überlegung sowieso eher dazu, dort besser "c:\temp\lengths.txt" oder was ähnliches reinzuschreiben, dann gibt es weder Probleme noch "merkwürdige" Pfade. Wer die Längen als Datei braucht, ist mit 'length-freq-ri.ulp' bzw. 'length.ulp' ja schon gut bedient. Schön wäre eher noch eine Pipe gewesen, aber das geht wohl nicht...
schmitti schrieb: > autosave.zip Wie hast Du denn das von Windows aus gelöst? Es wäre ja auch für meine (und sicher auch noch andere) Anwendung interessant, eagle in bestimmten Abständen zu animieren, etwas auszuführen. Ich finde dazu leider gar nichts. Sourcen sind ja in deinem autosave.zip auch nicht drin. Danke schonmal
M. S. schrieb: > Wie hast Du denn das von Windows aus gelöst? Es wäre ja auch für meine > (und sicher auch noch andere) Anwendung interessant, So was mache ich mit Autohotkey
verstehe gar nicht, wie mir so ein tolles Programm durch die Lappen gehen konnte ;-) Leider finde ich die timergesteuerte Funktionalität nicht. Das wäre ja, was man für autosave und meine Anwendung braucht. Hab ichs übersehen?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.