Simhub/NCalc Formel

U

User 23688

Hallo,

gibt´s hier jemanden, der sich mit NCalc in Simhub auskennt? Ich bräuchte Hilfe für eine If/Then Funktion in NCalc Formula in Simhub.

Gruß
Wolfgang
 
U

User 19771

Ob man dir helfen kann, findest du wohl nur raus, wenn du dein Problem schilderst bzw. sagst, was du wissen möchtest ;)

If-Then ist mit NCalc ja durchaus möglich, wird aber schnell unübersichtlich, wenn man mehrere Verschachtelungen macht oder man mehrere Dinge abhängig von einer If-Bedingung ausführen möchte. Da kann man dann durchaus überlegen auf JavaScript auszuweichen.
 
U

User 23688

Hi,
wollte ja erstmal nur wissen ob hier jemand sich amit auskennt.

Es geht darum, das ich eine LED über einen Arduino steuern möchte. Hier soll nun über die Funktion Spotter in NCalc die LEDs rot aufleuchten,
wenn sich links bzw rechts ein Fahrzeug befindet. In der letzetn Version ging das mit dem Wert :
if([DataCorePlugin.Telemetry.CarLeftRight]=2,1,0) zum Beispiel für die linke Seite (die 2 heißt links eine 3 wäre rechts)

Seit der neuesten Version gibt es die Formel aber so nicht mehr. Jetzt nennt sich diese [SpotterCarLeft] bzw für rechts dann [SpotterCarRight].
Diese bekomme ich aber anscheinend nichtmehr in in eine wenn/dann Formel.

if([SpotterCarLeft]=2,1,0) z.B. funktioniert nicht.

Also kann ich das auch nicht mehr anzeigen lassen. Wie mach ich das Simbub klar? Alleine die Formel ohne If/then geht auch nicht.

Gruß
Wolfgang
 
U

User 23688

Ok,

manchmal hilft es wenn man darüber schreibt. Habs gefunden, man kann für LED die Funktion direkt anwählen, allerdings wohl nicht für eine
Matrix, wäre aber schön gewesen.


Danke.

Gruß
Wolfgang
 
U

User 13987

Eigentlich kann Simhub in der neuesten Version eine w2812b 5050 Matrix direkt mit Flaggen / Spottern ansteuern? Ich bin gerade am Arbeitsmac und erst später wieder am Gaming-rechner, dann kann ich davon mal einen Screenshot machen. Oder habe ich dich falsch verstanden?
 
U

User 23688

Hi,
ja. Das geht. Aber nur mit einem festen Muster. Sieht aus wie eine Klammer rechts oder links. Man kann es nicht so ansteuern, das wenn zwei Matrix
(oder Matrixe?) angeschlossen sind jede für sich rechts oder links im Falle eines Fahrzeugs komplett rot aufleuchten. So wie auch bei Flags.
Bei den LED geht das aber.

Gruß
Wolfgang

ps: im Moment habe ich aber noch ein anderes Problem. Mein Adruino (z.Z. mit LEDs) stürzt unter R3E immer wieder ab. Im Grund funktioniert alles, aber nach einigen Minuten leuchtet die letze Flag dauerhaft und nix passiert mehr. Bei ACC ist das nict der Fall.
 
U

User 26065

Hi, Wolfgang!

Bezüglich der if-Abfrage: Die Spotterinfos sind jetzt ja nach Links/Rechts unterteilt, da brauchst du 2/3 nicht mehr.
Müsste mit

if([SpotterCarLeft],1,0) funktionieren, bzw. SpotterCarRight für die rechte Led.

Stürzt wirklich der Arduino ab mit der Flag? Ich schau mir bei solchen Problemen dann meistens in Echtzeit bzw. über Replay die Property-Werte an, die ich benutze. Wenn sich der Wert nicht ändert (weil z.B. R3E bei der Telemetrie ein Problem hat), kann sich auch die Flag nicht ändern.
Ansonsten könnte der Property-Wert auch einen Hinweis darauf geben, _warum_ der Arduino abkratzt - evtl. steht war fehlerhaftes drinnen...

lg
michi
 
U

User 23688

Hi Michi,

leider funktioniert die Formel gerade nicht. War auch meine erste Idee.

Zu dem zweiten Teil kann ich nix sagen, da ich den nicht verstehe :oops::-) Was sind Property-Werte und wie kann man sich die ansgehen??(

Gruß
Wolfgang
 
U

User 26065

Hi, Wolfgang!

Ich hab' leider kein iRacing, um den Spotter zu testen, aus ACC krieg ich das anscheinend nicht raus.
Welche LEDs hast du denn im Einsatz? RGB? oder eine RGB Matrix?

Ich hab' mal mit den regulären RGB Leds im Editor geschaut, dort gibt's ja (ich hab' Version 7.3.2) schon einen fertigen "SPOTTER CAR LEFT" Effekt, den man nutzen kann - somit ist normalerweise gar keine if-Abfrage notwendig.
Oder wie und welche LED willst du denn leuchten lassen, bei Spotter Links/Recht?

Zu den Properties, da gibt's im linken Menu "Available Properties"
properties.png

unter "Available Properties" siehst du alle Werte, die SimHub kennt und die man auswerten/anzeigen kann.
Oben kann man auch filtern, wenn man dort z.B. "Spotter" eingibt, gibt's die 6 Spotter "Properties":
properties2.png

Wenn du dieses Fenster nebenbei offen lässt, während die Sim (oder ein Replay) läuft, kannst du in Echtzeit mitschauen, wie sich die Werte verändern.
Ohne Filter kannst du auch durch alle Properties durchscrollen.

lg
m
 
U

User 23688

User 1739,

ja du hast recht. Für die LED´s gibt`s die Spotter Funktion. Diese habe ich z.Z. auch im Einsatz. Da funktioniert auch alles. Ich hatte nur für eine Matrix die von dir erwähnte Funktion gesucht. Diese gibt es aber so nicht, sondern nur als "Overlay". Diese Darstellung gefällt mir aber nicht. stattdessen wollte ich es über eine if/then Funktion (für die Matrix) in Verbindung mit einer Animation probieren. Geht aber leider nicht.

Ok, dass man sich die Properties auch "im Betrieb" ansehen kann wusste ich nicht. Werde ich mal ausprobieren. Danke!

User 21060,

danke werde ich ausprobieren.

Gruß
Wolfgang
 
U

User 26065

Hi, Wolfgang!

Ah, jetzt hab' ich kapiert, was du machen willst! Sorry für's Auf-der-Leitung-stehen.
Ich wollte das gerade testen, aber TestDataEditor verändert die eigentlichen Properties nicht, wenn man da was einstellt. Somit seh ich nicht, ob die If-Abfrage, die ich habe, funktioniert.

Eine Lösung wäre, statt NCalc die Javascript Variante zu nehmen:
Code:
var retVal = 0;
if ($prop('SpotterCarLeft')) { retVal = 1; }
return retVal;
Diese Formel in einen "WHEN FORMULA IS TRUE" Effekt gesetzt und den gewünschten Animationseffekt da reingeschoben, müsste _eigentlich_ funktionieren.

Ohne iRacing tu ich mich aber schwer, weil ich den Wert von "SpotterCarLeft" oder Right nicht sehen kann, wie er sich verändert.

Da würd' ich als erstes ansetzen und schauen, ob das ein 0/1-Wert ist (also False/True), oder ob es sich um eine Zahl handelt, die sich in irgendeiner Weise verändert (z.B. die Anzahl der Autos Links/Rechts).

Bei zweiterem könnte folgende Formel funktionieren (wieder in Javascript)
Code:
var retVal = 0;
if ($prop('SpotterCarLeft')>0) { retVal = 1; }
return retVal;

lg
michi
 
U

User 23688

Danke für die Mühe michi,

ich werde es heute Nachmittag mal testen.

Gruß
 
U

User 23688

User 1739,

ich nochmal. Also für die "WHEN FORMULA IS TRUE" Funktion bin ich anscheinend zu blöd.
Hab es genau so eingegeben wie du´s angeben hast. Passiert nix im Sumhubtest. Hab noch mal mit "DRS enable" als Beispiel
versucht "if([DRSEnabled],1,0)" tut sich nix. "if([DRSEnabled]=1,1,0)" tut sich auch nix. Obwohl in NCalc Editor der Wert 0 ausgegeben wird.

Vielleicht kann mir jemand hier sagen, wie denn diese "WHEN FORMULA IS TRUE" tatsächlich aussehen muss.

Gruß
 
U

User 26065

Hi, Wolfgang!

Ich hab' mal einen Test mit einem Replay von mir gemacht und dokumentier das mal Schritt für Schritt, damit ich nix vergesse.

1. Im RGB Matrix Editor hab' ich unter "When Game is running" den bekannten "WHEN FORMULA IS TRUE" (WFIT) Effekt hinzugefügt.
2. WFIT aufgeklappt und "Add effect" angeklickt, dort "Animation" ausgewählt, nur einen Frame erzeugt, damit der konstant angezeigt wird.
3. bei "Condition" in WFIT auf "Edit" geklickt, dann "Computed value" (ich denke, das war bis jetzt für dich nix neues)
4. meine Formel für den Test schaut nach, ob meine aktuelle Deltatime schneller ist als mein SessionBest. Wenn ja, soll die Grafik/Animation angezeigt werden:
if(sign([PersistantTrackerPlugin.SessionBestLiveDeltaSeconds])=-1,1,0)
Das Vorzeichen des Delta wird geholt und geschaut, ob's -1 ist, wenn ja, wird 1 zurückgegeben, sonst 0

Wenn ich jetzt ein Replay starte, wird die Matrix genau in dem Moment angezeigt, wo mein Delta negativ wird - also genauso, wie es sein soll.

Wenn du oben schreibst, du hast mit "DRSEnabled" probiert - hast du das DRS dann im "Test Data Editor" angehakt oder mit Echtdaten probiert?
Im TestDataEditor funktioniert das nicht - wie ich oben geschrieben habe, verändert der Editor das eigentliche Property nicht, wenn man es anhakt. Du müsstest es mal in einer Live-Session oder einem Replay von Simhub testen.
Nur dort haben die Properties auch die entsprechenden Werte. Dann kannst du im Fenster "Available Properties" das von dir Benutzte kontrollieren und schauen, ob es überhaupt den Wert hast, den es haben soll, damit die Funktion feuert.

Wenn du schreibst "Obwohl der Wert 0 ausgegeben wird", ist das Ergebnis der if-Abfrage false, also ist DRS nicht enabled.

Eventuell war das dein Problem, beide deiner Formeln schauen ok aus.

lg
michi
 
U

User 23688

Hi Michi,

erstmal vielen Dank für Deine Mühen. (y)

Ich werde mir das nochmal genau anschauen. Habe zwar jetzt eine "Lösung" gefunden für die "When formula ..." aber aber noch nicht alles läuft rund und mit allen Effekten.

Ja ich habe es ursprünglich nur mit dem Test Data Editor versucht, später aber auch mit Echtdaten. Ging auch nicht. Jetzt habe ich es mit einer "group" für meine "When formula" versucht und dort die "kurze Variante" [DSREnabled] genommen, geht! Aber wie gesagt manches ist noch nicht ganz so wie es sein sollte. Teste und probiere weiter, bis alles gewünschten "Blinkereien" stimmen. ;-)

Danke Dir nochmal!

Gruß
Wolfgang
 
U

User 26065

Ja ich habe es ursprünglich nur mit dem Test Data Editor versucht, später aber auch mit Echtdaten. Ging auch nicht.
Hmpf, jetzt ist mein Ehrgeiz geweckt :D
Kannst du mal einen Screenshot deines RGB Matrix Editors machen?

Beim Test mit den Echtdaten - konntest du dort auch das DRS Property mitverfolgen und sehen, dass es auf 1 gesetzt wurde?
(So mach ich das meistens - wenn bei einer Formel nicht das gewünschte Ergebnis rauskommt, überprüf' ich manuell im Properties Fenster, ob der Wert, den ich teste, überhaupt dem entspricht, was ich erwarte).

Wäre doch gelacht, wenn wir's nicht hinbekommen ;)

lg
m
 
U

User 23688

Hi Michi,

nein, alles Gut. Kein Stress. Auch das DRS funktioniert auf dem von dir angegeben Weg. Mein Fehler war wohl tatsächlich, dass ich davon ausgegangen bin, man könnte alles über diesen Test Data Editor prüfen. Aber das geht nicht. Man muss es bei den meisten Sachen "real" testen.

Was ich jetzt noch machen muss, ist das alles so "blickt" und "leutet" wie ich es gerne hätte. Die Formel (y)selber laufen jetzt. (LED Strip)

Matrix habe ich noch gar keine (wollte ich nur testen bevor ich welche kaufe). Hier wird aber eben nur die Funktion "Overlay" für den Spotter angeboten. Aber es gibt auch die "WFIT". Nur auch hier habe ich mit dem Test Data Error" probiert. Natürlich auch ohne Erfolg, weil der nicht funktioniert. Hier wollte ich, dass wenn der Spotter arbeitet die Matrix komplett rot aufleuchtet und nicht wie im Overlay vorgegeben nur am Rand. Das geht aber wohl nicht so einfach wie ich erhofft hatte. Hierzu muss man die Matrix wohl als LED konfigurieren. Dies hat mir der nette Mensch aus dem Gewerbe Forum (der die Matrixteile verkauft) erklärt. Da aber meine Eigenbau LED´s jetzt funktionieren, hat sich das mit der Matrix erstmal erledigt.

Zur Zeit habe ich alle Flaggen (blau, grün, gelb, weis, (Spotter (recht, links), PitLimiterOn auf zwei Anzeigen mit jeweils 12 LED´s. Wobei der Spotter
natürlich jeweils nur recht oder links anzeigt. Die Flaggen immer beiderseits. Funktionieren tut es z.Z. auf ACC und R3E. Bei R3E allerdings ist der Spotter etwas konfus. Zeigt manchmal was an, was gar nicht da ist, warum das so ist weis ich noch nicht, da in Crew Chief alles richtig angesagt wird. In ACC funktioniert es allerdings sehr gut.

Was noch nicht passt ist das Gelb der gelben Flagge, das sieht eher hell grün aus. Aber man kann nicht alles haben.

Jetzt mus ich eben nur noch die Muster so hinbekommen wie´s mir gefällt. Dann bin ich mit meinem Eigenbau zufrieden. War allerdings einige löterei und bastelei nötig.

Gruß und nochmal vielen, vielen Dank.

Wolfgang

ps: warum es mit den Echtdaten anfangs nicht ging, weiss ich allerdings nicht. Da war wohl ich das Problem :cool2:
 
U

User 26065

Sehr fein, dass jetzt alles so hinhaut, wie du dir das vorstellst!! (y)

Ich hab heute beim Testen auch festgestellt, dass SpotterCarLeft/Right auch mit dem ACC Replay funktioniert haben - muss ich auch bei Gelegenheit bald mal einbauen :D :D

Ja, das Löten und Basteln kann schon dauern - ich hab' da den Ansatz, dass das Basteln selbst auch ein Hobby ist ;)
Aber aktuell fahr ich einfach lieber mit dem Rig, als zu Basteln :D

lg
m
 
U

User 23688

Hi Michi,

Löten als mein Hobby zu bezeichnen ginge jetzt zu weit, aber wenn´s sich in Grenzen hält, kann es auch Spaß
machen.

Mir fällt da aber noch ne Frage zu Simhub ein. Strafen, wie z.B Slow Down oder Drive through kann man sich aber nicht anzeigen lassen,
oder? Hab keine Formel dazu gefunden. Müsste das nicht eigentlich auch möglich sein, sie werden ja auch im Spiel angezeigt!?

Gruß
Wolfgang
 
Oben