Ich habe Probleme mit CANoe eine sysvar Variable auslesen ich habe den Wert 300 in diese Variable reingeschrieben und es hat auch geklappt, da die GUI darauf reagiert hat. Will ich nun die selbe Variable im nochmal auslesen und im write window ausgeben. Dann bekomme ich den Wert 0 zurück. In diesem Beispiel habe ich eine float Variable verwenden. Später würde ich auch gerne andere Datentypen verwenden. Hier ist mein Code double valueSysVar; valueSysVar = @xxx::yyyyy; write("Dec is %d, Float is %f", valueSysVar); Ergebnis ist 0 Ich erwarte hier aber 300. Könnt ihr mir hier ein paar Tipps geben? Ich habe es auch schon vesucht mit den Vector Funktionen auszulesen, aber mit wenig Erfolg.
Ja stimmt. deine Syntax ist richtig. Ich kriege jetzt als Ergebnis. Dec is 0, Float is 0.0000. Ich erwarte aber immer noch eine 300 als output. Mein Problem hat es nicht gelöst.
M.E. muss die Zuweisung in einem CAPL-Skript erfolgen, das zyklisch (in einem Knoten) aufgerufen wird - oder wie machst Du das?
Beitrag #6599999 wurde von einem Moderator gelöscht.
Tom schrieb: > M.E. muss die Zuweisung in einem CAPL-Skript erfolgen, das > zyklisch (in > einem Knoten) aufgerufen wird - oder wie machst Du das? Ich habe ein Teil eines Testcases hier reinkopiert. Das setzen der sysvar erfolgt am Anfang in der MainTest. Die Abfrage der sysvar erfolgt später in einem Testcase. Was meinst du mit zyklisch aufgerufen? So wie ich das sehe ist mein Testcase aber nicht zyklisch.
Kappo schrieb im Beitrag #6599999: > canuser schrieb: >> Ergebnis ist 0 Ich erwarte hier aber 300. >> Könnt ihr mir hier ein paar Tipps geben? Ich habe es auch schon vesucht >> mit den Vector Funktionen auszulesen, aber mit wenig Erfolg. > > Welche Hardware verwendest Du bzw. worauf läuft der Code? Es ist eine Vectorsimulation in CANoe. Ich verwende zur Zeit noch keine Hardware. Diese kommt in 2 Wochen an. Es wird im Code eine Ethernetschnittstelle simuliert zwischen Auto und Ladesäule.
So wie ich das jetzt verstanden habe, setzt Du in der GUI eine Variable und lässt diese mit der Zuweisung valueSysVar = @xxx::yyyyy; auf die Systemvariable kopieren. Diese Anweisung darf/muss natürlich erst nach der Veränderung in der GUI erfolgen. Ich kenne das nur von der Maatlabsimulation in Canoe. Dort schreibt das Modell in die Systemvariable. Damit ich den aktuellen Wert auf dem CAN ausgeben kann, muss ich im Knoten über ein CAPL-Skript das Kopieren der Werte zyklisch erledigen. Genau so muss m.E. hier der GUI-WErt zyklisch abgefragt werden, ob er sich geändert hat.
valueSysVar ist keine Systemvariable. Etwas Beispielcode wäre hilfreich. Aber wenn 0 rauskommt geht oft eine Initialisierung schief und und die SysVar hat weiter den Wert mit dem sie im SysVar Dialog angelegt wurde.
canuser schrieb: > double valueSysVar; Die Systemvariable muss als solche erst angelegt werden. Das geht im Netzwerk-Config-Fenster im Baum irgendwo oder auch über das tolle Ribbon-Menü. Im CAPL-Code dann immer @valueSysVar, das ist mit Environment-Variablen auch so. mfg mf PS das hier wundert mich: canuser schrieb: > es hat auch geklappt, da die GUI darauf reagiert hat. Die GUI kennt die Variablen innerhalb des CAPL nämlich gar nicht. Doppelt angelegt??
:
Bearbeitet durch User
testcase Testcase_1() { nicht wichtig } testcase Testcase_2() { nicht wichtig } testcase LadevorgangBeendet() { double valueSysVar; valueSysVar = @xxx::yyyy; write("Dec is %d, Float is %f", valueSysVar, valueSysVar); } changePowerofEVSE(int volt, int amp) { @sysvar::xxx::yyyy= volt; @sysvar::xxx::zzzz= amp; } void MainTest() { write("Start main"); start_Ladevorgang(); changePowerofEVSE(300,20); Testcase_1(); Testcase_2(); LadevorgangBeendet(); } Ich habe den Code etwas vereinfacht. Aber sollte dann etwas mehr Einblick haben was ich gemacht habe.
Die Funktion startLadevorgang könnt ihr ignorieren. Die ist bei mir drin da habe ich nur einige sysvars gesetzt
Achim M. schrieb: > auch so. Achim M. schrieb: > Die Systemvariable muss als solche erst angelegt werden. Das geht im > Netzwerk-Config-Fenster im Baum irgendwo oder auch über das tolle > Ribbon-Menü. > > Im CAPL-Code dann immer @valueSysVar, das ist mit Environment-Variablen > auch so. > > mfg mf Vector hat die sysvar angelegt. Ich habe da nichts gemacht
rcc schrieb: > valueSysVar ist keine Systemvariable. > > Etwas Beispielcode wäre hilfreich. Aber wenn 0 rauskommt geht oft eine > Initialisierung schief und und die SysVar hat weiter den Wert mit dem > sie im SysVar Dialog angelegt wurde. Das Problem. Es scheint so als ob ich überhaupt keine Systemvariablen richtig auslesen kann. Bei den anderen kann ich aber nicht 100% sagen, ob diese auch gesetzt wurden vom System, da es nicht alles von mir entwickelt wurde.
Ah Canoe TestfeatureSet, sag das doch gleich :D Die MainTest ist nur dazu da die Testcases aufzurufen und hat ein paar Limitations, siehe Doku zur jeweils verwendeten Canoe Version. Also alles erstmal in Testcases verpacken und die aus der MainTest aufrufen.
Danke für die Hilfe an alle, ich kann jetzt mit testWaitForSignalMatch die Signale vergleichen. Ins write window kann ich immer noch nichts reinschreiben, aber die Funktion ist genug für mich, damit ich weiter komme.
canuser schrieb: > Vector hat die sysvar angelegt. Ich habe da nichts gemacht ^^ das glaube ich dir nicht: canuser schrieb: > testcase LadevorgangBeendet() > { > double valueSysVar; Aber wenn es nun geht isses wohl okay so... mfg mf
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.