22.04.2021, 15:53
Hallo Leute,
ich erfassen CANopen-Daten mittels einer NI-USB 8502 CAN Schnittstelle. Da LabVIEW CANopen ja nur auf RT Systemen unterstützt musste ich etwas improvisieren, das Ergebnis ist angehangen.
Ohne mich jetzt in Details zu verlieren das Problem aus LabVIEW-Sicht:
Ich bekomme einen Array mit Clustern gleicher CAN-ID aus der ich die acht Datenbytes filtere, in den ersten vier Bytes steht quasi die Adresse der Variablen in welche die vier nachfolgenden Bytes geschrieben werden müssen.
Ich habe es so gelöst, dass die ersten vier Bytes verglichen werden und wenn diese zu einer Variablen passen wird ein "true" ausgelöst und ein "case" gibt die Variable darauf hin zum Beschreiben frei. Das funktioniert auch einwandfrei, aber wenn ich jetzt mit der Variablen weiter rechnen will, bleibt mir nichts anders übrig mit lokalen Variablen zu arbeiten, da ich ja aus dem "case" auch wieder rauskommen will.
Kennt jemand eine bessere Lösung ohne lokale Variablen bemühen zu müssen?
Gruß Titus
ich erfassen CANopen-Daten mittels einer NI-USB 8502 CAN Schnittstelle. Da LabVIEW CANopen ja nur auf RT Systemen unterstützt musste ich etwas improvisieren, das Ergebnis ist angehangen.
Ohne mich jetzt in Details zu verlieren das Problem aus LabVIEW-Sicht:
Ich bekomme einen Array mit Clustern gleicher CAN-ID aus der ich die acht Datenbytes filtere, in den ersten vier Bytes steht quasi die Adresse der Variablen in welche die vier nachfolgenden Bytes geschrieben werden müssen.
Ich habe es so gelöst, dass die ersten vier Bytes verglichen werden und wenn diese zu einer Variablen passen wird ein "true" ausgelöst und ein "case" gibt die Variable darauf hin zum Beschreiben frei. Das funktioniert auch einwandfrei, aber wenn ich jetzt mit der Variablen weiter rechnen will, bleibt mir nichts anders übrig mit lokalen Variablen zu arbeiten, da ich ja aus dem "case" auch wieder rauskommen will.
Kennt jemand eine bessere Lösung ohne lokale Variablen bemühen zu müssen?
Gruß Titus