CANoe variable auslesen

Gast #6599797
Lesenswert?

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.
Beitrag #6599999 wurde von einem Moderator gelöscht.
Gast #6600083
Lesenswert?

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.
Gast #6600089
Lesenswert?

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.
Gast #6600254
Lesenswert?

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.
Gast #6600735
Lesenswert?

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.
#6600809
Lesenswert?

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??
Gast #6601268
Lesenswert?

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.
Gast #6601295
Lesenswert?

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.
#6602012
Lesenswert?

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.
Gast #6606122
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren