Funktionen für das Parsen und Schreiben von CS2 Dateien

Bibliothek

Projektcs2_parse
Librarylibcs2_parse.a
Includedateics2parse.h
write_cs2.h

Beschreibung

Einlesen einer *.cs2 Datei

Nach dem Anlegen eines Cs2parser Objektes kann der Parser für verschiedene *.cs Dateien initialisiert werden. Danach wird die Parse Funktion in einer Schleife so lange aufgerufen, bis das Ende der Daten erreicht ist.

Schreiben einer *.cs2 Datei

Das Schreiben einer *.cs2 Datei erfolgt auf Basis der C I/O Streams (FILE *). Für das Öffnen der Datei zum Schreiben gibt es Funktionen, die den Pfad (zum Apache Standard Webroot) automatisch hinzufügen und auch automatisch den Namen der entsprechenden *.cs2 Datei kennen.

Lesen (cs2parse.h)

Definitionen

Konstanten

Konstanten für den Returnwert der Parse-Funktion

#define PARSER_ERROR     0x00
#define PARSER_EOF       0x01
#define PARSER_PARAGRAPH 0x02
#define PARSER_VALUE     0x03

Konstanten für den erkannten Paragraphen

#define PARSER_PARAGRAPH_UNDEFINED      0x00
#define PARSER_PARAGRAPH_LOK            0x01
#define PARSER_PARAGRAPH_NUMLOKS        0x02
#define PARSER_PARAGRAPH_LOKOMOTIVE     0x03
#define PARSER_PARAGRAPH_GERAET         0x04
#define PARSER_PARAGRAPH_GLEISBILD      0x05
#define PARSER_PARAGRAPH_MAGNETARTIKEL  0x06
#define PARSER_PARAGRAPH_FAHRSTRASSEN   0x07
#define PARSER_PARAGRAPH_GLEISBILDSEITE 0x08
#define PARSER_PARAGRAPH_LOKSTATUS      0x09

Konstanten für den erkannten Wert

#define PARSER_VALUE_LOK             0x01
#define PARSER_VALUE_NAME            0x02
#define PARSER_VALUE_WERT            0x03
#define PARSER_VALUE_UID             0x04
#define PARSER_VALUE_ADRESSE         0x05
#define PARSER_VALUE_TYP             0x06
#define PARSER_VALUE_MFXUID          0x07
#define PARSER_VALUE_SYMBOL          0x08
#define PARSER_VALUE_AV              0x09
#define PARSER_VALUE_BV              0x0a
#define PARSER_VALUE_VOLUME          0x0b
#define PARSER_VALUE_VELOCITY        0x0c
#define PARSER_VALUE_RICHTUNG        0x0d
#define PARSER_VALUE_VMAX            0x0e
#define PARSER_VALUE_VMIN            0x0f
#define PARSER_VALUE_FKT             0x10
#define PARSER_VALUE_DAUER           0x11
#define PARSER_VALUE_GERAET          0x12
#define PARSER_VALUE_VERSION         0x13
#define PARSER_VALUE_MINOR           0x14
#define PARSER_VALUE_SERNUM          0x15
#define PARSER_VALUE_GFPUID          0x16
#define PARSER_VALUE_GUIUID          0x17
#define PARSER_VALUE_HARDVERS        0x18
#define PARSER_VALUE_MAJOR           0x19
#define PARSER_VALUE_SESSION         0x20
#define PARSER_VALUE_ID              0x21
#define PARSER_VALUE_LOKOMOTIVE      0x22
#define PARSER_VALUE_SID             0x24
#define PARSER_VALUE_ICON            0x25
#define PARSER_VALUE_TACHOMAX        0x26
#define PARSER_VALUE_XPROTOKOLL      0x27
#define PARSER_VALUE_MFXTYP          0x28
#define PARSER_VALUE_STAND           0x29
#define PARSER_VALUE_FAHRT           0x2a
#define PARSER_VALUE_FUNKTIONEN      0x2b
#define PARSER_VALUE_NR              0x2c
#define PARSER_VALUE_VORWAERTS       0x2d
#define PARSER_VALUE_RUECKWAERTS     0x2e
#define PARSER_VALUE_INTRAKTION      0x2f
#define PARSER_VALUE_SEITE           0x30
#define PARSER_VALUE_GROESSE         0x31
#define PARSER_VALUE_ZULETZT_BENUTZT 0x32
#define PARSER_VALUE_ARTIKEL         0x33
#define PARSER_VALUE_STELLUNG        0x34
#define PARSER_VALUE_SCHALTZEIT      0x35
#define PARSER_VALUE_UNGERADE        0x36
#define PARSER_VALUE_DECODER         0x37
#define PARSER_VALUE_DECTYP          0x38
#define PARSER_VALUE_FAHRSTRASSE     0x39
#define PARSER_VALUE_S88             0x3a
#define PARSER_VALUE_S88EIN          0x3b
#define PARSER_VALUE_EXTERN          0x3c
#define PARSER_VALUE_ITEM            0x3d
#define PARSER_VALUE_FSVERWEIS       0x3e
#define PARSER_VALUE_MAGNETARTIKEL   0x3f
#define PARSER_VALUE_ELEMENT         0x40
#define PARSER_VALUE_DREHUNG         0x41
#define PARSER_VALUE_TEXT            0x48
#define PARSER_VALUE_ZUSTAND         0x49
#define PARSER_VALUE_DEVICE_ID       0x50
#define PARSER_VALUE_PAGE            0x51
#define PARSER_VALUE_SEKUNDE         0x52
#define PARSER_VALUE_IDX             0x53
#define PARSER_VALUE_ON              0x54

Konstanten für den Typ der Konfigurationsdatei

#define PARSER_TYPE_LOKNAMEN          0x01
#define PARSER_TYPE_LOKINFO           0x02
#define PARSER_TYPE_GERAET_VRS        0x03
#define PARSER_TYPE_LOK_CS2           0x04
#define PARSER_TYPE_GLEISBILD_CS2     0x05
#define PARSER_TYPE_GLEISBILD_SEITE   0x06
#define PARSER_TYPE_MAGNETARTIKEL_CS2 0x07
#define PARSER_TYPE_FAHRSTRASSEN_CS2  0x08
#define PARSER_TYPE_HEADER_CS2        0x09

Datentypen

Datentypen für Funktionen der Konfigurationslib

typedef struct {
   BOOL Verbose;
   Scanner *Scanner;
   int Type;
   int SubType;
   int Level;
   char Name[20];
   char Value[80];
} Cs2parser;

Makros

Makros, um Felder im Kommando zu setzen

#define Cs2pSetVerbose(Data, Val) (Data)->Verbose=Val
#define Cs2pSetScanner(Data, Scn) (Data)->Scanner=Scn
#define Cs2pSetType(Data, Val)    (Data)->Type=Val
#define Cs2pSetSubType(Data, Val) (Data)->SubType=Val
#define Cs2pSetLevel(Data, Val)   (Data)->Level=Val
#define Cs2pSetName(Data, Str)    strcpy((Data)->Name, Str)
#define Cs2pSetValue(Data, Str)   strcpy((Data)->Value, Str)

Makros, um Felder im Kommando zu lesen

#define Cs2pGetVerbose(Data) (Data)->Verbose
#define Cs2pGetScanner(Data) (Data)->Scanner
#define Cs2pGetType(Data)    (Data)->Type
#define Cs2pGetSubType(Data) (Data)->SubType
#define Cs2pGetLevel(Data)   (Data)->Level
#define Cs2pGetName(Data)    (Data)->Name
#define Cs2pGetValue(Data)   (Data)->Value

Sonstige Makros

#define Cs2pExit(Cs2parser *Data)

Funktionen

FunktionBeschreibung
Cs2pCreate()Die Cs2pCreate Funktion wird als erste Funktion aufgerufen, um die Struktur anzulegen.
Cs2pDestroy()Die Cs2pDestroy Funktion wird als letzte Funktion aufgerufen und gibt die Struktur wieder frei.
Cs2pInit()Die Cs2pInit Funktion initialisiert den Parser für einen bestimmten Typ von *.cs Datei.
ParameterBedeutung
DataZeiger auf das Parser Objekt
TypeDieser Parameter legt fest, vonm welchem Typ die zu parsenden *.cs2 Daten sind. Also welche Informationen darin gespeichert sind. Damit wird auch festgelegt, welche Schlüsselworte erlaubt sind. Mögliche Werte sind:
WertBedeutung
PARSER_TYPE_LOKNAMENDie Daten sind die von der MS2 angeforderten Loknamen
PARSER_TYPE_LOKINFODie Daten sind die von der MS2 angeforderten Lokinfos zu einem Loknamen
PARSER_TYPE_GERAET_VRSgeraet.vrs mit der Versionsnummer der Software und der UID
PARSER_TYPE_LOK_CS2lokomotive.cs2
PARSER_TYPE_GLEISBILD_CS2gleisbild.cs2
PARSER_TYPE_GLEISBILD_SEITEgleisbilder/XXX.cs2
PARSER_TYPE_MAGNETARTIKEL_CS2magnetartikel.cs2
PARSER_TYPE_FAHRSTRASSEN_CS2fahrstrassen.cs2
PARSER_TYPE_HEADER_CS2Hiermit wird nur der Header einer *.cs2 kompatiblen Datenstruktur gelesen, um zu ermitteln ob es sich um einen Auszug der Loks, Fahrstraßen, Gleisbilder oder Magnetartikel handelt. Damit kann dann der entsprechende Parser initialisiert werden. Diese Parsertype kann verwendet werden, wenn eine CS2 Slave eine Konfigdatei verändert und anmschließend die Änderungen zurück sendet.
InputLineZeiger auf die zu parsenden Daten
LenLänge (Anzahl Bytes) der zu parsenden Daten
Cs2pParse()Diese Funktion parst den Eingabestream. Sie liefert für jeden Aufruf den Typ der Information dieser Zeile bzw. den erkannten Typ der Information. Diese Funktion wird ein einer Schleife aufgerufen, bis das Ende der Eingangsdaten erreicht ist. Mögliche Typen von Information sind:
WertBedeutung
PARSER_ERROREin Fehler beim Parsen ist aufgetreten. Dies könnte z.B. ein Syntaxfehler sein. Oder ein neues Schlüsselwort, das der Parser noch nicht versteht.
PARSER_EOFDas Ende der Daten ist erreicht
PARSER_PARAGRAPHEs wurde ein neuer Absatz (Paragraph) gefunden
PARSER_VALUEEs wurde ein neuer Wert gefunden.
Wurde ein neuer Paragraph oder ein neuer Value gefunden, dann liefert das Makro Cs2pGetSubType um welchen Paragraphen bzw. welche Wert es sich handelt. Für den Typ der Paragraphen gibt es die folgenden Definitionen:
/TR>
WertBedeutung
PARSER_PARAGRAPH_UNDEFINEDDer Paragraph ist dem Parser unbekannt.
......
PARSER_PARAGRAPH_LOKSTATUSDer Paragraph enthält des Status der Loks
Für einen Konfigurationswert gibt es die folgenden Definitionen:
WertBedeutung
PARSER_VALUE_LOKEine neue Lok, diese Varianble hat keinen Wert
......
PARSER_VALUE_ONDiese Variable wird benutzt, um Werte ein- bzw. auszuschalten.
Damit könnte eine Parserschleife wie folgt (Ausschnitt) aussehen:
do {
   LineInfo = Cs2pParse(LokParser);
   switch (LineInfo)
   {
      case PARSER_ERROR:
         break;
      case PARSER_EOF:
         break;
      case PARSER_PARAGRAPH:
         switch (Cs2pGetSubType(LokParser))
         {
            default:
               break;
         }
         break;
      case PARSER_VALUE:
         switch (Cs2pGetSubType(LokParser))
         {
            case PARSER_VALUE_LOKOMOTIVE:
               break;
            case PARSER_VALUE_LOK:
               break;
         }
         break;
   }
} while (LineInfo != PARSER_EOF);

Um weiter Informationen, wie den Typ (Verwendung) der erkannten Variable oder den Wert selbst zu ermitteln, gibt es eine Reihe von Makros um auf die CS3parser Struktur zuzugreifen und Informationen zu lesen bzw. zu setzen. Dazu gibt es die folgenden Makros:
MakroBedeutung
Cs2pGetTypeDiese Makro liefert nochmals, welcher Konfigurationstyp (Paragraph, Wert, ...) erkant wurde. Also der Returnwert der Funktion Cs2pParse().
Cs2pGetSubTypeDieses Makro liefert, welcher Paragraph bzw. welche Konfigurationsvariable erkannt wurde.
Cs2pGetLevelDie *.cs2 Dateien haben eine Baumstruktur, wobei die Ebene durch die Anzahl Punkte vor dem Schlüsselwort festgelegt ist. Dieses Makro liefert die Ebene bzw. die Anzahl Punkte.
Cs2pGetValueDieses Makrot liefert den Wert einer Variable als Zeichenkette. Also so, wie sie in der Datei steht. Wenn diese Zeichenkette einen numerischen Wert repräsentieren soll, muß er noch in eine Zahl umgewandelt werden.
......

Schreiben (write_cs2.h)

Definitionen

Konstanten

Konstanten für Dateityp

#define CS2_FILE_TYPE_LOKOMOTIVE 1

Konstanten für Dateinamen

#define CS2_FILE_STRING_LOKOMOTIVE           "lokomotive.cs2"
#define CS2_FILE_STRING_MAGNETARTIKEL        "magnetartikel.cs2"
#define CS2_FILE_STRING_GLEISBILD            "gleisbild.cs2"
#define CS2_FILE_STRING_FAHRSTRASSE          "fahrstrassen.cs2"
#define CS2_FILE_STRING_STATUS_LOKOMOTIVE    "lokstatus.sr2"
#define CS2_FILE_STRING_STATUS_MAGNETARTIKEL "magnetartikel.sr2"
#define CS2_FILE_STRING_STATUS_GLEISBILD     "gleisbild.sr2"
#define CS2_FILE_STRING_STATUS_FAHRSTRASSE   "fahrstrassen.sr2"

Konstanten für Paragraphen/Absätze (Token und Text)

#define CS2_PARAGRAPH_TYPE_LOK            1
#define CS2_PARAGRAPH_TYPE_NUMLOKS        2
#define CS2_PARAGRAPH_TYPE_LOKOMOTIVE     3
#define CS2_PARAGRAPH_TYPE_GLEISBILD      4
#define CS2_PARAGRAPH_TYPE_GLEISBILDSEITE 5
#define CS2_PARAGRAPH_TYPE_MAGNETARTIKEL  6
#define CS2_PARAGRAPH_TYPE_FAHRSTRASSEN   7

#define CS2_PARAGRAPH_STRING_LOK            "lok"
#define CS2_PARAGRAPH_STRING_NUMLOKS        "numloks"
#define CS2_PARAGRAPH_STRING_LOKOMOTIVE     "lokomotive"
#define CS2_PARAGRAPH_STRING_GLEISBILD      "gleisbild"
#define CS2_PARAGRAPH_STRING_GLEISBILDSEITE "gleisbildseite"
#define CS2_PARAGRAPH_STRING_MAGNETARTIKEL  "magnetartikel"
#define CS2_PARAGRAPH_STRING_FAHRSTRASSEN   "fahrstrassen"

Konstanten für Konfigurationswert

#define CS_MAGNETARTIKEL_TYP_STRING_STD_ROT_GRUEN              "std_rot_gruen"
#define CS_MAGNETARTIKEL_TYP_STRING_STD_ROT                    "std_rot"
#define CS_MAGNETARTIKEL_TYP_STRING_STD_GRUEN                  "std_gruen"
#define CS_MAGNETARTIKEL_TYP_STRING_ENTKUPPLUNGSGLEIS          "entkupplungsgleis"
#define CS_MAGNETARTIKEL_TYP_STRING_ENTKUPPLUNGSGLEIS_1        "entkupplungsgleis_1"
#define CS_MAGNETARTIKEL_TYP_STRING_RECHTSWEICHE               "rechtsweiche"
#define CS_MAGNETARTIKEL_TYP_STRING_LINKSWEICHE                "linksweiche"
#define CS_MAGNETARTIKEL_TYP_STRING_Y_WEICHE                   "y_weiche"
#define CS_MAGNETARTIKEL_TYP_STRING_K84_AUSGANG                "k84_ausgang"
#define CS_MAGNETARTIKEL_TYP_STRING_K84_DOPPELAUSGANG          "k84_doppelausgang"
#define CS_MAGNETARTIKEL_TYP_STRING_DREIWEGWEICHE              "dreiwegweiche"
#define CS_MAGNETARTIKEL_TYP_STRING_DKW_2_ANTRIEBE             "DKW 2 Antriebe"
#define CS_MAGNETARTIKEL_TYP_STRING_DKW_1_ANTRIEB              "DKW 1 Antrieb"
#define CS_MAGNETARTIKEL_TYP_STRING_LICHTSIGNAL_HP01           "lichtsignal_HP01"
#define CS_MAGNETARTIKEL_TYP_STRING_LICHTSIGNAL_HP02           "lichtsignal_HP02"
#define CS_MAGNETARTIKEL_TYP_STRING_LICHTSIGNAL_HP012          "lichtsignal_HP012"
#define CS_MAGNETARTIKEL_TYP_STRING_LICHTSIGNAL_HP012_SH01     "lichtsignal_HP012_SH01"
#define CS_MAGNETARTIKEL_TYP_STRING_LICHTSIGNAL_SH01           "lichtsignal_SH01"
#define CS_MAGNETARTIKEL_TYP_STRING_FORMSIGNAL_HP01            "formsignal_HP01"
#define CS_MAGNETARTIKEL_TYP_STRING_FORMSIGNAL_HP02            "formsignal_HP02"
#define CS_MAGNETARTIKEL_TYP_STRING_FORMSIGNAL_HP012           "formsignal_HP012"
#define CS_MAGNETARTIKEL_TYP_STRING_FORMSIGNAL_HP012_SH01      "formsignal_HP012_SH01"
#define CS_MAGNETARTIKEL_TYP_STRING_FORMSIGNAL_SH01            "formsignal_SH01"
#define CS_MAGNETARTIKEL_TYP_STRING_URC_LICHTSIGNAL_HP01       "urc_lichtsignal_HP01"
#define CS_MAGNETARTIKEL_TYP_STRING_URC_LICHTSIGNAL_HP012      "urc_lichtsignal_HP012"
#define CS_MAGNETARTIKEL_TYP_STRING_URC_LICHTSIGNAL_HP012_SH01 "urc_lichtsignal_HP012_SH01"
#define CS_MAGNETARTIKEL_TYP_STRING_URC_LICHTSIGNAL_SH01       "urc_lichtsignal_SH01"
#define CS_MAGNETARTIKEL_TYP_STRING_SCHIEBEBUEHNE              "schiebebuehne"
#define CS_MAGNETARTIKEL_TYP_STRING_DREHSCHEIBE_ALT            "drehscheibe_alt"
#define CS_MAGNETARTIKEL_TYP_STRING_DIGITALDREHSCHEIBE         "digitaldrehscheibe"

#define CS2_GLEISBILD_TYP_STRING_LEER               "leer"
#define CS2_GLEISBILD_TYP_STRING_GERADE             "gerade"
#define CS2_GLEISBILD_TYP_STRING_KREUZUNG           "kreuzung"
#define CS2_GLEISBILD_TYP_STRING_UNTERFUEHRUNG      "unterfuehrung"
#define CS2_GLEISBILD_TYP_STRING_PRELLBOCK          "prellbock"
#define CS2_GLEISBILD_TYP_STRING_BOGEN              "bogen"
#define CS2_GLEISBILD_TYP_STRING_DOPPELBOGEN        "doppelbogen"
#define CS2_GLEISBILD_TYP_STRING_TUNNEL             "tunnel"
#define CS2_GLEISBILD_TYP_STRING_LINKSWEICHE        "linksweiche"
#define CS2_GLEISBILD_TYP_STRING_RECHTSWEICHE       "rechtsweiche"
#define CS2_GLEISBILD_TYP_STRING_DREIWEGWEICHE      "dreiwegweiche"
#define CS2_GLEISBILD_TYP_STRING_YWEICHE            "yweiche"
#define CS2_GLEISBILD_TYP_STRING_DKWEICHE           "dkweiche"
#define CS2_GLEISBILD_TYP_STRING_DKWEICHE_2         "dkweiche_2"
#define CS2_GLEISBILD_TYP_STRING_SIGNAL             "signal"
#define CS2_GLEISBILD_TYP_STRING_S88KONTAKT         "s88kontakt"
#define CS2_GLEISBILD_TYP_STRING_S88BOGEN           "s88bogen"
#define CS2_GLEISBILD_TYP_STRING_PFEIL              "pfeil"
#define CS2_GLEISBILD_TYP_STRING_FAHRSTRASSE        "fahrstrasse"
#define CS2_GLEISBILD_TYP_STRING_TEXT               "text"
#define CS2_GLEISBILD_TYP_STRING_SIGNAL_HP02        "signal_hp02"
#define CS2_GLEISBILD_TYP_STRING_SIGNAL_HP012       "signal_hp012"
#define CS2_GLEISBILD_TYP_STRING_SIGNAL_HP01S       "signal_hp01s"
#define CS2_GLEISBILD_TYP_STRING_SIGNAL_P_HP012S    "signal_p_hp012s"
#define CS2_GLEISBILD_TYP_STRING_SIGNAL_F_HP012S    "signal_f_hp012s"
#define CS2_GLEISBILD_TYP_STRING_SIGNAL_P_HP012     "signal_p_hp012"
#define CS2_GLEISBILD_TYP_STRING_SIGNAL_F_HP01      "signal_f_hp01"
#define CS2_GLEISBILD_TYP_STRING_SIGNAL_F_HP02      "signal_f_hp02"
#define CS2_GLEISBILD_TYP_STRING_SIGNAL_F_HP012     "signal_f_hp012"
#define CS2_GLEISBILD_TYP_STRING_SIGNAL_SH01        "signal_sh01"
#define CS2_GLEISBILD_TYP_STRING_K84_EINFACH        "k84_einfach"
#define CS2_GLEISBILD_TYP_STRING_K84_DOPPELT        "k84_doppelt"
#define CS2_GLEISBILD_TYP_STRING_ENTKUPPLER         "entkuppler"
#define CS2_GLEISBILD_TYP_STRING_ENTKUPPLER_1       "entkuppler_1"
#define CS2_GLEISBILD_TYP_STRING_STD_ROT            "std_rot"
#define CS2_GLEISBILD_TYP_STRING_STD_GRUEN          "std_gruen"
#define CS2_GLEISBILD_TYP_STRING_STD_ROT_GRUEN_0    "std_rot_gruen_0"
#define CS2_GLEISBILD_TYP_STRING_STD_ROT_GRUEN_1    "std_rot_gruen_1"
#define CS2_GLEISBILD_TYP_STRING_SCHIEBEBUEHNE_0    "schiebebuehne_0"
#define CS2_GLEISBILD_TYP_STRING_SCHIEBEBUEHNE_1    "schiebebuehne_1"
#define CS2_GLEISBILD_TYP_STRING_SCHIEBEBUEHNE_2    "schiebebuehne_2"
#define CS2_GLEISBILD_TYP_STRING_SCHIEBEBUEHNE_3    "schiebebuehne_3"
#define CS2_GLEISBILD_TYP_STRING_DREHSCHEIBE_ALT_0  "drehscheibe_alt_0"
#define CS2_GLEISBILD_TYP_STRING_DREHSCHEIBE_ALT_1  "drehscheibe_alt_1 "
#define CS2_GLEISBILD_TYP_STRING_DREHSCHEIBE_ALT_2  "drehscheibe_alt_2"
#define CS2_GLEISBILD_TYP_STRING_DREHSCHEIBE_ALT_3  "drehscheibe_alt_3"
#define CS2_GLEISBILD_TYP_STRING_DREHSCHEIBE_DIG_0  "drehscheibe_dig_0"
#define CS2_GLEISBILD_TYP_STRING_DREHSCHEIBE_DIG_1  "drehscheibe_dig_1"
#define CS2_GLEISBILD_TYP_STRING_DREHSCHEIBE_DIG_2  "drehscheibe_dig_2"
#define CS2_GLEISBILD_TYP_STRING_DREHSCHEIBE_DIG_3  "drehscheibe_dig_3"
#define CS2_GLEISBILD_TYP_STRING_DREHSCHEIBE_DIG_4  "drehscheibe_dig_4"
#define CS2_GLEISBILD_TYP_STRING_DREHSCHEIBE_DIG_5  "drehscheibe_dig_5"
#define CS2_GLEISBILD_TYP_STRING_DREHSCHEIBE_DIG_6  "drehscheibe_dig_6"
#define CS2_GLEISBILD_TYP_STRING_DREHSCHEIBE_DIG_7  "drehscheibe_dig_7"
#define CS2_GLEISBILD_TYP_STRING_DREHSCHEIBE_DIG_8  "drehscheibe_dig_8"
#define CS2_GLEISBILD_TYP_STRING_DREHSCHEIBE_DIG_9  "drehscheibe_dig_9"
#define CS2_GLEISBILD_TYP_STRING_DREHSCHEIBE_DIG_10 "drehscheibe_dig_10"
#define CS2_GLEISBILD_TYP_STRING_DREHSCHEIBE_DIG_11 "drehscheibe_dig_11"
#define CS2_GLEISBILD_TYP_STRING_DREHSCHEIBE_DIG_12 "drehscheibe_dig_12"
#define CS2_GLEISBILD_TYP_STRING_DREHSCHEIBE_DIG_13 "drehscheibe_dig_13"
#define CS2_GLEISBILD_TYP_STRING_DREHSCHEIBE_DIG_14 "drehscheibe_dig_14"
#define CS2_GLEISBILD_TYP_STRING_DREHSCHEIBE_DIG_15 "drehscheibe_dig_15"
#define CS2_GLEISBILD_TYP_STRING_DREHSCHEIBE_DIG_16 "drehscheibe_dig_16"
#define CS2_GLEISBILD_TYP_STRING_DREHSCHEIBE_DIG_17 "drehscheibe_dig_17"
#define CS2_GLEISBILD_TYP_STRING_DREHSCHEIBE_DIG_18 "drehscheibe_dig_18"
#define CS2_GLEISBILD_TYP_STRING_DREHSCHEIBE_DIG_19 "drehscheibe_dig_19"
#define CS2_GLEISBILD_TYP_STRING_DREHSCHEIBE_DIG_20 "drehscheibe_dig_20"
#define CS2_GLEISBILD_TYP_STRING_DREHSCHEIBE_DIG_21 "drehscheibe_dig_21"
#define CS2_GLEISBILD_TYP_STRING_DREHSCHEIBE_DIG_22 "drehscheibe_dig_22"
#define CS2_GLEISBILD_TYP_STRING_DREHSCHEIBE_DIG_23 "drehscheibe_dig_23"
#define CS2_GLEISBILD_TYP_STRING_DREHSCHEIBE_DIG_24 "drehscheibe_dig_24"
#define CS2_GLEISBILD_TYP_STRING_DREHSCHEIBE_DIG_25 "drehscheibe_dig_25"
#define CS2_GLEISBILD_TYP_STRING_DREHSCHEIBE_DIG_26 "drehscheibe_dig_26"
#define CS2_GLEISBILD_TYP_STRING_DREHSCHEIBE_DIG_27 "drehscheibe_dig_27"
#define CS2_GLEISBILD_TYP_STRING_DREHSCHEIBE_DIG_28 "drehscheibe_dig_28"
#define CS2_GLEISBILD_TYP_STRING_DREHSCHEIBE_DIG_29 "drehscheibe_dig_29"
#define CS2_GLEISBILD_TYP_STRING_DREHSCHEIBE_DIG_30 "drehscheibe_dig_30"
#define CS2_GLEISBILD_TYP_STRING_DREHSCHEIBE_DIG_31 "drehscheibe_dig_31"

Funktionen

Cs2OpenByNameDiese Funktion öffnet eine *.cs2 Datei anhand des Namens. Es wird automatisch der Webroot von apache2 mit dem Pfad für die CS Konfigdateien vorangestellt (/var/www/config)
Cs2OpenByTypeDiese Funktion öffnet eine *.cs2 Datei anhand des Typs der Datei. Mögliche Konfigtypen sind:
WertBedeutung
CS2_FILE_STRRING_LOKOMOTIVElokomotive.cs2
Es wird automatisch der Webroot von apache2 mit dem Pfad für die CS Konfigdateien vorangestellt (/var/www/config)
Cs2CloseDiese Funktion schließt die Konfigdatei und ruft nur fclose() auf.

Für das Schreiben der einzelnen Werte gibt es auch Funktionen, die mit den entsprechenden Parametern das Schreiben vereinfachen:

FunktionBeschreibung
Cs2WriteParagraphByName()Diese Funktion schreibt die Überschrift eines Absatz (Paragraph).
ParameterBedeutung
StreamDer Stream, auf den geschrieben werden soll.
ParagraphTitel des zu schriebenden Paragraphs als Text.
Cs2WriteParagraphByType()Diese Funktion schreibt die Überschrift eines Absatz (Paragraph).
ParameterBedeutung
StreamDer Stream, auf den geschrieben werden soll.
Cs2ParagraphTypeTitel des zu schriebenden Paragraphs als Datentyp aus der cs2parse.h
Cs2WriteTitleByNameDiese Funktion schreibt einen Titel (Variable ohne Wert).
ParameterBedeutung
StreamDer Stream, auf den geschrieben werden soll
TitleName des zu schreibenden Titels (Variable ohne Wert)
LevelEbene im Baum (Anzahl Punkte)
Cs2WriteStringValueByName()Diese Funktion schreibt eine Variable als Text.
ParameterBedeutung
StreamDer Stream, auf den geschrieben werden soll
TitleName der zu schreibenden Variable
ValueWert der Variable
LevelEbene im Baum (Anzahl Punkte)
Cs2WriteIntValueByName()Diese Funktion schreibt eine Variable als Zahl.
ParameterBedeutung
StreamDer Stream, auf den geschrieben werden soll
TitleName der zu schreibenden Variable
ValueWert der Variable
LevelEbene im Baum (Anzahl Punkte)
Cs2WriteHexValueByName()Diese Funktion schreibt eine Variable als Hexwert.
ParameterBedeutung
StreamDer Stream, auf den geschrieben werden soll
TitleName der zu schreibende Variable
ValueWert der Variable
LevelEbene im Baum (Anzahl Punkte)
Cs2WriteULongValueByName()Diese Funktion schreibt eine Variable als vorzeichenlose lange Zahl.
ParameterBedeutung
StreamDer Stream, auf den geschrieben werden soll
TitleName der zu schreibenden Variable
ValueWert der Variable
LevelEbene im Baum (Anzahl Punkte)
Cs2WriteHexLongValueByName()Diese Funktion schreibt eine Variable als vorzeichenlosen langen Hexwert.
ParameterBedeutung
StreamDer Stream, auf den geschrieben werden soll
TitleName der zu schreibende Variable
ValueWert der Variable
LevelEbene im Baum (Anzahl Punkte)
Cs2WriteFloatValueByName()Diese Funktion schreibt eine Variable als Gleitkommazahl.
ParameterBedeutung
StreamDer Stream, auf den geschrieben werden soll
TitleName der zu schreibende Variable
ValueWert der Variable
LevelEbene im Baum (Anzahl Punkte)


Zurück zur Modellbahn Startseite - Zurück zur Homepage