Byte Array in Struct kopieren

Begonnen von mactoolz, 21. September 2018, 09:17:05

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

mactoolz

Hallo zusammen,

ich würde gerne ein Byte auf ein Array mit 8 Bools kopieren.
Ich möchte aber nicht den UnPack nehmen, weil später möchte ich
dann ein A1rray of Byte auf mehrere Bools bzw. sogar eine Struktur kopieren können.

Gruß
MacToolz

CurtisMay

It is good for your posts. Which is very useful to me.

krajtl

#2
zur Inspiration...

Mein Beispiel, wie ich die Orgeleinstellungen in der Orgel löste und sie für die automatische Einrichtung vom Speicher auf die Ausgänge zurückrief:

(*declarationnnn...*)

TYPE OrgRgMEM :
STRUCT
   OrgRgMEM: ARRAY [0..11] OF BYTE; (*Speichergröße für 90 Bit Digitaleingänge*)
END_STRUCT
END_TYPE

VAR
   Crescendo   : INT;            (*0..30 Speicherzeiger für OrgRgCrA30MEM*)
   ArrDI_OrgRgstr    : ARRAY [0..89] OF BOOL;   (*array of digital inputs*)
   OrgRgCrA30MEM   : ARRAY [0..30] OF OrgRgMEM; (*Speicher für 31 Varianten*)
   ArrRegCresA    : ARRAY [0..89] OF BOOL;   (*array zum Schreiben auf digitale Ausgänge*)
END_VAR

(*programmm...*)


(*pack*)
   FOR i:=0 TO 11 BY 1 DO
   FOR j:=0 TO 7 BY 1 DO
      CASE j OF
      0:   OrgRgCrA30MEM[Crescendo].OrgRgMEM.0:=ArrDI_OrgRgstr[(i*8 )+j];
      1:   OrgRgCrA30MEM[Crescendo].OrgRgMEM.1:=ArrDI_OrgRgstr[(i*8 )+j];
      2:   OrgRgCrA30MEM[Crescendo].OrgRgMEM.2:=ArrDI_OrgRgstr[(i*8 )+j];
      3:   OrgRgCrA30MEM[Crescendo].OrgRgMEM.3:=ArrDI_OrgRgstr[(i*8 )+j];
      4:   OrgRgCrA30MEM[Crescendo].OrgRgMEM.4:=ArrDI_OrgRgstr[(i*8 )+j];
      5:   OrgRgCrA30MEM[Crescendo].OrgRgMEM.5:=ArrDI_OrgRgstr[(i*8 )+j];
      6:   OrgRgCrA30MEM[Crescendo].OrgRgMEM.6:=ArrDI_OrgRgstr[(i*8 )+j];
      7:   OrgRgCrA30MEM[Crescendo].OrgRgMEM.7:=ArrDI_OrgRgstr[(i*8 )+j];
      END_CASE
   END_FOR
   END_FOR
(*end pack*)

(*unpack*)
   FOR i:=0 TO 11 BY 1 DO
   FOR j:=0 TO 7 BY 1 DO
      CASE j OF
      0:   ArrRegCresA[(i*8 )+j]:=OrgRgCrA30MEM[Crescendo].OrgRgMEM.0;
      1:   ArrRegCresA[(i*8 )+j]:=OrgRgCrA30MEM[Crescendo].OrgRgMEM.1;
      2:   ArrRegCresA[(i*8 )+j]:=OrgRgCrA30MEM[Crescendo].OrgRgMEM.2;
      3:   ArrRegCresA[(i*8 )+j]:=OrgRgCrA30MEM[Crescendo].OrgRgMEM.3;
      4:   ArrRegCresA[(i*8 )+j]:=OrgRgCrA30MEM[Crescendo].OrgRgMEM.4;
      5:   ArrRegCresA[(i*8 )+j]:=OrgRgCrA30MEM[Crescendo].OrgRgMEM.5;
      6:   ArrRegCresA[(i*8 )+j]:=OrgRgCrA30MEM[Crescendo].OrgRgMEM.6;
      7:   ArrRegCresA[(i*8 )+j]:=OrgRgCrA30MEM[Crescendo].OrgRgMEM.7;
      END_CASE
   END_FOR
   END_FOR
(*end unpack*)