2 Lua Scripte - Speicher fehlt...

Status
Nicht offen für weitere Antworten.

Papsi

Erfahrener Benutzer
#1
Hallo,

Ich habe zusätzlich zu meinem laufenden Scripts ein neues gebastelt. Nur leider laufen beide nicht zusammen.
Wenn ich unter Telemetrie die Scripte einzeln einstelle, dann laufen sie auch.
Wenn ich beide altiviere, dann bekomme ich immer beim 2. Script eine Fehlermeldung angezeigt.
Dabei ist es egal, welches Script als 1. steht.

image.jpeg

Welcher Speicher ist denn da gemeint, wie kann man das "fixen"?

Gruss
Papsi
 
Zuletzt bearbeitet:
#2
Such mal nach dem Script Telenowa von Udo (strgaltdel)..

Udo hat sein Script mit einzelnen Widgets modular aufgebaut.
Auf der X9E läuft das wohl auch komplett, für die X9D(+) gehts wohl nur in einer abgespeckten Version ( ich glaub ca. 30kB)...

Abhilfe geht nur indem du unnötigen Müll aus den Scripten entfernst so dass du mit allen Scripten zusammen unter die Magische Grenze kommst.
( Allein dein Olimetryscript hat schon 17kB, wenn das 2. genauso gross ist ...)
Telemetriescripte werden aktiv beim aufrufen, bleiben dann aber im Speicher so dass der Aufruf des 2. Script den Speicher sprengt...

Ralf
 
Zuletzt bearbeitet:

Papsi

Erfahrener Benutzer
#3
Wie groß ist denn die magische Grenze?
Meine beiden Scripte sind jeweils 16kb groß.

Das Oli-Script ist modular aufgebaut, da habe ich schon etwas gelöscht.
Muss mal etwas tiefer im Quellcode schauen, ob man da noch was sparen kann.


Btw:
Jetzt sind wir im Zeitalter von Massen an Terabytes und ich kämpfe hier mit paar kb rum ;-)
 
#4
Wie groß ist denn die magische Grenze?
Meine beiden Scripte sind jeweils 16kb groß.

Udo schreibt zu seinem Script das wohl ca 30kb die Grenze sind, vielleicht kannst du ja die genaue grösse herausfinden..

Das Oli-Script ist modular aufgebaut, da habe ich schon etwas gelöscht.
Muss mal etwas tiefer im Quellcode schauen, ob man da noch was sparen kann.

Udos Script basiert auf der Olimetry, meine Scripte liegen bei ca 3..5 kB da hab ich noch keine Probleme gehabt 4 Stück gleichzeitig anzuzeigen. Sie beinhalten jedoch keine Kommentare und nichts an Zusatzinhalten mehr so dass man diese auch nicht mehr weitergeben kann...

Btw:
Jetzt sind wir im Zeitalter von Massen an Terabytes und ich kämpfe hier mit paar kb rum ;-)
Die Entwickler von OpenTx kämpfen ja anscheinend um jedes Bit ( in 2.2 dürfen z.B. die Namen für Kurven nur noch 3 Zeichen ( bisher 6) oder Scripte nur noch 6 Zeichen (bisher 8) lang sein.
Der Prozessor in der Taranis hat halt nur sehr begrenzt Speicher...
 

meute

Erfahrener Benutzer
#5
Hallo,

Die Entwickler von OpenTx kämpfen ja anscheinend um jedes Bit ( in 2.2 dürfen z.B. die Namen für Kurven nur noch 3 Zeichen ( bisher 6) oder Scripte nur noch 6 Zeichen (bisher 8) lang sein.
Der Prozessor in der Taranis hat halt nur sehr begrenzt Speicher...
Die Taranis gibt es erst seit ein paar Jahren.
Hätte man da nicht mehr Speicher oder einen größeren Prozessor einbauen können?
Oder würde das dann preislich stark nach oben gehen?


Gruß
meute
 

Papsi

Erfahrener Benutzer
#6
Klappt leider immer noch nicht...

Habe beide Scripte bis auf das nötigste reduziert.
Insgesamt jetzt 21kb - noch zu viel.

Alle Kommentare, unnötige Leerzeichen, Tabs, Leerzeilen entfernt.
Testmodus gestrichen usw.




Mal testweise kleine Scripte erstellt:
4 Scripte mit insgesamt 23kb laufen ohne Probleme.

Irgendwie komisch...
 

strgaltdel

Erfahrener Benutzer
#7
Hi,

der Umfang des Quelltextes macht ja nur einen bestimmten Anteil aus, das Verschlanken der "Textbytes" wegen bringt meiner Erfahrung nach da eher wenig.

Wichtig ist eher darauf zu achten, Variablen möglichst nur über die nötige Laufzeit aktiv zu halten (also nur in den notwendigten Funktionen deklarieren)
"Globale Variablen" (also die, die man noch vor den Funktionen deklarieren sollte) immer mit "local" vorher angeben.
Sobald man eine nicht-deklarierte Variable aus dem Nichts heraus verwendet wird die lt Doku über alle skripte Verfügbar und frisst noch mehr Speicher.

Richtige Verbraucher sind die arrays; daher, wenns knapp wird, überdenken ob es sich anders lösen lässt.
Der Garbage collector von lua ist wohl auch nicht die Speerspitze der Technik, manchmal macht die Reihenfolge, in der die scripte gestartet werden, das i-Tüpfelchen aus.

Insgesamt aber Jammern auf hohem Niveau, viele Modellflieger würden sich nach solch Möglichkeiten die Finger lecken....


Man könnte deutlich schlanker werden, wenn man die scripte vorher schon kompiliert.
Die Anleitung dazu ist leider nur für alte oTxe gültig.
(Im Prinzip baut man sich eine lokale Entwicklerumgebung und kompiliert mit oTx auch gleich seine skripte dazu)

Wenn die developer mal etwas mehr Ruhe haben wollte ich da mal weiter nachhaken wie es jetzt funktioniert.

Und immer dran denken:
Die Apollo 11 Crew hätte über soviel Speicher Bausteine gestaunt :cool:



Gruß
Udo
 
#8
muss mich da wohl korrigieren:
Die grösse meiner Scripte habe ich aus der Debug-Konsole im Companion abgeleitet:
(Wert GC Use nach Modellaufruf ohne Scripte abgelesen, erneut abgelesen nach Modell Aufruf mit Script-Aufruf, die Differenz war für mich die Scriptgrösse...)

Das Olimetry Script nutzt dabei meiner Rechnung nach 19192 Bytes....

Dabei werden auch ständig Bitmaps nachgeladen

Ralf
 
Zuletzt bearbeitet:

Papsi

Erfahrener Benutzer
#9
Leider bin ich dann doch noch zu sehr Anfänger in LUA um das selber ändern zu können.
Schalter umändern, oder simple Sachen anzeigen lassen ok aber jetzt die Scripte so umzuschreiben, das alles passt - da wird bei mir dann nichts.

Meiner Meinung nach werden beim Olimetry die BMP-Daten immer wieder neu angezeigt.
 

Champus

Neuer Benutzer
#10
Hätte man da nicht mehr Speicher oder einen größeren Prozessor einbauen können?
Als die X9D auf den Markt kam, hat doch noch keiner an LUA gedacht. LUA braucht RAM und der ist nun mal nicht so reichlich vorhanden wie Flash. Ohne Lua langweilit sich die CPU eigentlich.

Wo sind eigentlich die Grenzen bei der X9E und X12 bezgl Lua?
 
Status
Nicht offen für weitere Antworten.
FPV1

Banggood

Oben Unten