TIA Speicher kopieren? (so a la "memcpy" möglich?)

shadowdb

Level-1
Beiträge
115
Reaktionspunkte
8
Zuviel Werbung?
-> Hier kostenlos registrieren
[gelöst] Speicher kopieren? (so a la "memcpy" möglich?)

Moin,

um das Fetch/Write in TIA/SCL neu zu implemtieren, da Siemens' dumme Herrlichkeit FB210 gestichen hat,
lese ich Daten via TCP/IP in einem Buffer (im L#/I-DB des FBs) ein.

Um den elegant zu verarbeiten, soll möchte ich aus dem Buffer/Empfangspeicher die Daten umkopieren in eine vorbereitete Struktur.

z.B. für den Monitor in einen "dummy" DB:
#ret_val := MOVE_BLK_VARIANT(SRC := #buffer, COUNT := 16, SRC_INDEX := 0, DEST_INDEX := 0, DEST => p#db1.dbx 0.0 dint 4);

b.z.w:
#ret_val := MOVE_BLK_VARIANT(SRC := #buffer, COUNT := 16, SRC_INDEX := 0, DEST_INDEX := 0, DEST => #telegram);

Hinter #telegramm verbirgt sich eine Lokale, statische Struktur Variable, 16 Bytes groß, die die RFC1006 Struktur beinhaltet.

Im Prinzip will ich ein "memcpy wie in C" machen.
Jedocch Antwortet das MOVE_BLK_VARIANT mit 8084 := Datentypen stimmen nicht. WTF? Genau die sollen/müssen ja "egal" sein, 16 ... n Bytes sind zu kopieren. Mehr nicht.

Idee, was falsch ist?

Euer Jojo
 
Zuletzt bearbeitet:
Selber gefunden. :p

Die Lösung war, Serialize, Desrialize verwenden.
z.B.;
Code:
#ret_val := Deserialize(SRC_ARRAY := #buffer, DEST_VARIABLE => #tel, POS := #buffer_pos);

Unter dem Mäntelchen "not invented here" wird da wohl bei Siemens sehr viel vermurkst ... :x
Jojo
 
Zurück
Oben