INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

CAN Nachrichten in Array verarbeiten und aus Case Struktur weiterverarbeiten



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

17.07.2020, 11:47
Beitrag #1

Tomate27 Offline
LVF-Neueinsteiger


Beiträge: 9
Registriert seit: Jul 2020

2016
-
EN



CAN Nachrichten in Array verarbeiten und aus Case Struktur weiterverarbeiten
Hallo,

ich arbeite aktuell mit PCAN Basic und will gerne meine CAN Nachrichten auslesen.
Das auslesen und das jeweilige Anzeigen der entsprechenden CAN ID klappt.

Da ich aber viele Cases habe mit unterschiedlichen Nachrichten (z.B. CAN ID 301 und 302, als Beispiel) will ich gerne die entsprechenden Nachrichten in bestimmter Reihenfolge in ein Array speichern. Dies benötige ich um am Ende eine CSV zu erstellen, bzw auch noch einzelne Berechnungen machen zu können ohne mit lokalen Variablen zu arbeiten.

So das:
CAN ID 300, in einem Array den Index 0-3 belegt, da diese Nachricht 4 Werte enthält.
CAN ID 301 soll dann entsprechend ab Index 4 angehängt werden.

Da es sich aber um Werte handelt, die dauerhaft abgerufen werden und sich dem entsprechenden ändern können z.b beim Spannungswert, sollen sie aber ihren Index im Array beibehalten.
Ich habe nun schon verschiedene Varianten ausprobiert, aktuell ist es so aufgebaut das mit das Array kurz die Werte angezeigt werden, da es aber eine While Schleife ist die Werte wieder "verschwinden" bis er neu durchläuft.
Im Anhang sind als Bild die beiden cases angehängt.

Es gibt bestimmt eine Lösung für mein Problem. Aber ich komme im Moment nicht von alleine darauf wie ich die einzelnen Nachrichten mittels Array aus der Case Struktur heraus bekomme und der entsprechende Wert seinen Index beibehält.
ich würde mich freuen wenn mir jemand helfen kann.


Angehängte Datei(en) Thumbnail(s)
       
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.07.2020, 11:54
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.398
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: CAN Nachrichten in Array verarbeiten und aus Case Struktur weiterverarbeiten
Hallo Tomate,

herzlich willkommen im Forum!

Zitat:aktuell ist es so aufgebaut das mit das Array kurz die Werte angezeigt werden, da es aber eine While Schleife ist die Werte wieder "verschwinden" bis er neu durchläuft.
Wenn du in einer Schleife Daten für die nächste Iteration bereitstellen willst, dann solltest du ein Schieberegister verwenden!
Dein Array gehört in ein solches…

Ich würde dafür wahrscheinlich eine CVT (current vale table) verwenden. Die lassen sich recht einfach mit Variantattributen erstellen, danach kannst (oder könntest) du dann die Signale deiner CAN-Messages anhand ihrer Namen verwalten… (Hier wurde das Prinzip beschrieben.)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.07.2020, 12:20
Beitrag #3

Tomate27 Offline
LVF-Neueinsteiger


Beiträge: 9
Registriert seit: Jul 2020

2016
-
EN



RE: CAN Nachrichten in Array verarbeiten und aus Case Struktur weiterverarbeiten
Hallo GerdW,

danke für die Antwort.

Ich habe das mit den Schieberegister umgesetzt, aber anscheinend noch nicht richtig. (siehe Anhang)
Da es jetzt die jeweiligen Werte in das Array aneinander hängt und nicht der jeweilige Index mit dem neuen Wert ersetzt wird.
Können Sie mir sagen was an meinem Schieberegister nicht stimmt oder noch fehlt?

Danke für den Hinweis mit der CVT, dazu werde ich mich mal belesen.


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.07.2020, 12:35 (Dieser Beitrag wurde zuletzt bearbeitet: 17.07.2020 12:36 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.398
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: CAN Nachrichten in Array verarbeiten und aus Case Struktur weiterverarbeiten

Akzeptierte Lösung

Hallo Tomate,

Zitat:Da es jetzt die jeweiligen Werte in das Array aneinander hängt und nicht der jeweilige Index mit dem neuen Wert ersetzt wird.
Es gibt die Funktionen BuildArray, InsertIntoArray und ReplaceArraySubset, mit denen man Arrays bearbeiten kann.
InsertIntoArray ist fast immer falsch verwendet, so auch bei dir: ständig irgendwo Werte ins Array einzufügen, kann wohl kaum deinem Wunsch entsprechen.
Meist kann man InsertIntoArray durch BuildArray ersetzen, wenn man nämlich Elemente am Anfang oder Ende des Arrays anhängen will. Dies ist bei dir aber auch nicht der Fall.
Bleibt also noch ReplaceArraySubset: damit kann man gezielt Elemente im Array ersetzen. Hört sich das passend für dich an?

Bleibt noch das Schieberegister: Wenn du Werte im Array ersetzen willst, müssen diese Elemente aber auch existieren - sonst kann man sie ja nicht ersetzen! Dazu müsstest du dein Schieberegister also mit einem Array initialisieren, welches schon die benötigte Anzahl Elemente aufweist. Und in der Arraypalette findest du auch noch eine Funktion, um ein solches Array zu initialisieren…

Viel Erfolg! Big Grin

Zum Snippet:
Zwei Wartezeiten in einer Schleife sind meist übertrieben…
Übersichtlicherer Code lässt sich leichter lesen/verstehen: einfach mal mit geraden und nicht verdeckten Drähten anfangen…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.07.2020, 13:30
Beitrag #5

Tomate27 Offline
LVF-Neueinsteiger


Beiträge: 9
Registriert seit: Jul 2020

2016
-
EN



RE: CAN Nachrichten in Array verarbeiten und aus Case Struktur weiterverarbeiten
Hi,

ich fasse es nicht das es endlich funktioniert.

Vielen Dank !!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  CAN-Nachrichten ändern ta1997 5 1.982 05.05.2022 13:38
Letzter Beitrag: GerdW
  Case-Struktur: Angegebener Case nicht vorhanden braendy 10 4.645 02.02.2021 15:05
Letzter Beitrag: Lucki
  Case Struktur 2 Schleifendurchläufe verzögert True setzen aber sofort auf False bachatero18 4 4.347 07.11.2020 14:08
Letzter Beitrag: Martin.Henz
  Steuerung, Case-Struktur pixie_2 4 3.179 16.04.2020 14:30
Letzter Beitrag: GerdW
  Datenstring von Serieller Verbindung verarbeiten stefan1312 5 3.278 30.09.2019 14:53
Letzter Beitrag: stefan1312
  Event Case Ignoriert Tastendruck wenn in Gegenwart eines anderen "Leeren" Event Case Ksanto 8 6.507 23.10.2017 09:08
Letzter Beitrag: Ksanto

Gehe zu: