Zitat von jeff25
Beitrag anzeigen
jeff25 ; thesing : Die xml hat bestimmt >200 Revisionen hinter sich (und ich bin immer noch nicht zufrieden). Es begann normal mit CreateKnxProd, dadurch war der Rahmen gegeben, der einen Import in die ETS erlaubt hat. Dann habe ich mit CreateKnxProd ein paar Sachen verändert und ergänzt und mir die Diffs angeschaut. Dann wurde ziemlich schnell klar, wie die Sachen zusammen hängen. Und dann habe ich angefangen, mir andere knxprod anzuschauen und so gelernt, was man noch machen kann. Dann hab ich mir ein Tool geschrieben (übrigens auch in C#), dass mir meine Kanalanzahl generiert (sind ja immer gleiche Teile) und den Rest hab ich per Hand geschrieben. Dann musste das Tool auch noch ein paar Sanity-Checks machen (Id-Eindeutigkeit, RefId müssen auf existierende Id zeigen, ParamRefId auf existierende ParamRefRef usw.). Inzwischen macht es auch den CreateKnxProd-Export und generiert ein Header-File mit allen KO- und Parameter-defines.
Nachteil: Es ist überhaupt nicht generisch, sondern sehr an meine Anwendung angepasst, deswegen kann ich es auch nicht sinnvoll Teilen... Aber für die ca. 67.000 Zeilen XML, die ein Sensormodul mit 50 Logikkanälen braucht, habe ich nur 2000 Zeilen XML händisch geschrieben. Rest wird generiert.
Zitat von thesing
Beitrag anzeigen
Zitat von thesing
Beitrag anzeigen
Und zu DPT *.0: Ich fände es gar nicht schlecht, wenn es die gäbe, also z.B. DPT 9.0 (in der ETS als DPT 9.*) als 2-byte-float ohne weitere checks und Semantik. Manchmal hat man Werte zum Ausgeben, die wirklich nicht in irgendeinen existierenden DPT passen. Oder ich hatte mal DPT 9.001 genommen und mich gewundert, warum -1000 nicht empfangen bzw. gesendet wurde und später im Coding gesehen, dass Du auf den absoluten Nullpunkt prüfst. Hut ab - gehört zur Vollständigkeit der Semantik vom "Temperatur", aber ich wollte einfach nur einen Float transportieren. Ging dann eben mit 9.002...
Und um zu "belegen", dass es auch "offiziell" in der ETS geht: Ich kann einem KO ein DatapointType="DPST-9-1" geben, aber auch ein DatapointType="DPT-9", der hat keinen Subtype, wird aber normal akzeptiert.
Gruß, Waldemar



). Da kann man ja auch zu jedem Telegramm in Hex sehen, was alles übertragen wird. Bei einem Programmiervorgang werden ja vom SAMD haufenweise Antworten gesendet, und die fangen alle mit 0x2900 an. Und da das ein Protokoll vom SAMD an die ETS war, ging ich immer davon aus, dass die 0x2900 entsprechend mitgesendet wurde. Woher kommt das, wenn nicht vom SAMD? Wenn ich ein "resetDevice" mit der ETS mache, sehe ich auch eine bestimmte Telegrammabfolge im Gruppenmonitor, einige Frames fangen aber mit 0x2E00 an. Wenn ich "resetDevice" mit dem SAMD mache, sehe ich NICHTS im Gruppenmonitor, es gibt aber (TP-)Geräte, die auf dieses Reset reagieren und welche, die es nicht tun (ok, bisher nur jeweils 1 gefunden und nicht weiter gesucht).
Einen Kommentar schreiben: