TIA SCL: String in AT-Sicht beschreiben

Zuviel Werbung?
-> Hier kostenlos registrieren
Wo kämen wir denn hin, wenn alleinig eine Sicht auf eine Variable deren Inhalt verändern würde? Das darf doch gar nicht gehen!
Und wenn man die Überlagerung andersrum deklariert?
Code:
WriteData : "RfidUserdata64byte";
WriteDataArray AT WriteData : Array[1..64] of Byte;
Da dürfte doch der String inklusive Headerbytes initialisiert werden?

Oder man initialisiert die Bytes des deklarierten Arrays mit einer 20 in dem Byte wo die Stringlänge liegt.

Wo ist die Überlagerung deklariert? In Output? Da soll aber ein unstrukturiertes Array übergeben werden?
Könnte man nicht lokal (z.B. in Static) eine Instanz des UDT mit dem String deklarieren und initialisieren, und nach dem Füllen mit Daten in das Ausgangs-Array kopieren?

Harald
 
Ich würde ja anstelle eines Array of Byte ein Array of Char nehmen, und das dann mit Chars_TO_Strg in einen String konvertieren, daran meine Bearbeitungen vornehmen und diesen dann wieder mit Strg_TO_Chars zurückschreiben.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Oder Du nutzt Serialize um den udt auf das Byte-Array zu übertragen. Dann fällt auch das halboptimierte unter den Tisch.
Markus, mit "Serialize" und "Deserialize" kannst du einen UDT recht einfach in ein ARRAY of Byte verschieben, bzw. umgekehrt. Vielleicht vereinfacht es ja die Sache, wenn du mit dem UDT arbeitest, und erst zur Übergabe zu dem Identbaustein die Daten in das ARRAY verschiebst? Das wäre aus meiner "Sicht" die richtige Richtung.

Der Baustein "Write" ist bestimmt optimiert?
Ja, Write ist optimiert, sonst gäbe es das "Remanenz im IDB setzen" nicht, welches diese Optimierung "umgeht".

Und ich denke auch, das Serialize hier der sauberste Weg wäre, zumal Markus eh' ein Array of Byte nutzen möchte.
 
Das müsste auch funktionieren, und das wäre vielleicht das Einfachste.
Nicht unbedingt, da Markus ja vermutlich außerhalb des FBs das Array zum Senden benötigt:
Alternativ könntest Du noch das ByteArray über den udt legen (statt udt über ByteArray).
So bleibt zumindest die String-Deklaration erhalten.

Dann muss die Sicht aber vermutlich in den Static-Bereich und das gleiche Array noch mal auf den Out (OutArray := AtArray), damit Du es außerhalb weiterverwenden kannst.
 
Zurück
Oben