nochmal ich... beschäftige mich immer noch mit Updatefähigkeit von knxprod-Versionen. IMHO macht hier CreateKnxProd einen Fehler! Ich habe testweise mal ein Gerät angelegt mit Version 10, das dann in Version 11 mit 1 neuen ParameterTyp, neuen Parameter und einem neuen KO versehen. Bei "ReplaceVersions" auch eine 10 eingetragen.
Die 11 konnte ich nicht importieren, dann habe ich ins XML geschaut und folgendes gesehen:
Code:
<ComObjectRefs>
<ComObjectRef Id="M-00FA_A-0014-0B-0000_O-1_R-1" RefId="M-00FA_A-0014-0B-0000_O-1" />
<ComObjectRef Id="M-00FA_A-0014-0B-0000_O-2_R-2" RefId="M-00FA_A-0014-0B-0000_O-2" />
<ComObjectRef Id="M-00FA_A-0014-0B-0000_O-3_R-3" RefId="M-00FA_A-0014-0B-0000_O-3" />
<ComObjectRef Id="M-00FA_A-0014-0B-0000_O-4_R-4" RefId="M-00FA_A-0014-0B-0000_O-4" />
<ComObjectRef Id="M-00FA_A-0014-0B-0000_O-5_R-5" RefId="M-00FA_A-0014-0B-0000_O-5" />
<ComObjectRef Id="M-00FA_A-0014-0B-0000_O-6_R-6" RefId="M-00FA_A-0014-0B-0000_O-6" />
<ComObjectRef Id="M-00FA_A-0014-0B-0000_O-7_R-7" RefId="M-00FA_A-0014-0B-0000_O-7" />
<ComObjectRef Id="M-00FA_A-0014-0B-0000_O-8_R-8" RefId="M-00FA_A-0014-0B-0000_O-8" />
<ComObjectRef Id="M-00FA_A-0014-0B-0000_O-9_R-9" RefId="M-00FA_A-0014-0B-0000_O-9" />
<ComObjectRef Id="M-00FA_A-0014-0B-0000_O-10_R-10" RefId="M-00FA_A-0014-0B-0000_O-10" />
<ComObjectRef Id="M-00FA_A-0014-0B-0000_O-11_R-11" RefId="M-00FA_A-0014-0B-0000_O-11" />
<ComObjectRef Id="M-00FA_A-0014-0B-0000_O-12_R-12" RefId="M-00FA_A-0014-0B-0000_O-12" />
<ComObjectRef Id="M-00FA_A-0014-0B-0000_O-13_R-13" RefId="M-00FA_A-0014-0B-0000_O-13" />
<ComObjectRef Id="M-00FA_A-0014-0B-0000_O-14_R-14" RefId="M-00FA_A-0014-0B-0000_O-14" />
</ComObjectRefs>
Code:
<ComObjectRefRef RefId="M-00FA_A-0014-0A-0000_O-1_R-1" />
<ComObjectRefRef RefId="M-00FA_A-0014-0A-0000_O-2_R-2" />
<ComObjectRefRef RefId="M-00FA_A-0014-0A-0000_O-3_R-3" />
<ComObjectRefRef RefId="M-00FA_A-0014-0A-0000_O-4_R-4" />
<ComObjectRefRef RefId="M-00FA_A-0014-0A-0000_O-5_R-5" />
<ComObjectRefRef RefId="M-00FA_A-0014-0A-0000_O-6_R-6" />
<ComObjectRefRef RefId="M-00FA_A-0014-0A-0000_O-7_R-7" />
<ComObjectRefRef RefId="M-00FA_A-0014-0A-0000_O-8_R-8" />
<ComObjectRefRef RefId="M-00FA_A-0014-0A-0000_O-9_R-9" />
<ComObjectRefRef RefId="M-00FA_A-0014-0A-0000_O-10_R-10" />
<ComObjectRefRef RefId="M-00FA_A-0014-0A-0000_O-11_R-11" />
<ComObjectRefRef RefId="M-00FA_A-0014-0A-0000_O-12_R-12" />
<ComObjectRefRef RefId="M-00FA_A-[COLOR=#FF0000]0014-0A[/COLOR]-0000_O-13_R-13" />
</ParameterBlock>
</ChannelIndependentBlock>
Nachtrag: Nachdem ich manuell alle ID's auf 0014-0B geändert habe, konnte ich importieren und ein Update machen.
Nachtrag 2: Inzwischen glaube ich, dass Du beim erneuten öffnen nicht sauber abräumst. Ich hab mir mit mal die Version 10 und 11 angeschaut und wollte dann noch eine 12 machen (leider weiß ich nicht mehr exakt die Editier-Schritte, ich versuche die aber noch zu reproduzieren). In der 12 (als SaveAs von der 11) hatte ich dann alle ParameterTypes von 10 (mit 0014-0A), von 11 (mit 0014-0B) und von 12 (mit 0014-0C). Dann kamen alle Parameter von 10 mit der ParameterID 0014-0C-nn, aber mit der Typreferenz auf den Parametertyp von 10 (0014-0A), gefolgt von allen Parametern von 11 wieder mit der ParameterID 0014-0C-nn, wobei nn einfach fortlaufend weiter nummeriert wurde und wieder die Typreferenz auf den Parametertyp von 11 (0014-0B) und dann die Parameter von 12. Hier mal repräsentative Ausschnitte:
Code:
<Parameters>
<Parameter Id="M-00FA_A-[COLOR=#FF0000]0014-0C[/COLOR]-0000_P-1" Name="StartupDelay" ParameterType="M-00FA_A-[COLOR=#FF0000]0014-0A[/COLOR]-0000_PT-DelaySeconds" Text="Anlaufzeit des Moduls nach Neustart" Value="10">
<Memory CodeSegment="M-00FA_A-0014-0C-0000_RS-04-00000" Offset="0" BitOffset="0" />
</Parameter>
<Parameter Id="M-00FA_A-[COLOR=#FF0000]0014-0C[/COLOR]-0000_P-2" Name="Heartbeat" ParameterType="M-00FA_A-[COLOR=#FF0000]0014-0A[/COLOR]-0000_PT-DelaySeconds" Text="'In Betrieb' Signal senden (0=nicht senden)" Value="600">
<Memory CodeSegment="M-00FA_A-0014-0C-0000_RS-04-00000" Offset="4" BitOffset="0" />
</Parameter>
...
<Parameter Id="M-00FA_A-[COLOR=#FF0000]0014-0C[/COLOR]-0000_P-[COLOR=#FF0000]43[/COLOR]" Name="StartupDelay" ParameterType="M-00FA_A-[COLOR=#FF0000]0014-0B[/COLOR]-0000_PT-DelaySeconds" Text="Anlaufzeit des Moduls nach Neustart" Value="10">
<Memory CodeSegment="M-00FA_A-0014-0C-0000_RS-04-00000" Offset="144" BitOffset="0" />
</Parameter>
<Parameter Id="M-00FA_A-[COLOR=#FF0000]0014-0C[/COLOR]-0000_P-[COLOR=#FF0000]44[/COLOR]" Name="Heartbeat" ParameterType="M-00FA_A-[COLOR=#FF0000]0014-0B[/COLOR]-0000_PT-DelaySeconds" Text="'In Betrieb' Signal senden (0=nicht senden)" Value="600">
<Memory CodeSegment="M-00FA_A-0014-0C-0000_RS-04-00000" Offset="148" BitOffset="0" />
</Parameter>
...
<Parameter Id="M-00FA_A-[COLOR=#FF0000]0014-0C[/COLOR]-0000_P-[COLOR=#FF0000]129[/COLOR]" Name="StartupDelay" ParameterType="M-00FA_A-[COLOR=#FF0000]0014-0C[/COLOR]-0000_PT-DelaySeconds" Text="Anlaufzeit des Moduls nach Neustart" Value="10">
<Memory CodeSegment="M-00FA_A-0014-0C-0000_RS-04-00000" Offset="434" BitOffset="0" />
</Parameter>
<Parameter Id="M-00FA_A-[COLOR=#FF0000]0014-0C[/COLOR]-0000_P-[COLOR=#FF0000]130[/COLOR]" Name="Heartbeat" ParameterType="M-00FA_A-[COLOR=#FF0000]0014-0C[/COLOR]-0000_PT-DelaySeconds" Text="'In Betrieb' Signal senden (0=nicht senden)" Value="600">
<Memory CodeSegment="M-00FA_A-0014-0C-0000_RS-04-00000" Offset="438" BitOffset="0" />
</Parameter>
Das alles nur zur Info, ich nutze die CreateKnxProd normalerweise nicht zum editieren, sondern nur zum Signieren, insofern stört mich der Fehler jetzt nicht besonders...
Gruß, Waldemar


.
rogMode geändert. Damit das funktioniert, müsste man das digitalwrite dort rausnehmen und im KnxFacade::loop die Led an oder ausschalten je nachdem ob _bau.deviceObject().progMode() true ist oder nicht.
Einen Kommentar schreiben: