Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

Allgemeine Info zu BiDiB:


Treiberinstallation:


Programme für BiDiB:


Das BiDiB-System:

One-Serie:

Addon-Module:

Beispielkonfigurationen:


Das OpenCarSystem:


Anwendungsunterstützung:


Kompatibilität:


Codehilfe für eigene BiDiBOne Entwicklungen:

monitor:cv-definitionsfileneu

XML-Struktur einer CV-Definitionsdatei 2.0

Diese Seite beschreibt die zweite Struktur Version von CV-Definitionsdateien.

Die neue Version wird im ersten Release (Sep/Okt '16) vorerst nur bei den Decoder Definitionen Anwendung finden. (BiDiB-Node Definitionen bleiben unberührt)

Vorkonfigurierte Decoder Definitionen können zukünftig von der neuen Decoder Datenbank Decoder DB bezogen werden. Das neue Format wird in einem überarbeiteten Editor im neusten Release vom BiDiB-Monitor unterstützt.

Hinweise

* Alle XML-Tags und Attribute sind Case-Sensitiv im camelCase Format. Groß- und Kleinschreibung muss beachtet werden.

neu: <vendorcv></vendorcv> (alt: <VendorCV></VendorCV>)

1. Grundstruktur

Die XML-Datei besteht aus drei Teilen.
Im ersten Teil werden Informationen zur Version der Datei hinterlegt.
Im zweiten können (optional) Templates für mehrfach vorkommende CV-Blöcke definiert werden.
Im dritten Abschnitt wird die Baumstruktur festgelegt und die CV’s definiert.
Alle Teile müssen innerhalb von <VendorCV></VendorCV> stehen.

<?xml version="1.0" encoding="utf-8" ?>
<firmwareDefinition xmlns="http://www.bidib.org/schema/firmware/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ct="http://www.bidib.org/schema/commonTypes/1.0" >
  <Version /><!-- ...Info-Bereich... -->
  <Options /><!-- ...Decoder-Optionen -->
  <Links>
    <!-- ...Links zum Anbieter, Bilder, Manual ... -->
  </Links>
  <CVs>
    <!-- ...Liste aller CVs ... -->
  </CVs>    
  <CVDefinition>
    <!-- ...Baumstruktur... -->
    <Node>
      <Description />
      <CVRef />
    </Node>
  </CVDefinition>
  <Templates>
    <!-- ...Templates...  -->
    <Template Name="xyz">
    </Template>
  </Templates>
</VendorCV>

2. Info-Abschitt

Der Info-Abschnitt der Datei liefert Information über die Datei und den Decoder.

<Version Version="0.3" Author="Tillner, Andreas" ProductName="BiDiBOne OneOC"
  Vendor="13" Pid="204" Lastupdate="2013-08-31">
  <Description Lang="de">20x OC-Input
  </Description>
</Version>
Attribut Beschreibung
Version Version der Datei (optional)
Author Author der Datei (optional)
ProductName Decoder-Name
Vendor NMRA-Hersteller-ID
Pid Product-ID (optional)
Firmware Firmware-Version des Decoders
Lastupdate Letzte Änderung an der Datei (YYYY-MM-DD) (optional)
Created Anlegedatum der Datei (YYYY-MM-DD) (optional)
ReleaseDate Veröffentlichung der Firmware (YYYY-MM-DD) (optional)

Es können Links zum Hersteller, Manual und zu Bilder definiert werden:

<Links>
  <VendorUrl src="www.hersteller.de"/>
  <Manual src="http://www.hersteller.de/Manuals/product.pdf"/>
  <Images>
    <Image src="http://www.hersteller.de/Images/product-1.jpg"/>
    <Image src="http://www.hersteller.de/Images/product-2.jpg"/>
  </Images>
</Links>

Diese Daten werden im Monitor dann wie im Bild dargestellt.


3. CV definieren

Eine <CV></CV> Definition bildet immer einen Endknoten in der Baumstruktur.
Eine CV wird mit folgendem XML-Block definiert:

<CV Number="0" Type="Byte" Min="0" Max="255" Values="" Mode="ro" >
  <Description Lang="de" Text="Version" Help="Zeigt die EEPROM Version" />
  <Description Lang="en" Text="Version" Help="Shows the EEPROM version" />
</CV>
Datentyp (Type) Beschreibung
Byte Wertebereich 0 - 255 (8 Bit)
Bit Es können bis zu 8 Bits definiert werden, Anzeige als Checkboxen
Radio Es können bis zu 255 Werte definiert werden, Anzeige als Radio-Buttons
DccLongAddr Lange Lok-Adresse
DccAccAddr Lange Zubehör-Adresse
Int Wertebereich 0 - 65.535 (16 Bit, little endian)
SignedByte Wertebereich -128 - 127 (8 Bit)
Long Wertebereich 0 - 4.294.967.295 (32 Bit, little endian)
DccAddrRG Für BiDiB, siehe unten
GBM16TReverser Für BiDiB, siehe unten
Attribut Beschreibung
Number Die Nummer der CV
Type siehe oben
Min Minimalwert für diese CV
Max Maximalwert für diese CV
Default Standardwert der CV
Low Bei Type „Int“, „DccLongAddr“ und „DccAccAddr“ wird hier die CV des Lowbyte eingetragen
High Bei Type „Int“, „DccLongAddr“ und „DccAccAddr“ wird hier die CV des Lowbyte eingetragen
Index31 Wert für Index-CV 31
Index32 Wert für Index-CV 32
Activebits Type „Bit“: Einschränkung auf einzelne Bits, durch ; getrennt
Mode Änderbarkeit: „rw“ = read/write, „ro“ = read only, „wo“ = write only, „w“ = write, „h“ = hide
Rebootneeded CV-Änderung wird erst bei einem Neustart des Knoten wirksam - „true“ (BiDiB)

<Description> definiert den beschreibenden Text der CV:

Attribut Beschreibung
Lang Sprache des beschreibenden Textes. (de, en, …)
Text Beschreibung der CV in der jeweiligen Sprache.
Help Hilfebeschreibung der CV in der jeweiligen Sprache.

Gültige Werte vorgeben : Bei den CV-Typen „Bit“ und „Byte“, können dem Anwender, mit Min Max und Values Werte für die CV vorgegeben werden.
Wenn Values eine, durch „;“ getrennte, Liste von Werten enthält, werden Min und Max nicht berücksichtigt.


3.1. CV-Type "Byte"

Durch Mausklick auf eine CV vom Type „Byte“, wird im unteren, rechten Bereich eine Eingabemaske
für den Bytewert angezeigt.


Über die Attribute Min, Max und Values können die möglichen Eingaben vorgegeben werden.

Beispiele für Type=„Byte“:
Hier wird die Eingabe nicht eingegrenzt. Alle Werte von 0 bis 255 sind möglich. Der Standard-Wert ist 5.

<CV Number="51" Type="Byte" Min="0" Max="255" Default="5" Mode="rw">
  <Description Lang="de" Text="Test-CV"/>
  <Description Lang="en" Text="CV for some tests"/>
</CV>

Hier wird die Eingabe über die Min- und Max-Werte auf 3 bis 20 eingegrenzt.

<CV Number="51" Type="Byte" Min="3" Max="20" Mode="rw">
  <Description Lang="de" Text="Test-CV"/>
  <Description Lang="en" Text="CV for some tests"/>
</CV>

Hier wird die Eingabe über Values auf die Werte 4, 6, 13 und 20 beschränkt.
Min und Max werden ignoriert.

<CV Number="51" Type="Byte" Min="3" Max="20" Values="4;6;13;20" Mode="rw">
  <Description Lang="de" Text="Test-CV"/>
  <Description Lang="en" Text="CV for some tests"/>
</CV>

3.2. CV-Type "Bit"

<CV Number="4" Type="Bit" Default="0" Mode="rw" >
  <Description Lang="de" Text="Messstrecke aktiviert" />
  <Description Lang="en" Text="measuring track is aktive"/>
  <Bit Number="0">
    <Description Lang="de" Text="Messstrecke aktiv" Help="" />
    <Description Lang="en" Text="measuring track aktive" Help="" />
  </Bit>
  <Bit Number="1">
    <Description Lang="de" Text="Sende Messwert an Host"/>
    <Description Lang="en" Text="Send result to host"/>
  </Bit>
</CV>

Ist der Type „Bit“ für die CV angeben, werden für jedes Bit Checkboxen angezeigt. Es können mehrere Bits aktiviert sein.

Über das Tag <Description> (siehe oben) kann für jedes Bit eine Beschreibung und ein Hilfetext hinterlegt werden.

Attribut Beschreibung
Number Bit-Nummer beginnend mit 0

3.3. CV-Type "Bit" mit Gruppierung

In dem „normalen“ CV-Type „Bit“ können alle Bits gleichzeitig angeklickt werden.
Für eine Auswahlliste ist es aber Sinnvoll, immer nur eine Option zuzulassen.
Wählt man eine Option an, werden die anderen „abgewählt“ (Radiobutton).
Um beide Möglichkeiten zu kombinieren, wurde das Attribut „Group“ eingeführt.

<CV Number="81" Type="Bit" Default="2" Mode="rw" >
  <Description Lang="de" Text="Anzeige-Hardware"/>
  <Description Lang="en" Text="Display-Hardware"/>
  <Bit Number="0" Group="0">
    <Description Lang="de" Text="Kein Display angeschlossen"/>
    <Description Lang="en" Text="no display connected"/>
  </Bit>
  <Bit Number="1" Group="0">
    <Description Lang="de" Text="20 LEDs (Portstatus)"/>
    <Description Lang="en" Text="20 LEDs for Portstatus"/>
  </Bit>
  <Bit Number="2" Group="1">
    <Description Lang="de" Text="LCD DOGM163 16 x 3"/>
    <Description Lang="en" Text="LCD DOGM163 16 x 3"/>
  </Bit>
  <Bit Number="3" Group="1">
    <Description Lang="de" Text="7-Segment LED ( vierstellig )"/>
    <Description Lang="en" Text="7-Segment LED ( four digits )"/>
  </Bit>
  <Bit Number="7">
    <Description Lang="de" Text="Ausgabe im Debug-Interface (FTDI)"/>
    <Description Lang="en" Text="Output in Debug-Interface (FTDI)"/>
  </Bit>
</CV>

Das Attribut „Group“ gibt an, welche Bits als Auswahlliste verwendet werden.
Die anderen Bits können, wie im CV-Type „Bit“, weiter an- und abgeklickt werden.

Im Beispiel oben werden 2 Gruppen definiert. Damit werden

  • die Bits 0-1 und 2-3 als Radiobutton verwendet.
  • Bit 7 ist weiterhin eine Checkbox.


3.4. CV-Type "Radio"


Beispiel:

<CV Number="82" Type="Radio" Default="0" Mode="rw" >
  <Description Lang="de" Text="Angezeige Daten"/>
  <Radio Value="0">
    <Description Lang="de" Text="Keine Daten anzeigen"/>
  </Radio>
  <Radio Value="1">
    <Description Lang="de" Text="Modelbahnuhr"/>
  </Radio>
  <Radio Value="2">
    <Description Lang="de" Text="Messwert der Strecke aus CV83"/>
  </Radio>
  <Radio Value="3">
    <Description Lang="de" Text="Alle Messergebnisse"/>
  </Radio>
  <Radio Value="4">
    <Description Lang="de" Text="Nur Portstatus"/>
  </Radio>
  <Radio Value="32">
    <Description Lang="de" Text="Portstatus und Modelbahnuhr"/>
  </Radio>
</CV>

3.5. CV-Type "Radio" mit Gruppierung

Mit Hilfe des Attributes „Group“ können Radio-Buttons zu Gruppen aufgeteilt werden. Alle Radios, die keiner Gruppe zugewießen sind, bilden die letzte Gruppe. Die ausgewälten Radios der Gruppen werden addiert.

<CV Number="47" Type="Radio" Default="0" Mode="rw">
  <Description Lang="de" Text="Effekte Ausgang E (Lötpad E)"/>
  <Radio Value="0" Group="0">
    <Description Lang="de" Text="Aus"/>
  </Radio>
  <Radio Value="1" Group="0">
    <Description Lang="de" Text="Mars-Licht (pulsierend)"/>
  </Radio>
  <Radio Value="2" Group="0">
    <Description Lang="de" Text="Blitzlicht (Strobe)"/>
  </Radio>
  <Radio Value="7" Group="1">
    <Description Lang="de" Text="Abblenden wenn Fahr-St. > 0"/>
  </Radio>
  <Radio Value="8" Group="0">
    <Description Lang="de" Text="Blinken Phase B"/>
  </Radio>
  <Radio Value="9" Group="1">
    <Description Lang="de" Text="Zufalls-Licht"/>
  </Radio>
  <Radio Value="12" Group="1">
    <Description Lang="de" Text="Kupplungsfunktion"/>
  </Radio>
  <Radio Value="32">
    <Description Lang="de" Text="Aus, wenn rückwärts"/>
  </Radio>
  <Radio Value="64">
    <Description Lang="de" Text="Aus, wenn vorwärts"/>
  </Radio>
</CV>


3.6. CV-Type "DccLongAddr"

<CV Number="17" Type="DccLongAddr" Min="192" Max="231" Low="18" High="17" Mode="rw">
   <Description Lang="de" Text="Lange Adresse"/>
</CV>
<CV Number="18" Type="DccLongAddr" Min="0" Max="255" Low="18" High="17" Mode="rw">
   <Description Lang="de" Text="Lange Adresse"/>
</CV>

3.7. CV-Type "DccAccAddr"

<CV Number="1" Type="DccAccAddr" Min="1" Max="63" Low="1" High="9" Mode="rw">
  <Description Lang="de" Text="Decoder-Adresse"/>
</CV>
<CV Number="9" Type="DccAccAddr" Min="0" Max="7" Low="1" High="9" Mode="rw">
  <Description Lang="de" Text="Decoder-Adresse"/>
</CV>

3.8. CVs über Indexregister CV31 und CV32 ansprechen


3.9. CV-Type "SignedByte" (BiDiB)

Durch Mausklick auf eine CV vom Type „SignedByte“, wird im unteren, rechten Bereich eine Eingabemaske für den Bytewert angezeigt. Im Unterschied zum Type „Byte“ können hier auch negative Werte eingegeben werden. Ansonsten sind die Attribute wie beim Type „Byte“ zu verwenden.

Beispiele für Type=„SignedByte“:

Hier wird die Eingabe über die Min- und Max-Werte auf den Bereich -20 bis 20 begrenzt.

<CV  Number="23" Type="SignedByte" Min="-20" Max="20" Default="" Mode="rw">
  <Description Lang="de" Text="Temperaturoffset: 0=standard" />
  <Description Lang="en" Text="Temperature offset: 0 default"/>
</CV>

3.10. CV-Type "Int"

Der Type „Int“ setzt sich immer aus zwei CV’s zusammen und bilden Low-Byte und High-Byte.
Beim Klick auf eines der beiden CV wird geprüft, ob die Partner CV vorhanden ist.
Wenn ja, wird im rechten, unteren Bereich eine Eingabemaske angezeigt.

Beide CV’s müssen mit den Attribute Low und High aufeinander verweisen.




Beispiel:

<CV Number="1" Type="Int" Min="" Max="" Low="1" High="9" Mode="rw" > 
  <Description Lang="de" Text="DCC Adr. (low)" />
  <Description Lang="en" Text="DCC Addr. (low)"/>
</CV>
<CV Number="9" Type="Int" Min="" Max="" Low="1" High="9" Mode="rw" > 
  <Description Lang="de" Text="DCC Adr. (high)" />
  <Description Lang="en" Text="DCC Addr. (high)"/>
</CV>

3.11. CV-Type "DccAddrRG" (BiDiB)

Der Type „DccAddrRG“ setzt sich immer aus zwei CV’s zusammen. Die erste CV ist angegeben, die zweite ist die nächsthöhere CV. Dieser Type arbeitet ähnlich wie „Int“.
Die eingegebene Integer-Zahl wird hier aber in den oberen 15 Bit gespeichert. Optisch wird der Wert also verdoppelt. Es ist also nur ein Wert zwischen 0 und 32767 möglich.
Das untere Bit der Lowbyte CV wird aber extra über zwei Radio-Button „R“ und „G“ gesetzt.
Der gültige Eingabebereich wird über die Attribute Min und Max der Lowbyte CV bestimmt.
Beide CV’s müssen mit den Attribute Low und High aufeinander verweisen.
Beispiel:

<CV Number="59" Type="DccAddrRG" Min="0" Max="32767" Mode="rw" > 
  <Description Lang="de" Text="Inhibit On, Addr"/>
  <Description Lang="en" Text="Inhibit On, Addr"/>
</CV>

3.12. CV-Type "GBM16TReverser" (BiDiB)

Dieser Type ist nur für einen GBM16T zugelassen.
Beim Anklicken einer CV-Zeile vom diesem Type, prüft der Monitor, ob es sich um eine CV
für die Kehrschleifenkonfiguratione eines GBM16T handelt und ob die UID zu einem GBMBoost passt.
Wenn nicht, ist diese CV nicht änderbar.
Wenn alles passt, wird die Maske zur Konfiguration der Kehrschleife angezeigt.

Beispiel:

<CV Number="46" Type="GBM16TReverser" Min="0" Max="255" Mode="rw" > 
  <Description Lang="de" Text="Kehrschleife Modus" />
  <Description Lang="en" Text="Reverser Mode"/>
</CV>

3.13. CV-Type "Long" (BiDiB)


Durch Mausklick auf eine CV vom Type „Long“, wird im unteren, rechten Bereich eine Eingabemaske für den Wert angezeigt.
Der Type „Long“ besteht aus vier aufeinander folgenden CV's.
Beginnend mit der CV-Nummer die im Attribut Number angegeben ist.

Beispiele für Type=„Long“:

Hier wird der Long-Wert in den CV's 154, 155, 156 und 157 abgebildet.

<CV Number="154" Type="Long" Min="0" Max="4294967295" Mode="rw">
  <Description Lang="de" Text="Schritt Position (low)"/>
  <Description Lang="en" Text="Step position (low)"/>
</CV>

4. Templates

Innerhalb der Tags <Templates></Templates> (mit s) können Templates definiert werden, die es vereinfachen, mehrfach vorkommende CV-Strukturen, in der Baumstruktur abzubilden. Jedes Template wird mit dem Tag <Template></Template> (ohne s) definiert. Hier ein Beispiel für die CV's der LED-Ports der LightControl)

<Template Name="LED">
	<CV Number="0" Type="Byte" Min="-" Max="-" Low="-" High="-" Values="-" Mode="rw">
		<Description Lang="de-DE" Text="LED: Einstellung der Stromquelle"/>
		<Description Lang="en-EN" Text="LED: courrent source setup"/>
	</CV>
	<CV Number="1" Type="Byte" Min="-" Max="-" Low="-" High="-" Values="-" Mode="rw">
		<Description Lang="de-DE" Text="LED: Helligkeit für Zustand 'aus'"/>
		<Description Lang="en-EN" Text="LED: light intensity at status 'off'"/>
	</CV>
	<CV Number="2" Type="Byte" Min="-" Max="-" Low="-" High="-" Values="-" Mode="rw">
		<Description Lang="de-DE" Text="LED: Helligkeit für Zustand 'an'"/>
		<Description Lang="en-EN" Text="LED: light intensity at status 'on'"/>
	</CV>
	<CV Number="3" Type="Byte" Min="-" Max="-" Low="-" High="-" Values="-" Mode="rw">
		<Description Lang="de-DE" Text="LED: Dimmzeit in Richtung 'aus', 0 = schnell / 255 = langsam"/>
		<Description Lang="en-EN" Text="LED: time to dim, direction 'off', 0 = fast / 255 = slow" />
	</CV>
	<CV Number="4" Type="Byte" Min="-" Max="-" Low="-" High="-" Values="-" Mode="rw">
		<Description Lang="de-DE" Text="LED: Dimmzeit in Richtung 'an', 0 = schnell / 255 = langsam"/>
		<Description Lang="en-EN" Text="LED: time to dim, direction 'on', 0 = fast / 255 = slow" />
	</CV>
</Template>

Hier bitte nicht wundern, das die CV's mit den Nummern 0 bis 4 definiert sind. Die benötigten CV-Nummern werden später in der Baumstruktur, per Offset definiert.

5. Baumstruktur definieren

Die eigentliche Baumstruktur wird innerhalb des Tags <CVDefinition></CVDefinition> definiert. Mit dem Tag <Node></Node> wird ein Knoten in der Baumstruktur angelegt.
Mit dem Tag <Description> innerhalb von <Node></Node> wird der Text des Knoten hinterlegt. Innerhalb von <Node></Node> werden per Template (Siehe 4.) oder
CVRef die CV's abgebildet.

Beispiel für einen einfachen
Knoten vom GBMBoost:



<Node>
  <Description Lang="de" Text="Allgemeine Daten"/>
  <Description Lang="en" Text="Basis"/>
  <CVRef Number="1" />
  <CVRef Number="29" Values="8"/>
  ...
</Node>

5.1. Knoten mit Template

Um ein Template zu verwenden, kann das <Node>-Tag mit folgenden Attributen versehen werden:

Attribut Beschreibung
Template Name des Templates.
Count Angabe, wie oft das Template wiederholt werden soll.
Offset Angabe, mit welcher CV-Nummer die Nummerierung der CV's beginnt.
Next Multiplikator des Offset das jeweilige Template (Count).

Beispiel:

<Node>
  <Nodetext Lang="de" Text="GBM16T"/>
  <Nodetext Lang="en" Text="GBM16T"/>
  <Node Offset="10000" Template="GBM16T" Count="3" Next="10000">
    <Description Lang="de" Text="GBM16T-%%d"/>
    <Description Lang="en" Text="GBM16T-%%d"/>
  </Node>
</Node>

Hier wird das Template GBM16T angezogen. Es wird 3 mal angewendet. Beim ersten mal wird ein Offset von 10000 verwendet. Wenn also im Template die erste CV mit Nummer 0 definiert ist, wird im Baum diese CV als 10000 dargestellt.
Das zweite mal wird der Wert von Next auf das Offset addiert.
Also wird CV 0 hier mit 20000 dargestellt. Das dritte mal dann mit 30000.

Wie im Nodetext-Tag zu sehen ist, kann die Variable %%d als durchlaufende Nummer (Index, Count) verwendet werden, um den Knoten einen entsprechenden Namen zu geben. Die Variable %%p kann gleich wie %%dverwendet werden, ist aber um +1 höher als der Index.


5.2. Repeater

Mit dem Repeater-Tag kann eine for-Schleife für CV-Values definiert werden.

Beispiel:

<Repeater Count="28">
 <CV Number="67" Type="Byte" Min="0" Max="255" Default="" Mode="rw">
  <Description Lang="de" Text="Fahrstufe %%d"/>
  <Description Lang="en" Text="Speedstep %%d"/>
 </CV>
</Repeater>
 
<Node>
  <Nodetext Lang="de" Text="Basis Daten" />
  <Nodetext Lang="en" Text="Basis" />
  <CV Number="81" Type="Radio" Mode="rw">
    <Description Lang="de" Text="Test einfache CV vor Repeater" />
    <Description Lang="en" Text="Test simple CV before Repeater" />
  </CV>
 
  <Repeater Offset="60" Count="3" Next="2">
    <CV Number="1" Type="Byte" Min="" Max="" Mode="rw">
      <Description Lang="de" Text="Anzeige-Hardware %%d" />
      <Description Lang="en" Text="Display-Hardware %%d" />
    </CV>
    <CV Number="2" Type="Byte" Min="" Max="" Mode="rw">
      <Description Lang="de" Text="Anzeige-Software %%d" />
      <Description Lang="en" Text="Display-Software %%d" />
    </CV>
  </Repeater>
 
  <CV Number="181" Type="Radio" Mode="rw">
    <Description Lang="de" Text="Test einfache CV nach Repeater" />
    <Description Lang="en" Text="Test simple CV after Repeater" />
  </CV>
</Node>

Die nachfolgende Abbildung zeigt das Resultat des Beispiels oben.

monitor/cv-definitionsfileneu.txt · Zuletzt geändert: 2016/11/03 18:15 von stephan