Hallo,
entweder ich habe einen Denkfehler oder es geht nicht
Ich habe in Delphi einen Type in Form eines Records angelegt, in Summe 32 Words, wegen der Lesbarkeit der Werte habe ich hier kein ARRAY, sondern ein Record gewählt.
In AVRco wurde genau das gleiche Type angelegt. Nun werden über USB Datenempfangen:
type
tBuf64 = Array[0..63] of byte;
//Status Struktur ONLINE!
TPVSStatus = record
Kennung : WORD; (* 0 Kennung für USB Transfer *)
CMD : WORD; (* 2 Cmd Befehl *)
WM0002_WORK_Ges_Zeit : WORD; (* 4 Gesamte Überbrückungszeit*)
WM0004_Timer_Bruecke_Wert : WORD; (* 6 laufende Überbrückungszeit*)
WM0006_Ber_Zeit : WORD; (* 8 Berechtigte Zeit*)
WM0018_AufZeit : WORD; (* 10 Öffnungszeit *)
WM005A_ZeitWertHupe : WORD; (* 12 Timer Hupe*)
WM005B_TempAufZeit : WORD; (* 14 Öffnungszeit als TEMP Zeit *)
WM005C_Hupe_Zeit : WORD; (* 16 Geladene Zeit Hupe *)
WX0000_Input : WORD; (* 18 Input *)
WY0010_Output : WORD; (* 20 Output *)
WRF03E_PotLinks : WORD; (* 22 PotiLinks *)
WRF03F_PotRechts : WORD; (* 24 PotiRechts *)
WM001b_HupeZeit : WORD; (* 26 ZeitWertHupe *)
R7E2_RUN : WORD; (* 28 1= RUN 0= STOP*)
WM005D_RadarTriggerZeit : WORD; (* 30 laufende Zeit Trigger *)
WM0031_RadarTriggerTime_MW049 : WORD; (* 32 Radar Trigger Time *)
WM005E_RadarDeadZeit : WORD; (* 34 laufende Zeit DeadTime *)
WM0030_RadarDeadTime_MW048 : WORD; (* 36 Radar DeadTime *)
WM_Status0 : WORD; (* 38 Status0.0 Freigabe Aktiv / .1 NOTAUF / .2 ALARM / .3 Freigabe Aktiv *)
WM_Reserve_040 : WORD; (* 40 *)
WM_Reserve_042 : WORD; (* 42 *)
WM_Reserve_044 : WORD; (* 44 *)
WM_Reserve_046 : WORD; (* 46 *)
WM_Reserve_048 : WORD; (* 48 *)
WM_Reserve_050 : WORD; (* 50 *)
WM_Reserve_052 : WORD; (* 52 *)
WM_Reserve_054 : WORD; (* 54 *)
WM_Reserve_056 : WORD; (* 56 *)
WM_Reserve_058 : WORD; (* 58 *)
WM_Reserve_060 : WORD; (* 60 *)
WM_Reserve_062 : WORD; (* 62 *)
end;
.......
{ Var Declarations }
{$IDATA}
VAR
RxBuf : tBuf64, align2; // USB incomming Buffer
TxBuf : tBuf64, align2; // USB outgoing Buffer
ONL : TPVSStatus; // Online Statusblock
....
Wenn jetzt die Daten über USB empfangen werden, dann soll er den RxBuf in die Valiable ONL ablegen, unter Delphi mache ich das andauernd ohne Probleme, aber im AVRco führt die Funktion
Zu der Compilerfehlermeldung "Type Missmatch! record expected", ist diese Art der Typenwandlung zu Complex für AVRco? Oder muss ich AVRco austricksen, indem ich über Pointer gehe?
Gruss
Thorsten
entweder ich habe einen Denkfehler oder es geht nicht
Ich habe in Delphi einen Type in Form eines Records angelegt, in Summe 32 Words, wegen der Lesbarkeit der Werte habe ich hier kein ARRAY, sondern ein Record gewählt.
In AVRco wurde genau das gleiche Type angelegt. Nun werden über USB Datenempfangen:
Code
type
tBuf64 = Array[0..63] of byte;
//Status Struktur ONLINE!
TPVSStatus = record
Kennung : WORD; (* 0 Kennung für USB Transfer *)
CMD : WORD; (* 2 Cmd Befehl *)
WM0002_WORK_Ges_Zeit : WORD; (* 4 Gesamte Überbrückungszeit*)
WM0004_Timer_Bruecke_Wert : WORD; (* 6 laufende Überbrückungszeit*)
WM0006_Ber_Zeit : WORD; (* 8 Berechtigte Zeit*)
WM0018_AufZeit : WORD; (* 10 Öffnungszeit *)
WM005A_ZeitWertHupe : WORD; (* 12 Timer Hupe*)
WM005B_TempAufZeit : WORD; (* 14 Öffnungszeit als TEMP Zeit *)
WM005C_Hupe_Zeit : WORD; (* 16 Geladene Zeit Hupe *)
WX0000_Input : WORD; (* 18 Input *)
WY0010_Output : WORD; (* 20 Output *)
WRF03E_PotLinks : WORD; (* 22 PotiLinks *)
WRF03F_PotRechts : WORD; (* 24 PotiRechts *)
WM001b_HupeZeit : WORD; (* 26 ZeitWertHupe *)
R7E2_RUN : WORD; (* 28 1= RUN 0= STOP*)
WM005D_RadarTriggerZeit : WORD; (* 30 laufende Zeit Trigger *)
WM0031_RadarTriggerTime_MW049 : WORD; (* 32 Radar Trigger Time *)
WM005E_RadarDeadZeit : WORD; (* 34 laufende Zeit DeadTime *)
WM0030_RadarDeadTime_MW048 : WORD; (* 36 Radar DeadTime *)
WM_Status0 : WORD; (* 38 Status0.0 Freigabe Aktiv / .1 NOTAUF / .2 ALARM / .3 Freigabe Aktiv *)
WM_Reserve_040 : WORD; (* 40 *)
WM_Reserve_042 : WORD; (* 42 *)
WM_Reserve_044 : WORD; (* 44 *)
WM_Reserve_046 : WORD; (* 46 *)
WM_Reserve_048 : WORD; (* 48 *)
WM_Reserve_050 : WORD; (* 50 *)
WM_Reserve_052 : WORD; (* 52 *)
WM_Reserve_054 : WORD; (* 54 *)
WM_Reserve_056 : WORD; (* 56 *)
WM_Reserve_058 : WORD; (* 58 *)
WM_Reserve_060 : WORD; (* 60 *)
WM_Reserve_062 : WORD; (* 62 *)
end;
.......
{ Var Declarations }
{$IDATA}
VAR
RxBuf : tBuf64, align2; // USB incomming Buffer
TxBuf : tBuf64, align2; // USB outgoing Buffer
ONL : TPVSStatus; // Online Statusblock
....
Wenn jetzt die Daten über USB empfangen werden, dann soll er den RxBuf in die Valiable ONL ablegen, unter Delphi mache ich das andauernd ohne Probleme, aber im AVRco führt die Funktion
Code
ONL:= TPVSStatus(RxBuf); //sichere die übertragenen Daten
Zu der Compilerfehlermeldung "Type Missmatch! record expected", ist diese Art der Typenwandlung zu Complex für AVRco? Oder muss ich AVRco austricksen, indem ich über Pointer gehe?
Gruss
Thorsten