evalCommandCAS

Robert T. shared this problem 1 year ago
Solved

Ich bin ratlos!

Ich nutze ein paar CAS-Funktionen von Geogebra 5 classic in verschiedenen Applets. Am Computer funktionierten diese Applets problemlos, aber nachdem ich sie auf GeogebraTube hochgeladen habe, funktionieren sie mal und mal funktionieren sie nicht.

Inzwischen habe ich herausgefunden, das der CAS-Teil in nicht vorhersagbarer Weise immer wieder mal nicht rechtzeitig oder gar nicht initialisiert wird (evtl stürzt er ab?), und deshalb sämtliche Aufrufe von evalCommandCAS nur "?" als Rückgabewerte liefern.

Das Browserfenster mit F5 neu zu laden führt dann mal zum Erfolg und mal nicht.

Der Fehler kann selbst nach einer längeren Wartezeit auftreten. Wie lang sollte ich warten?


Ich habe versucht, in der ggbOnInit-Funktion den CAS-Teil zu "initialisieren", indem ich dort einfach eine Zeile


var s =String( ggbApplet.evalCommandCAS("1"));


setze. Oder ist das kontraproduktiv, weil zu diesem Zeitpunkt der CAS-Teil noch gar nicht zur Verfügung stehen kann?


Gibt es eine Möglichkeit, eine "Warteschleife" zu programmieren, die erkennt, wann der CAS-Teil geladen ist und zur Verfügung steht?


https://www.geogebra.org/m/nxkdzded

(Wenn die Schaltfläche "Neue Aufgabengruppe" Terme mit Fragezeichen liefert, dann ist der CAS-Teil nicht initialisert bzw er ist abgestürzt).


https://www.geogebra.org/m/Uyuumhxs

(Wenn eine der 3 Schaltflächen unten links Ableitungsterme mit Fragezeichen liefert oder eine Fehlermeldung erscheint, dann ist der CAS-Teil nicht initialisert bzw. er ist abgestürzt).


https://www.geogebra.org/m/vfdkumsf

(Wenn die Schaltfläche Eingabe eine Fehlermeldung liefert, dann ist der CAS-Teil nicht initialisert bzw. er ist abgestürzt).

Comments (6)

photo
1

Sorry, wenn ich hier schon wieder meine eigene Frage kommentiere, aber ich hatte dann doch noch eine Idee, wie ich die CAS-Initialisierung überprüfen kann: nämlich mit einer Animationsschleife, die jede Sekunde etwa überprüft, ob evalCommandCAS KEIN Fragezeichen als Antwort liefert und dann eine entsprechende Erfolgsmeldung liefert. Ich habe inzwischen so eine Schleife in alle 3 der oben aufgeführten Applets eingebaut. Damit kann man das Phänomen nun etwas deutlicher beobachten:

- die Initialisierung klappt vor allem dann nicht, wenn andere Tabs mit Geogebra-Applets geöffnet sind, die auch CAS verwenden und versuchen, CAS zu initialisieren.


- die Initialisierung klappt meist nach 1-3 Sekunden, wenn nur ein Tab mit einem Geogebra-Applet geöffnet ist.


Falls jemand die gleiche Frage hat, hier meine Umsetzung der Animationsschleife:

- benötigt wird eine Variable mit Namen tcas und ein Textfeld mit Namen txum


Im globalen JAVA-SCRIPT-Bereich starte ich die Animation gleich zu Beginn:


function ggbOnInit() {
var g=ggbApplet;
g.evalCommand("tcas=Slider(0, 10, 1, 1, 30,false, true, true, false)");
g.setVisible("tcas", false);
g.setTextValue("txum", "\\textcolor{red}{\\text{Bitte warten Sie auf die CAS-Initialisierung!}");
g.setAnimating("tcas", true);
g.startAnimation();
}


In das Update-Script der Variablen tcas habe ich folgenden JAVA-SCRIPT-Code gelegt:


var g=ggbApplet, s=g.evalCommandCAS("1");
if(s=="1") {
g.setTextValue("txum", "\\textcolor{olivegreen}{\\text{CAS ist initialisiert!}}");
g.stopAnimation();
g.setAnimating("tcas", false);
}

photo
1

Maybe this example helps:


https://www.geogebra.org/m/QGnuZu7A

photo
1

Like Robert T. I cannot view correctly your file in Firefox. I've already cleared the cache ... just in case.

Clearing the cache made buttons on top View appear, bot nothing is displayed in the botton View.

/TxqlEAAAAASUVORK5CYII=

photo
1

I must admit: TODAY the applet works fine even in Firefox.

photo
photo
1

Wow! Das ist wirklich raffiniert! Ich wäre nie auf die Idee gekommen, dass Text5 mit Abschluss der CAS-Initialisierung noch einmal aktualisiert wird. Vielen Dank für diesen Tipp! Ich werde das morgen mal in meinen Applets ausprobieren!


Anmerkung: Interessant ist auch, dass dieses Beispiel unter Firefox bei mir nicht korrekt funktioniert: Zwar werden die Schaltflächen nach der CAS-Initialisierung korrekt aktiviert, allerdings werden die Aufgaben und Antworten falsch angezeigt. In Chrome klappt das problemlos. Ich habe auch festgestellt, dass bei uns an der Schule irgendwelche Privacy-Einstellungen im Firefox das Nachladen des CAS-Teils komplett verhindern. Erst ein Deaktivieren dieser Einstellungen ermöglicht, dass die Applets problemlos laufen.

photo
1

Inspired by Michael Borcherds cool method of checking the CAS initialization I realized it in the following way:


function ggbOnInit() {
	var g=ggbApplet;
	g.setTextValue("txum", "\\textcolor{red}{\\text{Please wait for CAS-initialization!}");
	g.evalCommand("txcas=\"\"+Factor(x^2+x)");
	g.evalCommand("CASready=txcas==\"x (x + 1)\"");
	g.registerObjectUpdateListener("CASready", "CASup");
	g.setVisible("txcas", false);
	g.setVisible("CASready", false);
}
function CASup(o) {
	var g=ggbApplet;
	if(Number(g.getValue("CASready"))>0) {
		g.unregisterObjectUpdateListener("CASready");
		g.setTextValue("txum", "\\textcolor{olivegreen}{\\text{CAS is ready now!}}");
	}
}

© 2020 International GeoGebra Institute