Fuer alle, die an einer Lösung interessiert sind.
Hier ist die Lösung fuer mein Problem:
1. Große Strukturen sollten in !einer SetVar-Anweisung verschickt werden. Noch besser: Ganze Arrays in einer SetVar-Anweisung, wenn der XML-String hierdruch nicht größer als 4096 Byte wird.
2. Nach jedem Versendeten XML-Telegramm muss auf ein Reply-Telegramm gewartet werden und das Attribut "Result" muss TRUE sein. Bei Uebereinstimmung kann das naechste Telegramm verschickt werden, bei FALSE ist was schief gegangen und das Telegramm muss erneut versendet werden.
Hier ein Beispiel:
In $CONFIG.DAT ganz unten bei User declarations:\
STRUC STRUCTYP INT type, REAL value, E6POS pos1, pos2
In MeinProgramm.dat globale Deklaration meines Arrays:
GLOBAL STRUCTYP MeinArray[128] // bei der obrigen Structur maximal 247 Felder
In Host zu erzeugender XML-string:
<SetVar VarName="MeinArray[1]" VarValue="{STRUCTYP: type 1,value 5, pos1 {E6POS: X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0, E1 0.0..., E6 0, S 0, T 0}, pos2{E6POS: X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0, E1 0..., E6 0, S 0, T 0} }" />
Wenn ihr ein ganzes Array in einem Mal setzen wollt geht dies so:
<SetVar VarName="MeinArray[]" VarValue="
{STRUCTYP: type 1,value 5, pos1 {E6POS: X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0, E1 0..., E6 0, S 0, T 0}, pos2{E6POS: X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0, E1 0..., E6 0, S 0, T 0} } {STRUCTYP: type 1,value 5, pos1 {E6POS: X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0, E1 0..., E6 0, S 0, T 0}, pos2{E6POS: X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0, E1 0..., E6 0, S 0, T 0} } {STRUCTYP: type 1,value 5, pos1 {E6POS: X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0, E1 0..., E6 0, S 0, T 0}, pos2{E6POS: X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0, E1 0..., E6 0, S 0, T 0} } {STRUCTYP: type 1,value 5, pos1 {E6POS: X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0, E1 0..., E6 0, S 0, T 0}, pos2{E6POS: X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0, E1 0..., E6 0, S 0, T 0} } {STRUCTYP: type 1,value 5, pos1 {E6POS: X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0, E1 0..., E6 0, S 0, T 0}, pos2{E6POS: X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0, E1 0..., E6 0, S 0, T 0} } {STRUCTYP: type 1,value 5, pos1 {E6POS: X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0, E1 0..., E6 0, S 0, T 0}, pos2{E6POS: X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0, E1 0..., E6 0, S 0, T 0} } {STRUCTYP: type 1,value 5, pos1 {E6POS: X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0, E1 0..., E6 0, S 0, T 0}, pos2{E6POS: X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0, E1 0..., E6 0, S 0, T 0} } {STRUCTYP: type 1,value 5, pos1 {E6POS: X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0, E1 0..., E6 0, S 0, T 0}, pos2{E6POS: X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0, E1 0..., E6 0, S 0, T 0} } {STRUCTYP: type 1,value 5, pos1 {E6POS: X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0, E1 0..., E6 0, S 0, T 0}, pos2{E6POS: X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0, E1 0..., E6 0, S 0, T 0} }
" />
Die maximale Arraygröße sollte dabei bei Rund 15 Feldern liegen. Habe ich nicht probiert, muesst ihr testen.
Gruß Harry