Hilfe Bei RoboPro
Forumsregeln
Bitte beachte die Forumsregeln!
Bitte beachte die Forumsregeln!
Hilfe Bei RoboPro
Liebe Community,
heute habe ich einen Taschenrechner programmiert,
wollte ihn ausführen doch es kam folgende Meldung:
"Der Stack ist zu klein. Versuche die Stackgröße im Eigentschaftsfenster des Hauptprogrammes zu vergrößern!"
Was muss ich da machen? Oder ist mein Programm zu groß?
Mein Programm:https://onedrive.live.com/redir?resid=C ... file%2crpp
Liebe Grüße,
Lars
heute habe ich einen Taschenrechner programmiert,
wollte ihn ausführen doch es kam folgende Meldung:
"Der Stack ist zu klein. Versuche die Stackgröße im Eigentschaftsfenster des Hauptprogrammes zu vergrößern!"
Was muss ich da machen? Oder ist mein Programm zu groß?
Mein Programm:https://onedrive.live.com/redir?resid=C ... file%2crpp
Liebe Grüße,
Lars
Zuletzt geändert von LarsKusch am 23 Apr 2016, 08:16, insgesamt 1-mal geändert.
- MasterOfGizmo
- Beiträge: 2720
- Registriert: 30 Nov 2014, 07:44
Re: Hilfe Bei RoboPro
Heisst das, dass dein txt wieder heil ist? Wie hat das geklappt?
Arduino für fischertechnik: ftDuino http://ftduino.de, ftDuino32 http://ftduino.de/32
Re: Hilfe Bei RoboPro
Nein noch nicht er ist momentan noch bei ft! deshalb lasse ich das Programm im Simulations Modus laufen!
- Dirk Fox
- ft:pedia-Herausgeber
- Beiträge: 1833
- Registriert: 01 Nov 2010, 00:49
- Wohnort: Karlsruhe
- Kontaktdaten:
Re: Hilfe Bei RoboPro
Hallo Lars,
warum steht in Deinem Hauptprogramm unter "Eigenschaften" die "Gruppe" 1?
Lösche einmal den Eintrag, und setz' auch die Zahl der zusätzlichen Prozesse auf 0.
Auch die Werte für den Mindestspeicher pro Prozess erscheinen mir deutlich zu groß - ersetze sie einmal durch die Werte in den Eigenschaften Deiner Unterprogramme, das müsste locker reichen.
Beste Grüße,
Dirk
warum steht in Deinem Hauptprogramm unter "Eigenschaften" die "Gruppe" 1?
Lösche einmal den Eintrag, und setz' auch die Zahl der zusätzlichen Prozesse auf 0.
Auch die Werte für den Mindestspeicher pro Prozess erscheinen mir deutlich zu groß - ersetze sie einmal durch die Werte in den Eigenschaften Deiner Unterprogramme, das müsste locker reichen.
Beste Grüße,
Dirk
Re: Hilfe Bei RoboPro
Lieber Dirk,
leider haben die Änderungen am Arbeitsspeicher sowohl im Online- als auch im Offlinemodus überhauptnichts gebracht, sowie auch an der Gruppe!
(Wofür sind diese Gruppen überhaupt?)
Oder soll ich das Programm mal an Fischertechnik senden?
Erstaunte Grüße,
Lars
leider haben die Änderungen am Arbeitsspeicher sowohl im Online- als auch im Offlinemodus überhauptnichts gebracht, sowie auch an der Gruppe!
(Wofür sind diese Gruppen überhaupt?)
Oder soll ich das Programm mal an Fischertechnik senden?
Erstaunte Grüße,
Lars
Re: Hilfe Bei RoboPro
Verschiebt irgendwer den Thread in den Fischertechnik-Direkt-Bereich, da können es sich dann mal die Enntwickeler anschauen und mir sagen was ich falsch gemacht habe oder ob die Software Fehler macht?!
Re: Hilfe Bei RoboPro
Hi Lars,
Der Fehler ist in der Funktion "Be_Rechnen 4". Darin am Datenausgang der Funktion "Auswertung Rechenzeichen 2" hängt zweimal die globale und "namensgebundene Variable "Zwischenwert_Nachzahl". Damit hast Du eine schicke Endlosschleife gebaut: Jede Änderung des Wertes bewirkt eine Aktualisierung des Variablenausgangs und damit wieder eine Änderung des Wertes, da ja die gleiche Variable am Ausgang hängt. Das Problem kann man ganz einfach reproduzieren: Ein Hauptprogramm mit zwei Instanzen ein und derselben globalen und namensgebundenen Variablen verbunden durch einen gelben Datenpfad, dazu ein grünes und rotes direkt verbundenes Ampelmänchen => Stack Overflow. RoboPro sollte so etwas eigentlich erkennen können.
Fehlersuchstrategie: "Teile und herrsche": Ich habe die Funktionen Deines Programms eine nach der anderen in ein leeres Hauptprogramm gezogen und dieses dann gestartet bis es dann endlich knallte. Die Reihenfolge sollte dabei so gewählt werde, dass nicht mit einer Funktion weitere noch nicht getestete Funktionen mit reingezogen werden. Also, sollte man mit den untergeordneten Funktionen, die keine weiteren Funktionsaufrufe enthalten, beginnen. Die Funktionen mit dem Fehler dann zerstückeln, bzw. temporär Teile entfernen, bis man den Fehler lokalisiert hat.
Beste Grüße,
Helmut
Der Fehler ist in der Funktion "Be_Rechnen 4". Darin am Datenausgang der Funktion "Auswertung Rechenzeichen 2" hängt zweimal die globale und "namensgebundene Variable "Zwischenwert_Nachzahl". Damit hast Du eine schicke Endlosschleife gebaut: Jede Änderung des Wertes bewirkt eine Aktualisierung des Variablenausgangs und damit wieder eine Änderung des Wertes, da ja die gleiche Variable am Ausgang hängt. Das Problem kann man ganz einfach reproduzieren: Ein Hauptprogramm mit zwei Instanzen ein und derselben globalen und namensgebundenen Variablen verbunden durch einen gelben Datenpfad, dazu ein grünes und rotes direkt verbundenes Ampelmänchen => Stack Overflow. RoboPro sollte so etwas eigentlich erkennen können.
Fehlersuchstrategie: "Teile und herrsche": Ich habe die Funktionen Deines Programms eine nach der anderen in ein leeres Hauptprogramm gezogen und dieses dann gestartet bis es dann endlich knallte. Die Reihenfolge sollte dabei so gewählt werde, dass nicht mit einer Funktion weitere noch nicht getestete Funktionen mit reingezogen werden. Also, sollte man mit den untergeordneten Funktionen, die keine weiteren Funktionsaufrufe enthalten, beginnen. Die Funktionen mit dem Fehler dann zerstückeln, bzw. temporär Teile entfernen, bis man den Fehler lokalisiert hat.
Beste Grüße,
Helmut
Re: Hilfe Bei RoboPro
Hallo Lars,
Hamlet hat ja schon den Hauptpunkt gemacht. Es ist aber nochwas generell gefährlich. Wenn eine Taste gedrückt wird, weist Du dieser eine Gleitkommazahl als Code zu. Diesen Code wertest Du z.B. mit <>10.0 aus. Da Gleitkommazahlen im binären Zahlensystem nicht immer 100% genau dargestellt werden können, kann der harmlos aussehende Vergleich daneben gehen. Also Grundregel Gleitkommazahlen nie auf gleich oder ungleich abfragen. Siehe auch Kapitel 13.1 der RoboPro Hilfe.
Grüße Joachim
Hamlet hat ja schon den Hauptpunkt gemacht. Es ist aber nochwas generell gefährlich. Wenn eine Taste gedrückt wird, weist Du dieser eine Gleitkommazahl als Code zu. Diesen Code wertest Du z.B. mit <>10.0 aus. Da Gleitkommazahlen im binären Zahlensystem nicht immer 100% genau dargestellt werden können, kann der harmlos aussehende Vergleich daneben gehen. Also Grundregel Gleitkommazahlen nie auf gleich oder ungleich abfragen. Siehe auch Kapitel 13.1 der RoboPro Hilfe.
Grüße Joachim
Re: Hilfe Bei RoboPro
Lieber Jona,
Fragende Grüße,
Lars
Aber wie soll ich sonst abfragen ob mein Wert passt da ich ich ja von -9 -17 alles habe?jona2004 hat geschrieben:Da Gleitkommazahlen im binären Zahlensystem nicht immer 100% genau dargestellt werden können, kann der harmlos aussehende Vergleich daneben gehen. Also Grundregel Gleitkommazahlen nie auf gleich oder ungleich abfragen.
Fragende Grüße,
Lars
Re: Hilfe Bei RoboPro
Hallo Lars,LarsKusch hat geschrieben:Lieber Jona,Aber wie soll ich sonst abfragen ob mein Wert passt da ich ich ja von -9 -17 alles habe?jona2004 hat geschrieben:Da Gleitkommazahlen im binären Zahlensystem nicht immer 100% genau dargestellt werden können, kann der harmlos aussehende Vergleich daneben gehen. Also Grundregel Gleitkommazahlen nie auf gleich oder ungleich abfragen.
Fragende Grüße,
Lars
Statt
Code: Alles auswählen
a <> 10.0
kannst du besser
Code: Alles auswählen
a < 9.99 OR a > 10.01
Grüße,
Wilbert.
Het leven is hard. Een kokosnoot ook.
Re: Hilfe Bei RoboPro
Vielen Dank Wilbert,
damit werde ich es gleich testen!
Liebe Grüße
Lars
damit werde ich es gleich testen!
Liebe Grüße
Lars
Re: Hilfe Bei RoboPro
Hallo Lars,
In den Routinen "Auswertung Rechenzeichen" und "Auswertung Zahlen" weist Du jeder Taste einen Code zu z.B. dem '+' Zeichen die 10.0. .
Wenn Du diese Zahl später vergleichst (wenn Du addieren willst) kannst Du mit dem Vergleich reinfallen. Würdest Du eine Ganzzahl (Integer) zuweisen, kannst Du immer sauber vergleichen.
Da Du ja auch schon mit python und dem TXT arbeitest , schau Dir mal den Code an auf dem die kleine Calculator Apps da basiert.
http://thecodeinn.blogspot.de/2013/07/t ... lator.html
Vor einiger Zeit war in ft:pedia mal ein Artikel über die Programmierung von Zustandsmaschinen in RoboPro.
Wenn Du nun beides kombinierst, kriegst Du eine schöne Lösung.
Grüße Joachim
In den Routinen "Auswertung Rechenzeichen" und "Auswertung Zahlen" weist Du jeder Taste einen Code zu z.B. dem '+' Zeichen die 10.0. .
Wenn Du diese Zahl später vergleichst (wenn Du addieren willst) kannst Du mit dem Vergleich reinfallen. Würdest Du eine Ganzzahl (Integer) zuweisen, kannst Du immer sauber vergleichen.
Da Du ja auch schon mit python und dem TXT arbeitest , schau Dir mal den Code an auf dem die kleine Calculator Apps da basiert.
http://thecodeinn.blogspot.de/2013/07/t ... lator.html
Vor einiger Zeit war in ft:pedia mal ein Artikel über die Programmierung von Zustandsmaschinen in RoboPro.
Wenn Du nun beides kombinierst, kriegst Du eine schöne Lösung.
Grüße Joachim
Re: Hilfe Bei RoboPro
Vielen Dank jetzt funktioniert es!
Vielen vielen Dank
Dankend Grüße,
Lars
Vielen vielen Dank
Dankend Grüße,
Lars
- MasterOfGizmo
- Beiträge: 2720
- Registriert: 30 Nov 2014, 07:44
Re: Hilfe Bei RoboPro
Genau diesen Caclulator habe ich neulich auf den TXT portiert:jona2004 hat geschrieben: Da Du ja auch schon mit python und dem TXT arbeitest , schau Dir mal den Code an auf dem die kleine Calculator Apps da basiert.
http://thecodeinn.blogspot.de/2013/07/t ... lator.html
https://github.com/ftCommunity/ftcommun ... lc/calc.py
Arduino für fischertechnik: ftDuino http://ftduino.de, ftDuino32 http://ftduino.de/32