Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched.
Close
ich möchte während der Laufzeit des Programms dynamisch Grafiken in meiner Target-Visualisierung erzeugen.
Dazu habe ich probiert die Funktionen der SysLibTargetVisu zu benutzen, doch bis jetzt leider ohne Erfolg.
Meine Idee war z.B. die folgenden Funktionen zu nutzen:
BeginPaint
DrawRect
EndPaint
Hat jemand schon mal mit der Lib gearbeitet und kann mir sagen wie ich die Funktionen aufrufen muss?
Gruß,
mde
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
funktioniert so nicht, Begin und Endpaint kapseln die Visualisierungsaufrufe von Input, Paint oder beiden (z.B. bei den Init-Routinen)
Wenn die Targetvisu als automatische Task konfiguriert ist, erfolgen diese Aufrufe in den beiden Tasks (plus Ini-Routinen).
Es funktioniert nur, wenn die Automatische Targetvisualisierung nicht aktiviert ist und die Funktionen in eigenen Tasks ausgeführt werden
VISU_TASK und VISU_INPUT_TASK dürfen in der Taskkonfiguration nicht aufgeführt sein.
Die Grundstruktur sollte dann so sein (Auszug aus Programm):
(*Initialisieren von Variablen*)StopVisu('');BeginPaint('PLC_VISU',1,-1,16#00FFFFFF);hAckbutton50x50:=SendBitmap('ackbutton50x50.bmp');....EndPaint('PLC_VISU',1);(*Input*)BeginPaint('PLC_VISU',4,-1,16#00FFFFFF);IFgMainButtons.Pressed.EditTHENÂ Â IFIsClickedRect(312,372,493,413,TRUE,TRUE,0,TRUE)=1THENÂ Â Â Â gMachineParams.SafetyBridge.ParValue[PLEV_Edit].Value:=NOTgMachineParams.SafetyBridge.ParValue[PLEV_Edit].Value;Â Â END_IFÂ Â IFIsClosedEditC('gMachineParams.LevelWeightFactor.ParValue[PLEV_Edit].Value')THENÂ Â Â Â RTGraphic_String:=ReturnEnteredValue('gMachineParams.LevelWeightFactor.ParValue[PLEV_Edit].Value');Â Â Â Â gMachineParams.LevelWeightFactor.ParValue[PLEV_Edit].Value:=STRING_TO_REAL(RTGraphic_String);Â Â END_IFÂ Â IFIsClickedEditC(72,132,253,173,TRUE,TRUE,TRUE)Â THENÂ Â Â Â DrawEditC(72,132,253,173,REAL_TO_STRING(gMachineParams.LevelWeightFactor.ParValue[PLEV_Edit].Value),'gMachineParams.LevelWeightFactor.ParValue[PLEV_Edit].Value',6,2,'','','');Â Â END_IF....EndPaint('PLC_VISU',4);(*Paint*)BeginPaint('PLC_VISU',2,-1,16#00FFFFFF);SetFont('Arial',12,2,0);SetFill(1,16#00E8E8E8);SetLine(1,5,16#000);RTGraphic_Text:=Printf('%<Params>',UINT_TO_DWORD(PAR_LevelWeightFactor),40);DrawRect(82,102,253,133,RTGraphic_Text,DF_BOTTOMORDF_LEFT,0,TRUE);SetFill(0,SEL(gMachineParams.LevelWeightFactor.Flags.ValueChanged,SEL(NOTgMainButtons.Pressed.Edit,COL_White,COL_Disabled),COL_ValueChanged));DrawRect(76,134,248,168,'',DF_VCENTERORDF_HCENTER,1,TRUE);SetLine(1,5,16#000);RTGraphic_Text:=Printf('%<Params>',UINT_TO_DWORD(PAR_SafetyBridge),40);DrawRect(345,374,488,408,RTGraphic_Text,DF_VCENTERORDF_HCENTER,1,TRUE);SetFill(0,SEL(gMachineParams.SafetyBridge.Flags.ValueChanged,SEL(NOTgMainButtons.Pressed.Edit,COL_White,COL_Disabled),COL_ValueChanged));DrawRect(314,379,339,404,'',DF_VCENTERORDF_HCENTER,0,TRUE);SetFill(1,16#00FFFFFF);SetLine(1,0,16#000);DrawBitmap(SEL(gMachineParams.SafetyBridge.ParValue[PLEV_Edit].Value,hCheckbox180x40,hCheckbox180x40p),313,373,492,412,2,16#80FFFFFF,TRUE);EndPaint('PLC_VISU',2);
Die Sonderregelungen, die bei der TargetVisu sonst angewendet werden (z.B Variablenzugriff) gelten dann nicht mehr, hier ist nach der Standardkonvention zu porgrammieren (global oder IN/OUT Richtungsgenau zuweisen)
mit freundlichen Grüßen
C. Esterbauer
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo,
ich möchte während der Laufzeit des Programms dynamisch Grafiken in meiner Target-Visualisierung erzeugen.
Dazu habe ich probiert die Funktionen der SysLibTargetVisu zu benutzen, doch bis jetzt leider ohne Erfolg.
Meine Idee war z.B. die folgenden Funktionen zu nutzen:
BeginPaint
DrawRect
EndPaint
Hat jemand schon mal mit der Lib gearbeitet und kann mir sagen wie ich die Funktionen aufrufen muss?
Gruß,
mde
Hallo mde,
funktioniert so nicht, Begin und Endpaint kapseln die Visualisierungsaufrufe von Input, Paint oder beiden (z.B. bei den Init-Routinen)
Wenn die Targetvisu als automatische Task konfiguriert ist, erfolgen diese Aufrufe in den beiden Tasks (plus Ini-Routinen).
Es funktioniert nur, wenn die Automatische Targetvisualisierung nicht aktiviert ist und die Funktionen in eigenen Tasks ausgeführt werden
VISU_TASK und VISU_INPUT_TASK dürfen in der Taskkonfiguration nicht aufgeführt sein.
Die Grundstruktur sollte dann so sein (Auszug aus Programm):
Die Sonderregelungen, die bei der TargetVisu sonst angewendet werden (z.B Variablenzugriff) gelten dann nicht mehr, hier ist nach der Standardkonvention zu porgrammieren (global oder IN/OUT Richtungsgenau zuweisen)
mit freundlichen Grüßen
C. Esterbauer