CANoe variable auslesen

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

Eine eigene Frage? Dieser Thread ist über 5 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.