Quote by rh
@all,
typecasting of records to arrays and vice versa is not supported.
But with most cases a CopyBlock does the same.
We use a similar technique with an overlay, as Avra suggested, in our
programmers with the USB rx and tx buffers.
rolf
Hallo Rolf,
Code
var
RxBuf : tBuf64, align2; // USB incomming Buffer
TxBuf : tBuf64, align2; // USB outgoing Buffer
ONL[@RxBuf] : TPVSStatus; // Online Statusblock; <<< use overlay
RxBuf : tBuf64, align2; // USB incomming Buffer
TxBuf : tBuf64, align2; // USB outgoing Buffer
ONL[@RxBuf] : TPVSStatus; // Online Statusblock; <<< use overlay
Wenn ich das jetzt aber richtig verstehe, nutze ich hier nichts weiter als einen Pointer auf dem RxBuf, oder?
Dann spare ich mir zwar das Typcast, aber habe für ONL keinen eigenen Speicherbereich mehr, somit wäre das gesicherte Telegramm vom ONL beim nächsten Empfang von RxBuf wieder überschrieben
Aber wenn ich dieses Overlay nur nutze zum TypeCast, sollte es ganz gut gehen:
Code
var
RxBuf : tBuf64, align2; // USB incomming Buffer
TxBuf : tBuf64, align2; // USB outgoing Buffer
ONLRx[@RxBuf] : TPVSStatus; // Online Statusblock; <<< use overlay
ONL : TPVSStatus; // Online Statusblock;
......
// Bei der Zuweisung kann man dann ganz einfach wie folgt arbeiten
ONL := ONLRx; // Sichere Empfangsdaten
RxBuf : tBuf64, align2; // USB incomming Buffer
TxBuf : tBuf64, align2; // USB outgoing Buffer
ONLRx[@RxBuf] : TPVSStatus; // Online Statusblock; <<< use overlay
ONL : TPVSStatus; // Online Statusblock;
......
// Bei der Zuweisung kann man dann ganz einfach wie folgt arbeiten
ONL := ONLRx; // Sichere Empfangsdaten
Dadurch das ONLRx den selben Speicher nutzt wie RxBuf, kostet das auch nicht zusätzlich Speicher
OK, ist eine Möglichkeit.
Ich Danke euch für die Infos
Gruss
Thorsten (PVS-Deck)