qrailway 0.9
Öffentliche Slots | Signale | Öffentliche Methoden | Private Attribute

cIntelligenz Klassenreferenz

Verwaltung aller Zuege/Sektionen/Konnektoren. Kontrolliert (Re-)Aktionen. Mehr ...

#include <cIntelligenz.h>

Aufstellung aller Elemente

Öffentliche Slots

void SlotLokPositionChanged (int trainid, int reedalt, int reed, int richtung, int geschw)
 Info von Zug, dass sich seine Position/Geschw/Richtung geaendert hat.
void SlotSetSignal (int sigid, int status)
 Schaltet Signal.
void executeAutomatischeSteuerung (void)
 fuehrt AutomatischeSteuerung aus
void insertAutomatischeSteuerung (int lok)
 Sorgt fuer Ausfuehrung von AutomatischerSteuerung in 200ms+x.
int modifySpeed (int geschwindigkeit, int trainid, int reglerrichtung, int conid)
 Verndert eine bergebene Geschwindigkeit (Erhhung bei Programmbeginn fuer kalte Loks, sowie Bercksichtigung von Steigungen)
void changeSpeedMultiplier (double speedmultipliertmp)
 Veraendere Speedmultiplier (1 = Standardgeschwindigkeit). Zu spaeteren Zeitpunkten, wenn die Loks waermer sind, kann dieser Multiplier verringert werden.
void SlotResetCounters (void)
 Setzt Fehlerzaehler zurueck (LokStehengeblieben, Weichenfehler, Kurzschluss etc.)
void SlotPruefeAufStehendeLoks (void)
 Prueft ob Loks stehengeblieben sind.
void SlotBahnhofsdurchsage (int bahnhofsnr, QString durchsage)
 Meldet die Info durchsage an Bahnhof bahnhofsnr.
void SlotUpdateBahnhofsfenster (int bahnhofsnr)
 Emittiert SignalUpdateBahnhofsFenster.
void SlotWeicheGeaendert (int welche)
 Wird aufgerufen, wenn sich eine Weichenstellung aendert. In diesem Fall wird der Stromverlauf aktualisiert und das Anlagenbild geupdated.
void SlotReedkontaktGeaendert (int welcher, int status)
 Wird aufgerufen, wenn sich die Hardware sieht, dass Reedkontakt welcher seinen Status geaendert hat. status ist 0, falls der Reedkontakt scharf gemacht wurde, ansonsten wurde der Reedkontakt ausgelst. SlotReedkontaktGeaendert aktualisiert die Anzeige, schaltet eine Weiterfahrt bei Halt aus und sorgt fuer andernfalls fuer eine erneute Reservierung von Reedkontakten durch Aufruf von manuelleSteuerung.
void SlotReglerStatusGeaendert (int regler, int kurzschluss, int besetzt)
 Wird per Signal aufgerufen von cHardware, wenn sich der Status (Kurzschluss/Besetzt) eines Reglers aendert. Info wird in log.cKurzschluss geschrieben.
void SlotReedkontaktAngeklickt (int welcher)
 Wird von Hauptfenster aufgerufen, wenn ein Reedkontakt angeklickt wird. Emitiert das Signal SignalReedkontaktAngeklickt(int)
void SlotSektionAngeklickt (int welche)
 Wird von Hauptfenster aufgerufen, wenn eine Sektion angeklickt wird. Emitiert das Signal SignalSektionAngeklickt(int)
int automatischeSteuerung (int trainid)
 Organisiert die automatische Steuerung von Zug trainid. Dazu wird im Befehlssatz nachgeschlagen, was der Zug zu tun hat und es wird der Befehl ausgefuehrt. Ggf. werden neue Befehle geladen.
int automatischeFahrplanung (int laufplanungzug, int laufplanunganz, int *laufplanung, int richtung=0)
 Erstellt eine Fahrplanung ber die laufplanunganz Reedkontakte (Start- und Endpunkt mit dabei), die in laufplanung[0..laufplanunganz-1] abgelegt sind, fuer den Zug laufplanungzug, der in Richtung richtung losfahren soll.
bool parseBefehl (int trainid, int positiondiff)
 bersetzt den Befehl des Zugs trainid, der vom aktuellen Befehl positiondiff entfernt ist (0 ist der aktuelle Befehl)

Signale

void SignalAlarm (int)
 Wird emittiert, wenn ein Zug stehenbleibt.
void SignalUpdateBahnhofsFenster (int)
 Wird von SlotUpdateBahnhofsfenster emittiert (Parameter ist der Bahnhof, dessen Fenster aktualisiert werden soll). Erfolgt, wenn Reedkontakte im Bahnhof reserviert werden oder der Bahnhof ein/ausgeschaltet wird.
void SignalBahnhofsdurchsage (int, const QString &)
 Wird emittiert, wenn eine Info (zweiter Paraemeter) an Bahnhof (erster Parameter) zu senden ist.
void SignalBefehlAusfuehren (int, int, int, int, int)
 Signal, um einem Bahnhof einen Befehl mitzuteilen, der zu bearbeiten ist (Parameter: bahnhofsnr,reed,trainid,meldungid,zuparsen.listenid). Befehle, die zu bearbeiten sind, sind z.B. Anfragen nach Einstellen oder Durchfahrt eines Zugs.
void SignalCanvasUpdate (void)
 Signal, Canvas zu aktualisieren.
void SignalFensterWeicheUpdate (void)
 Signal, welches emittiert wird, wenn eine Weiche geschaltet wird.
void message (const QString &)
 Signal mit einer Meldung an das Statusfenster.
void SignalUpdateFensterLokSteuerung (int)
 Signal, dass die Lok (erster Parameter) eine andere Geschwindigkeit/Ort/Richtung etc. hat.
void SignalReedkontaktAngeklickt (int)
 Signal, dass emittiert wird, wenn der Reedkontakt (Parameter) angeklickt wird.
void SignalSektionAngeklickt (int)
 Signal, dass emittiert wird, wenn eine Sektion (Parameter) angeklickt wird.
void SignalZugOrt (int, int)
 Signal, dass mitteilt, an welchem Ort (Reedkontakt, zweiter Parameter) sich die Lok (erster Parameter) jetzt befindet.
void SignalZugGeschwindigkeit (int, int, int)
 Signal, dass die Zuggeschwindigkeit mitteilt (trainid,kmh,Richtung)
void SignalSollGeschwindigkeitAendern (int, int, int)
 Signal, dass die gewuenschte Zuggeschwindigkeit mitteilt (trainid,kmh,Richtung)
void SignalGeschwindigkeitsmeldung (int, int, int, int, int)
 Signale, die bei der Messung emittiert werden (nr. des werts, ?,reglergeschwindigkeit,kmh,richtung)
void SignalReedkontaktGeaendert (int, int)
 Signal wird von cIntelligenz selbst ausgefuehrt, falls mehrere Reedkontaktaenderungen auf einmal auftreten und von cHardware per Aufruf von ReedkontakteGeaendert gemeldet werden.

Öffentliche Methoden

void setLicht (int button, int einaus)
 Schaltet Licht.
void ReedkontakteGeaendert (int zaehler, int reedkontakte[24], int status[24])
 wird ausgefuehrt, wenn mehr als ein Reedkontakt innerhalb einer Statusmeldung geaendert wird. In diesem Fall werden alle Zuege durchgegangen und ermittelt, an welcher Stelle der reservierten Reedkontakte der ausgeloeste Kontakt steht. Anschliessend werden zunaechst die ausgeloesten Reedkontakte bearbeitet, die an Stelle 1 stehen, dann an Stelle 2, usw. Hintergrund: Vermeidung von Problemen, wenn bei zwei reservierten Reedkontakten, erst das Ueberfahren des hinteren bearbeitet wird und im Anschluss Probleme entstehen bei der Bearbeitung des Ueberfahrens des ersten.
 cIntelligenz (QGraphicsScene *canvastmp, cMainWindow *MainWindowTmp)
 Initialisiert alle Variablen. Setzt Zeiger auf NULL. Baut die Datenstrukturen aus der Datenbank auf, indem es RereadRailroad aufruft. Konnektoren/Sektion werden im bergebenen QCanvas angezeigt.
 ~cIntelligenz (void)
 Speichert die Informationen zu Konnektoren in der Datenbank. Loescht die Datenstrukturen aus dem Speicher.
void cDebug (int prioritaet, const QString &meldung)
 Gibt die Meldung "meldung" in eine der Klasse zugeordnete Logdatei aus. Dabei werden Meldungen mit der Prioritaet prioritaet 0 auch auf dem Bildschirm als Warnung ausgegeben. Meldungen mit Prioritaet >=2 (bzw. >=1) werden in aller Regel nicht in die Log-Datei ausgegeben, lassen sich aber durch Modifikation der Funktion cDebug zur Ausgabe hinzufuegen. Der Klasse ist die log-Datei log.cIntelligenz zugeordnet.
void RereadRailroad (void)
 Baut den Anlagen-Plan aus der Datenbank auf und registriert die Konnektoren/Fahrregler im Hardware-Modul (welches auch neu gestartet wird). Bahnhoefe werden ebenfalls neu eingelesen. Evtl. sollten die Zuege auch neu eingelesen werden, momentang werden diese im Konstruktor dieser Klasse gesetzt. (dieser Befehl wird nicht nur am Anfang des Programmes ausgefuehrt. Wenn das Programm im Edit-Modus ausgefuehrt wird, so wird der Befehl ausgefuehrt, falls ein Konnektor geloescht wird!)
int ueberpruefeSpeicher (void)
 Ueberprft die Zeiger, die in den cSektionen und cKonnektoren abgelegt sind, mit den wirklichen und gibt bei Abweichungen eine entsprechende Meldung aus (Hintergrund: bei der Entwicklung gab es am Anfang Probleme mit der Speicherallokation. Die Routine entstand zum Debugging)
int StromAktualisieren (int ueberpruefenRegler, bool nurueberpruefen=FALSE)
 Ermittelt auf Basis der Strom-Anschluesse und der Weichenstellungen, welche Gleise Strom fuehren und aendert die Darstellung entsprechend. Weiterhin wird den Reglern der Zug zugeordnet, welcher momentan auf dem Regler steht. Ist nurueberpruefen=TRUE, so werden eventuelle Weichenstellungen, die im Konnektor mit setRichtungPruefen gespeichert wurden, auf ihre Zulaessigkeit ueberprft (liefere 0 zurueck, wenn keine Probleme, sonst 1) (fahrregler muss !=0 sein fuer diese funktion). Gegenwaertig besteht noch das Problem, dass einem auf einem Abstellgleis fahrenden Zug durch Weichenaenderung der Strom entzogen werden kann.
void WeichenStrassenAnalysieren (int reglernr)
 WeichenStrassenAnalysieren mit Hilfe von StromAktualisieren; speichert in den Konnektoren und Sektionen bei welchen Weichenstellungen sie eingeschaltet sind.
int getAusgangVonKonnektor (int sektionid, int konnektorid, int ausgang)
 getAusgangVonKonnektor liefert die Sektion zurueck, in die wir uns begeben, wenn wir die Richtung beibehalten, uns im Konnektor konnektorid befinden und von Sektion sektionid kommen. Ist ausgang=0, so wird die Weichenstellung beruecksichtigt, die als Ziel vorgegeben ist. Ist ausgang=1,2 so wird der erste bzw. zweite theoretisch moegliche Ausgang (Sektionsnummer) zurueckliefert. Ist ausgang negativ, so wird die Weichenstellung verwendet, die in der Datenbank gespeichert ist. Dies ist fuer den Start des Programmes wichtig.
int getAusgangVonSektion (int sektionid, int &konnektorid, int trainrichtung, int &trainrichtungneu, int lastAusgang=0, int beachteWeichen=0)
 getAusgangVonSektion liefert die Nummer der Sektion zurueck, die theoretisch durchfahren werden kann, wenn wir unsere Richtung nicht aendern (ist lastAusgang!=0, so wird dieser Ausgang nicht gewaehlt. Ermoeglicht es, alle theoretischen Ausgaenge durchzuprobieren (max 2)). Die Richtung, in der diese neue Sektion durchfahren werden muss, wird in trainrichtungneu abgelegt. konnektorid beinhaltet den verbindenden Konnektor zwischen alter und neuer Sektion. Ist beachteWeichen=1(TRUE), so werden nicht die theoretisch moeglichen Ausgaenge beachtet, sondern die aktuelle Stellung der Weiche(n). Ist beachteWeiche 2, so wird die Weichenstellung verwendet, die in der Datenbank gespeichert ist. Dies ist fuer den Start des Programmes wichtig. Ist lastAusgang auf eine Sektion gestetzt, die nicht von dem ermittelten Konnektor erreichbar ist, so wird dies wie lastAusgang weiterbehandelt. Dabei befinden wir uns in Sektion sektionid und fahren in Richtung trainrichtung. Das letzte Mal sind wir in Richtung lastAusgang gefahren.
int getZugPosition (int trainid)
 Ermittelt den Reedkontakt bei dem die Nase des Zugs trainid steht, indem alle Sektionen durchgeschaut werden und wenn eine Sektion mit dem Zug gefunden wurde, dieser nach vorne durchgegangen wird.
int findeZugBeiReedkontakt (int welcher, int richtung)
 untersucht, welcher Zug den Reedkontakt 'welcher' ueberfahren haben koennte, wenn der zugehoerige Regler in Richtung 'richtung' faehrt. dabei wird die fahrstrecke zurueckverfolgt (also in die richtung gegangen, wo der zug hergekommen sein muesste) und der naechste zug als ergebnis geliefert, der entweder in richtung reedkontakt unterwegs war, oder aber diesen oder die strecke dorthin reserviert hatte.
int getNaechsteReedkontakte (int trainid, int richtung, int markieren, const int maxanzahlreedkontakte, int welche[])
 Sucht den Reedkontakt, den der Zug trainid als naechstes ueberfahren wird, wenn er vorwaerts (richtung = 0) bzw. rueckwaerts (richtung = 1) faehrt, und liefert die Konnektor-ID zurueck. anzahlreedkontakte gibt an, nach dem wievielten Reedkontakt gesucht werden soll (=2 sagt z.B. nach dem uebernaechstem). markieren sagt, was zu tun ist: ccReedNichtAufAn sorgt dafuer, dass ignoriert wird, falls ein Gleis aus ist, ccReedBelegen/Reservieren/Freigeben sind definiert wie an anderer Stelle beschrieben.
int passtZug (int trainid, int konnektorid, int markieren=ccReedSuchen, int trainRichtung=-1)
 Liefert 1 zurueck, falls der Zug auf den Konnektor passt, und 0 falls er nicht passt (vornehmlich von der Laenge her). markieren kann die Werte ccReedSuchen (zum Testen, ob der Zug passt), ccReedReservieren (zum Reservieren des entsprechenden Bereiches) und ccReedMarkieren (zum Belegen des Bereiches) annehmen.
void setTrigger (int trainid, int vorneeinfuegen, int conid, bool aktivieren, int regler, int geschwindigkeit, int richtung, int beschleunigung, int geschwindigkeitkmh)
 Prozedur verfolgt im Wesentlichen denselben Zwecke wie setTrigger in cHardware. Zusaetzlich wird nachgeschaut, ob der reedkontakt schon vorher von dem zug verwendet wurde. wenn ja, wird er korrigiert (mit modifyTrigger aus der cHardware Klasse), ansonsten wird er gesetzt und zu der Reedkontaktliste des Zugs hinzugefuegt. Der angegebene Reedkontakt wird in der Reedkontaktliste des Zuges hinten angefuegt (sofern vorneeinfuegen=0 ist), ansonsten wird er vorne eingefuegt.
int manuelleSteuerung (int trainid, int geschwindigkeitkmh, int richtung, bool emitsignal=FALSE)
 Versuche Geschwindigkeit von Zug trainid auf geschwindigkeitkmh in richtung zu setzen. Reserviere dazu alle noetigen Reedkontakte. Ist emitsignal=TRUE, so wird die aktuelle Geschwindigkeit als Signal abgesetzt (fuers Kontrollfenster)
void setWeiche (int welche, const QString &richtung)
 Stellt die Weiche weiche auf die Richtung richtung (versucht es zumindest).
void beschleunigeZugVorbereitung (int trainid, int geschwindigkeitkmh, int richtung)
 Bestimmt alle Regler, die vom Zug verwendet werden und reserviert diese. Dabei wird auch die gewuenschte Geschwindigkeit und Richtung fuer jeden Regler im Speicher hinterlegt. Alle anderen werden im Speicher freigegeben und die angelegte Geschwindigkeit im Speicher auf 0 gesetzt.
void schalteLeereReglerAb (int trainid)
 Entfernt alle Reglerreservierungen des Zuges trainid und reserviert anschliessend neu. Alle nicht benutzen aber aufgedrehten Regler werden runtergefahren.
void beschleunigeZug (int trainid, bool erzwingen=FALSE)
 Geht alle Sektionen durch und setzt/korrigiert falls notwendig die angelegte Geschwindigkeit auf den Reglern, die vom Zug trainid belegt werden. Falls erzwingen TRUE ist, wird die Geschwindigkeit auch gesetzt, falls eigentlich keine Korrektur notwendig ist (dies ist notwendig, wenn man nicht sicher ist, ob ein Reedkontakt mittlerweile berfahren wurde, der die Geschwindigkeit flschlicherweise (d.h. die Korrektur war nicht mehr (nach der berfahrt eines vorherigen Reedkontakts) notwendig) verndert hat)
int entferneZug (int zug, bool force=TRUE)
 Entfernt den Zug zug vom Gleisplan und schalte die Regler, die zum Zug gehoeren, ab.
void automatischeSteuerungBahnhoefeStarten (void)
 Startet den automatischen Betrieb aller Bahnhoefe, die nicht inaktiv sind.
void automatischeSteuerungBahnhoefeStoppen (void)
 Stoppt den automatischen Betrieb aller Bahnhfe (setzt deren status auf 3 (aus) sofern diese nicht inaktiv (status=0) sind)
bool automatischeSteuerungBahnhoefe (void)
 Liefert TRUE, falls die automatische Steuerung der Bahnhoefe aktiv ist.
cKonnektorgetKonnektor (int welche, bool warnung=TRUE)
 Liefert einen Zeiger auf den Konnektor mit der conid welche zurueck. Existiert dieser nicht wird NULL zurueckgeliefert.
cSektiongetSektion (int welche)
 Liefert einen Zeiger auf die Sektion mit der secid welche zurueck. Existiert diese nicht wird NULL zurueckgeliefert.
cTraingetTrain (int welche)
 Liefert einen Zeiger auf den Zug mit der trainid welche zurueck.
QString getZielRichtungvonWeiche (int welche)
 Liefert das Ziel von Weiche welche als QString zurck.
QString getKonnektorTyp (int welche)
 Liefert den Typ eines Konnektors zurck.
cHardwaregetHardware (void)
 Liefert Zeiger auf cHardware-Klasse.
void defineReglerVirtuell (int reglerid, int adresse, int subadresse)
 Speichert einen Regler im cRegler-Array.
void setReglerVirtuellGeschwindigkeit (int reglerid, int geschwindigkeit, int richtung)
 Setzt eine Geschwindigkeit im cRegler-Array.
int getReglerVirtuellAdresse (int reglerid)
 Liefert die Adresse eines Reglers zurueck.
int getReglerVirtuellSubadresse (int reglerid)
 Liefert die Subadresse eines Reglers zurueck.
void setKonnektorxy (int welche, double x, double y)
 legt die neuen Koordinaten von Konnektor welche fest (x und y geben dabei die Koordinaten im QCanvas an) und passt die um welche liegenden Sektionen an.
void setDescriptionxy (int welche, double x, double y)
 legt die neuen Koordinaten von Beschreibung welche fest (x und y geben dabei die Koordinaten im QCanvas an)
void setSignalxy (int welche, double x, double y)
 legt die neuen Koordinaten von Signal welche fest (x und y geben dabei die Koordinaten im QCanvas an)
void saveKonnektor (int welche)
 speichert die Koordinaten des Konnektors welche in der Datenbank
void saveDescription (int welche)
 speichert die Koordinaten der Beschreibung welche in der Datenbank
void saveSignal (int welche)
 speichert die Koordinaten des Signals welche in der Datenbank
void NeuerKonnektor (int secid, double xx, double yy)
 Legt einen (Hilfs-)Konnektor in der Sektion secid mit den QCanvas-Koordinaten xx,yy an.
void KonnektorLoeschen (int conid)
 Loescht den Konnektor conid aus dem Gleisplan.
void UpdateLok (int trainidtmp)
 Sendet das Signal SignalUpdateFensterLokSteuerung(trainidtmp)
void setControlsDisabled (bool controlsDisabledtmp)
 Setzt controlsDisabled. Ist der Wert TRUE, so werden keine Befehle akzeptiert und keine Informationen an die Zuege weitergeleitet.
void setShowInfo (bool showinfo)
int measureStarten (QObject *cfensterlokzeiger, int zugtmp, bool rueckwaertsvorsichtig)
 Zeitmessung starten. Zunaechst werden die Konnektoren nach der Messstrecke durchsucht. Wenn der Zug richtig herum auf dem Startpunkt der Messstrecke steht, wird die Messung gestartet, indem measureAktion aufgerufen wird.
void measureAktion (int welcher)
 measureAktion wertet aus, was passieren soll, wenn der Reedkontakt welcher ueberfahren wird. In aller Regel werden Befehle an andere Reedkontakte geschickt, die dafuer sorgen, dass der Zug abbremst und stehen bleibt, bzw. es werden die Zeiten gemessen, mit der der Zug die letzte Strecke durchfahren hat.
void measureCancel (void)
 Beendet des Messaktion.
int sucheWeg (int trainid, cListe *Befehle, int wo, int startkonnektor, int startrichtung, int fahrplanunganz, int *fahrplanung, int maxweg)
 Sucht einen Weg fuer Zug trainid von startkonnektor in startrichtung (an diesem Ort befindet sich der Zug) ber die fahrplanunganz Konnektoren in *fahrplanung. Maximal maxweg (Sektionen und Konnektoren zusammen) darf dieser Weg lang sein.
cBahnhofgetBahnhof (int welcher)
 Liefere Zeiger auf Bahnhof welcher. Vorsicht: Bahnhof 0 existiert nicht!

Private Attribute

double speedmultiplier
 Faktor mit dem Geschwindigkeiten zum Beginn multipliziert werden, wenn Loks waermer werden.
cMainWindowMainWindow
 Zeiger auf das Hauptfenster;.
bool controlsDisabled
 Steht hier true, so werden keine Befehle akzeptiert und auch der Schaltplan nur im Rohbau praesentiert.
cRegler Regler [maxRegler]
 Verwaltung der Regler.
cTrain Train [maxTrain]
 Verwaltung der Zuege.
int automatischeSteuerungQueue [maxTrain]
 Liste der Zuege, fuer die automatischeSteuerung aufzurufen ist (Liste wird durch executeAutomatischeSteuerung und insertAutomatischeSteuerung verwaltet)
int lastreed [maxTrain]
 Speichert fuer jeden Zug den zuletzt ueberfahrenen Reedkontakt. Dient der Ueberpruefung, ob Zuege stehengeblieben sind. Bearbeitung geschieht ueber SlotPruefeAufStehendeLoks.
int lastreedwarten [maxTrain]
 Speichert fuer jeden fahrenden Zug, wie haeufig der Zug die Position nicht veraendert hat. Bearbeitung geschieht ueber SlotPruefeAufStehendeLoks.
cBahnhofBahnhof [maxBahnhof]
 Verwaltung der Bahnhoefe.
cHardwareHardware
 Zeiger auf die cHardware Klasse.
cKonnektorKonnektor [maxKonnektoren]
 Zeiger auf Konnektoren.
cDescriptionDescription [maxDescriptions]
 Zeiger auf Textelemente auf dem Gleisplan.
cSektionSektion [maxSektionen]
 Zeiger auf Strecken.
cSignalSignal [maxSignale]
 Zeiger auf Signale.
cSignalRuleSignalRegel [maxSignalRegeln]
 Zeiger auf Regeln, die den Signalen zugeordnet sind (wann wird welche Farbe angezeigt)
bool existiertKonnektor [maxKonnektoren]
 Array, welches angibt, ob ein bestimmter Konnektor existiert.
bool existiertSektion [maxSektionen]
 Array, welches angibt, ob eine bestimmte Sektion existiert.
int anzahlKonnektoren
 maximale ID der im Gleisplan genutzten Konnektoren
int anzahlSektionen
 maximale ID der im Gleisplan genutzten Sektionen
int maxfahrendezuege
 zur Ausgabe (lediglich Info): maximale Anzahl der gleichzeitig fahrenden Zuege
QTimer * timer
 Timer, der pruefeAufStehendeLoks aufruft.
QGraphicsScene * canvas
 Gleisplan.
bool measureAktiv
 Variablen zur automatischen Geschwindigkeitsmessung.
double measureLaenge
 Laenge der Messstrecke. Konstante, die aus Konfig-Datei geladen werden (measure/laenge).
int measureMaxRueckwaertsVorsichtig
 Maximale Geschwindigkeit beim Rueckwaertsfahren auf der Messstrecke in kmh. Konstante, die aus Konfig-Datei geladen werden (measure/maxRueckwaertsVorsichtig).
int measureMaxGeschwindigkeit
 Maximale Geschwindigkeit beim Vorwaertsfahren auf der Messstrecke in kmh. Konstante, die aus Konfig-Datei geladen werden (measure/maxGeschwindigkeit).
int measureGeschwindigkeit
 Aktuelle Regler-Geschwindigkeit, mit die Messstrecke durchfahren wird. Variable fuer den Messvorgang.
int measureRichtung
 Aktuelle Regler-Richtung, mit die Messstrecke durchfahren wird. Variable fuer den Messvorgang.
int measureWert
 Anzahl der bislang gemessenen Werte. Variable fuer den Messvorgang.
int measureMax0
 bisherige Maximalgeschwindigkeit in Richtung 0
int measureMax1
 bisherige Maximalgeschwindigkeit in Richtung 1
int measureMaxZurueckErreicht
 reglerstufe, bei der die zulaessige hoechstgeschwindigkeit bei rueckwaertsfahrt ueberschritten wurde. Variable fuer den Messvorgang.
int measureMaxZurueck
 Zulaessige Hoechstgeschwindigkeit bei Rueckwaertsfahrt. Variable fuer den Messvorgang.
int measureRegler
 Regler, der misst. Variable fuer den Messvorgang.
int measureZug
 Zug, der vermessen wird. Variable fuer den Messvorgang.
int measureStart
 Konnektorennummern der 4 Reedkontakte der Messstrecke. Start-Messpunkt.
int measure1
 Konnektorennummern der 4 Reedkontakte der Messstrecke. Messpunkt, bei dem Zeitmessung bei Vorwaertsfahrt beginnt.
int measure2
 Konnektorennummern der 4 Reedkontakte der Messstrecke. Messpunkt, bei dem Zeitmessung bei Vorwaertsfahrt endet.
int measureStop
 Konnektorennummern der 4 Reedkontakte der Messstrecke. Stop-Messpunkt.
int sektionSpeichernZaehler
 gibt an, welche Sektion beim staendigen Speichern als letztes dran war
bool ProgrammLaeuft
 gibt an, ob das Programm laeuft, d.h. alle Sektionen, ... sind im Speicher

Ausführliche Beschreibung

Verwaltung aller Zuege/Sektionen/Konnektoren. Kontrolliert (Re-)Aktionen.

Diese Klasse ist fuer alles verantwortlich, was an Aktionen und Reaktionen vorfaellt. Ereignisse aus der Hardware-Klasse werden hier weiterverarbeitet, Befehle werden an die Hardware-Klasse abgesetzt. Diese Klasse verwaltet alle Sektionen und Konnektoren auf der Anlage, die auf dem Bildschirm zu sehen ist.

Noch zu erledigen:

In ctrain sollte nur noch eine befehlsliste verarbeitet werden, die auf cliste basiert. nimmt die daran enthaltene anzahl von befehlen zu stark ab, koennen neue befehle aus der datenbank nachgelesen werden. das "weiterblaettern" von befehlen sollte nicht mehr in cintelligenz erfolgen! In dieser liste werden sowohl weichenbefehle, als auch reedkontaktbefehle gespeichert und nacheinander in bloecken (nach fahrreglern) abgearbeitet. in die clisteneintrag sollte noch ein feld fuer komplexere befehle aufgenommen werden. auch sollte es moeglich sein, befehle dynamisch zu generieren wie z.b. suche freies gleis durch hauptbahnhof (dies wird waehrend der laufzeit generiert). dazu koennte man befehle, die in der liste stehen, umwandeln und die sich ergebenden reedkontakte einfuegen. die umwandelung koennte man einer art plugins ueberlassen. so z.b. fuer schattenbahnhoefe und hauptbahnhof. diese plugins koennten dann von aussen konfigurierbar sein.

Die Befehlsumwandelung String->cListe sollte komplett in cIntelligenz durchgefuehrt werden.

Die ueberholte reedkontaktliste solle von cliste abgeleitet werden! bzw. auf basis von qvaluelist neu geschrieben werden

Definiert in Zeile 100 der Datei cIntelligenz.h.


Beschreibung der Konstruktoren und Destruktoren

cIntelligenz::cIntelligenz ( QGraphicsScene *  canvastmp,
cMainWindow MainWindowTmp 
)

Initialisiert alle Variablen. Setzt Zeiger auf NULL. Baut die Datenstrukturen aus der Datenbank auf, indem es RereadRailroad aufruft. Konnektoren/Sektion werden im bergebenen QCanvas angezeigt.

cIntelligenz::~cIntelligenz ( void  )

Speichert die Informationen zu Konnektoren in der Datenbank. Loescht die Datenstrukturen aus dem Speicher.


Dokumentation der Elementfunktionen

int cIntelligenz::automatischeFahrplanung ( int  laufplanungzug,
int  laufplanunganz,
int *  laufplanung,
int  richtung = 0 
) [slot]

Erstellt eine Fahrplanung ber die laufplanunganz Reedkontakte (Start- und Endpunkt mit dabei), die in laufplanung[0..laufplanunganz-1] abgelegt sind, fuer den Zug laufplanungzug, der in Richtung richtung losfahren soll.

int cIntelligenz::automatischeSteuerung ( int  trainid) [slot]

Organisiert die automatische Steuerung von Zug trainid. Dazu wird im Befehlssatz nachgeschlagen, was der Zug zu tun hat und es wird der Befehl ausgefuehrt. Ggf. werden neue Befehle geladen.

bool cIntelligenz::automatischeSteuerungBahnhoefe ( void  )

Liefert TRUE, falls die automatische Steuerung der Bahnhoefe aktiv ist.

void cIntelligenz::automatischeSteuerungBahnhoefeStarten ( void  )

Startet den automatischen Betrieb aller Bahnhoefe, die nicht inaktiv sind.

void cIntelligenz::automatischeSteuerungBahnhoefeStoppen ( void  )

Stoppt den automatischen Betrieb aller Bahnhfe (setzt deren status auf 3 (aus) sofern diese nicht inaktiv (status=0) sind)

void cIntelligenz::beschleunigeZug ( int  trainid,
bool  erzwingen = FALSE 
)

Geht alle Sektionen durch und setzt/korrigiert falls notwendig die angelegte Geschwindigkeit auf den Reglern, die vom Zug trainid belegt werden. Falls erzwingen TRUE ist, wird die Geschwindigkeit auch gesetzt, falls eigentlich keine Korrektur notwendig ist (dies ist notwendig, wenn man nicht sicher ist, ob ein Reedkontakt mittlerweile berfahren wurde, der die Geschwindigkeit flschlicherweise (d.h. die Korrektur war nicht mehr (nach der berfahrt eines vorherigen Reedkontakts) notwendig) verndert hat)

void cIntelligenz::beschleunigeZugVorbereitung ( int  trainid,
int  geschwindigkeitkmh,
int  richtung 
)

Bestimmt alle Regler, die vom Zug verwendet werden und reserviert diese. Dabei wird auch die gewuenschte Geschwindigkeit und Richtung fuer jeden Regler im Speicher hinterlegt. Alle anderen werden im Speicher freigegeben und die angelegte Geschwindigkeit im Speicher auf 0 gesetzt.

void cIntelligenz::cDebug ( int  prioritaet,
const QString &  meldung 
)

Gibt die Meldung "meldung" in eine der Klasse zugeordnete Logdatei aus. Dabei werden Meldungen mit der Prioritaet prioritaet 0 auch auf dem Bildschirm als Warnung ausgegeben. Meldungen mit Prioritaet >=2 (bzw. >=1) werden in aller Regel nicht in die Log-Datei ausgegeben, lassen sich aber durch Modifikation der Funktion cDebug zur Ausgabe hinzufuegen. Der Klasse ist die log-Datei log.cIntelligenz zugeordnet.

void cIntelligenz::changeSpeedMultiplier ( double  speedmultipliertmp) [inline, slot]

Veraendere Speedmultiplier (1 = Standardgeschwindigkeit). Zu spaeteren Zeitpunkten, wenn die Loks waermer sind, kann dieser Multiplier verringert werden.

Definiert in Zeile 309 der Datei cIntelligenz.h.

Benutzt speedmultiplier.

{ speedmultiplier=speedmultipliertmp; };
void cIntelligenz::defineReglerVirtuell ( int  reglerid,
int  adresse,
int  subadresse 
)

Speichert einen Regler im cRegler-Array.

int cIntelligenz::entferneZug ( int  zug,
bool  force = TRUE 
)

Entfernt den Zug zug vom Gleisplan und schalte die Regler, die zum Zug gehoeren, ab.

void cIntelligenz::executeAutomatischeSteuerung ( void  ) [slot]

fuehrt AutomatischeSteuerung aus

int cIntelligenz::findeZugBeiReedkontakt ( int  welcher,
int  richtung 
)

untersucht, welcher Zug den Reedkontakt 'welcher' ueberfahren haben koennte, wenn der zugehoerige Regler in Richtung 'richtung' faehrt. dabei wird die fahrstrecke zurueckverfolgt (also in die richtung gegangen, wo der zug hergekommen sein muesste) und der naechste zug als ergebnis geliefert, der entweder in richtung reedkontakt unterwegs war, oder aber diesen oder die strecke dorthin reserviert hatte.

int cIntelligenz::getAusgangVonKonnektor ( int  sektionid,
int  konnektorid,
int  ausgang 
)

getAusgangVonKonnektor liefert die Sektion zurueck, in die wir uns begeben, wenn wir die Richtung beibehalten, uns im Konnektor konnektorid befinden und von Sektion sektionid kommen. Ist ausgang=0, so wird die Weichenstellung beruecksichtigt, die als Ziel vorgegeben ist. Ist ausgang=1,2 so wird der erste bzw. zweite theoretisch moegliche Ausgang (Sektionsnummer) zurueckliefert. Ist ausgang negativ, so wird die Weichenstellung verwendet, die in der Datenbank gespeichert ist. Dies ist fuer den Start des Programmes wichtig.

int cIntelligenz::getAusgangVonSektion ( int  sektionid,
int &  konnektorid,
int  trainrichtung,
int &  trainrichtungneu,
int  lastAusgang = 0,
int  beachteWeichen = 0 
)

getAusgangVonSektion liefert die Nummer der Sektion zurueck, die theoretisch durchfahren werden kann, wenn wir unsere Richtung nicht aendern (ist lastAusgang!=0, so wird dieser Ausgang nicht gewaehlt. Ermoeglicht es, alle theoretischen Ausgaenge durchzuprobieren (max 2)). Die Richtung, in der diese neue Sektion durchfahren werden muss, wird in trainrichtungneu abgelegt. konnektorid beinhaltet den verbindenden Konnektor zwischen alter und neuer Sektion. Ist beachteWeichen=1(TRUE), so werden nicht die theoretisch moeglichen Ausgaenge beachtet, sondern die aktuelle Stellung der Weiche(n). Ist beachteWeiche 2, so wird die Weichenstellung verwendet, die in der Datenbank gespeichert ist. Dies ist fuer den Start des Programmes wichtig. Ist lastAusgang auf eine Sektion gestetzt, die nicht von dem ermittelten Konnektor erreichbar ist, so wird dies wie lastAusgang weiterbehandelt. Dabei befinden wir uns in Sektion sektionid und fahren in Richtung trainrichtung. Das letzte Mal sind wir in Richtung lastAusgang gefahren.

cBahnhof* cIntelligenz::getBahnhof ( int  welcher)

Liefere Zeiger auf Bahnhof welcher. Vorsicht: Bahnhof 0 existiert nicht!

cHardware* cIntelligenz::getHardware ( void  ) [inline]

Liefert Zeiger auf cHardware-Klasse.

Definiert in Zeile 173 der Datei cIntelligenz.h.

Benutzt Hardware.

{ return(Hardware); };
cKonnektor* cIntelligenz::getKonnektor ( int  welche,
bool  warnung = TRUE 
)

Liefert einen Zeiger auf den Konnektor mit der conid welche zurueck. Existiert dieser nicht wird NULL zurueckgeliefert.

QString cIntelligenz::getKonnektorTyp ( int  welche)

Liefert den Typ eines Konnektors zurck.

Moegliche Typen:

  • contypeWeiche (Weiche),
  • contypeReed (Reedkontakt),
  • contypeConnector (isolierender Verbinder),
  • contypeHelper (Hilfspunkt fuer graphische Darstellung),
  • contypeRegler (?)
int cIntelligenz::getNaechsteReedkontakte ( int  trainid,
int  richtung,
int  markieren,
const int  maxanzahlreedkontakte,
int  welche[] 
)

Sucht den Reedkontakt, den der Zug trainid als naechstes ueberfahren wird, wenn er vorwaerts (richtung = 0) bzw. rueckwaerts (richtung = 1) faehrt, und liefert die Konnektor-ID zurueck. anzahlreedkontakte gibt an, nach dem wievielten Reedkontakt gesucht werden soll (=2 sagt z.B. nach dem uebernaechstem). markieren sagt, was zu tun ist: ccReedNichtAufAn sorgt dafuer, dass ignoriert wird, falls ein Gleis aus ist, ccReedBelegen/Reservieren/Freigeben sind definiert wie an anderer Stelle beschrieben.

int cIntelligenz::getReglerVirtuellAdresse ( int  reglerid)

Liefert die Adresse eines Reglers zurueck.

int cIntelligenz::getReglerVirtuellSubadresse ( int  reglerid)

Liefert die Subadresse eines Reglers zurueck.

cSektion* cIntelligenz::getSektion ( int  welche)

Liefert einen Zeiger auf die Sektion mit der secid welche zurueck. Existiert diese nicht wird NULL zurueckgeliefert.

cTrain* cIntelligenz::getTrain ( int  welche) [inline]

Liefert einen Zeiger auf den Zug mit der trainid welche zurueck.

Definiert in Zeile 159 der Datei cIntelligenz.h.

Benutzt Train.

{ return(&(Train[welche])); };
QString cIntelligenz::getZielRichtungvonWeiche ( int  welche)

Liefert das Ziel von Weiche welche als QString zurck.

Moegliche Richtungen: dirLeft, dirRight, dirFehler

int cIntelligenz::getZugPosition ( int  trainid)

Ermittelt den Reedkontakt bei dem die Nase des Zugs trainid steht, indem alle Sektionen durchgeschaut werden und wenn eine Sektion mit dem Zug gefunden wurde, dieser nach vorne durchgegangen wird.

void cIntelligenz::insertAutomatischeSteuerung ( int  lok) [slot]

Sorgt fuer Ausfuehrung von AutomatischerSteuerung in 200ms+x.

void cIntelligenz::KonnektorLoeschen ( int  conid)

Loescht den Konnektor conid aus dem Gleisplan.

int cIntelligenz::manuelleSteuerung ( int  trainid,
int  geschwindigkeitkmh,
int  richtung,
bool  emitsignal = FALSE 
)

Versuche Geschwindigkeit von Zug trainid auf geschwindigkeitkmh in richtung zu setzen. Reserviere dazu alle noetigen Reedkontakte. Ist emitsignal=TRUE, so wird die aktuelle Geschwindigkeit als Signal abgesetzt (fuers Kontrollfenster)

void cIntelligenz::measureAktion ( int  welcher)

measureAktion wertet aus, was passieren soll, wenn der Reedkontakt welcher ueberfahren wird. In aller Regel werden Befehle an andere Reedkontakte geschickt, die dafuer sorgen, dass der Zug abbremst und stehen bleibt, bzw. es werden die Zeiten gemessen, mit der der Zug die letzte Strecke durchfahren hat.

void cIntelligenz::measureCancel ( void  )

Beendet des Messaktion.

int cIntelligenz::measureStarten ( QObject *  cfensterlokzeiger,
int  zugtmp,
bool  rueckwaertsvorsichtig 
)

Zeitmessung starten. Zunaechst werden die Konnektoren nach der Messstrecke durchsucht. Wenn der Zug richtig herum auf dem Startpunkt der Messstrecke steht, wird die Messung gestartet, indem measureAktion aufgerufen wird.

void cIntelligenz::message ( const QString &  ) [signal]

Signal mit einer Meldung an das Statusfenster.

int cIntelligenz::modifySpeed ( int  geschwindigkeit,
int  trainid,
int  reglerrichtung,
int  conid 
) [slot]

Verndert eine bergebene Geschwindigkeit (Erhhung bei Programmbeginn fuer kalte Loks, sowie Bercksichtigung von Steigungen)

void cIntelligenz::NeuerKonnektor ( int  secid,
double  xx,
double  yy 
)

Legt einen (Hilfs-)Konnektor in der Sektion secid mit den QCanvas-Koordinaten xx,yy an.

bool cIntelligenz::parseBefehl ( int  trainid,
int  positiondiff 
) [slot]

bersetzt den Befehl des Zugs trainid, der vom aktuellen Befehl positiondiff entfernt ist (0 ist der aktuelle Befehl)

int cIntelligenz::passtZug ( int  trainid,
int  konnektorid,
int  markieren = ccReedSuchen,
int  trainRichtung = -1 
)

Liefert 1 zurueck, falls der Zug auf den Konnektor passt, und 0 falls er nicht passt (vornehmlich von der Laenge her). markieren kann die Werte ccReedSuchen (zum Testen, ob der Zug passt), ccReedReservieren (zum Reservieren des entsprechenden Bereiches) und ccReedMarkieren (zum Belegen des Bereiches) annehmen.

void cIntelligenz::ReedkontakteGeaendert ( int  zaehler,
int  reedkontakte[24],
int  status[24] 
)

wird ausgefuehrt, wenn mehr als ein Reedkontakt innerhalb einer Statusmeldung geaendert wird. In diesem Fall werden alle Zuege durchgegangen und ermittelt, an welcher Stelle der reservierten Reedkontakte der ausgeloeste Kontakt steht. Anschliessend werden zunaechst die ausgeloesten Reedkontakte bearbeitet, die an Stelle 1 stehen, dann an Stelle 2, usw. Hintergrund: Vermeidung von Problemen, wenn bei zwei reservierten Reedkontakten, erst das Ueberfahren des hinteren bearbeitet wird und im Anschluss Probleme entstehen bei der Bearbeitung des Ueberfahrens des ersten.

void cIntelligenz::RereadRailroad ( void  )

Baut den Anlagen-Plan aus der Datenbank auf und registriert die Konnektoren/Fahrregler im Hardware-Modul (welches auch neu gestartet wird). Bahnhoefe werden ebenfalls neu eingelesen. Evtl. sollten die Zuege auch neu eingelesen werden, momentang werden diese im Konstruktor dieser Klasse gesetzt. (dieser Befehl wird nicht nur am Anfang des Programmes ausgefuehrt. Wenn das Programm im Edit-Modus ausgefuehrt wird, so wird der Befehl ausgefuehrt, falls ein Konnektor geloescht wird!)

void cIntelligenz::saveDescription ( int  welche)

speichert die Koordinaten der Beschreibung welche in der Datenbank

void cIntelligenz::saveKonnektor ( int  welche)

speichert die Koordinaten des Konnektors welche in der Datenbank

void cIntelligenz::saveSignal ( int  welche)

speichert die Koordinaten des Signals welche in der Datenbank

void cIntelligenz::schalteLeereReglerAb ( int  trainid)

Entfernt alle Reglerreservierungen des Zuges trainid und reserviert anschliessend neu. Alle nicht benutzen aber aufgedrehten Regler werden runtergefahren.

void cIntelligenz::setControlsDisabled ( bool  controlsDisabledtmp)

Setzt controlsDisabled. Ist der Wert TRUE, so werden keine Befehle akzeptiert und keine Informationen an die Zuege weitergeleitet.

void cIntelligenz::setDescriptionxy ( int  welche,
double  x,
double  y 
)

legt die neuen Koordinaten von Beschreibung welche fest (x und y geben dabei die Koordinaten im QCanvas an)

void cIntelligenz::setKonnektorxy ( int  welche,
double  x,
double  y 
)

legt die neuen Koordinaten von Konnektor welche fest (x und y geben dabei die Koordinaten im QCanvas an) und passt die um welche liegenden Sektionen an.

void cIntelligenz::setLicht ( int  button,
int  einaus 
)

Schaltet Licht.

void cIntelligenz::setReglerVirtuellGeschwindigkeit ( int  reglerid,
int  geschwindigkeit,
int  richtung 
)

Setzt eine Geschwindigkeit im cRegler-Array.

void cIntelligenz::setShowInfo ( bool  showinfo)
void cIntelligenz::setSignalxy ( int  welche,
double  x,
double  y 
)

legt die neuen Koordinaten von Signal welche fest (x und y geben dabei die Koordinaten im QCanvas an)

void cIntelligenz::setTrigger ( int  trainid,
int  vorneeinfuegen,
int  conid,
bool  aktivieren,
int  regler,
int  geschwindigkeit,
int  richtung,
int  beschleunigung,
int  geschwindigkeitkmh 
)

Prozedur verfolgt im Wesentlichen denselben Zwecke wie setTrigger in cHardware. Zusaetzlich wird nachgeschaut, ob der reedkontakt schon vorher von dem zug verwendet wurde. wenn ja, wird er korrigiert (mit modifyTrigger aus der cHardware Klasse), ansonsten wird er gesetzt und zu der Reedkontaktliste des Zugs hinzugefuegt. Der angegebene Reedkontakt wird in der Reedkontaktliste des Zuges hinten angefuegt (sofern vorneeinfuegen=0 ist), ansonsten wird er vorne eingefuegt.

void cIntelligenz::setWeiche ( int  welche,
const QString &  richtung 
)

Stellt die Weiche weiche auf die Richtung richtung (versucht es zumindest).

void cIntelligenz::SignalAlarm ( int  ) [signal]

Wird emittiert, wenn ein Zug stehenbleibt.

void cIntelligenz::SignalBahnhofsdurchsage ( int  ,
const QString &   
) [signal]

Wird emittiert, wenn eine Info (zweiter Paraemeter) an Bahnhof (erster Parameter) zu senden ist.

void cIntelligenz::SignalBefehlAusfuehren ( int  ,
int  ,
int  ,
int  ,
int   
) [signal]

Signal, um einem Bahnhof einen Befehl mitzuteilen, der zu bearbeiten ist (Parameter: bahnhofsnr,reed,trainid,meldungid,zuparsen.listenid). Befehle, die zu bearbeiten sind, sind z.B. Anfragen nach Einstellen oder Durchfahrt eines Zugs.

void cIntelligenz::SignalCanvasUpdate ( void  ) [signal]

Signal, Canvas zu aktualisieren.

void cIntelligenz::SignalFensterWeicheUpdate ( void  ) [signal]

Signal, welches emittiert wird, wenn eine Weiche geschaltet wird.

void cIntelligenz::SignalGeschwindigkeitsmeldung ( int  ,
int  ,
int  ,
int  ,
int   
) [signal]

Signale, die bei der Messung emittiert werden (nr. des werts, ?,reglergeschwindigkeit,kmh,richtung)

void cIntelligenz::SignalReedkontaktAngeklickt ( int  ) [signal]

Signal, dass emittiert wird, wenn der Reedkontakt (Parameter) angeklickt wird.

void cIntelligenz::SignalReedkontaktGeaendert ( int  ,
int   
) [signal]

Signal wird von cIntelligenz selbst ausgefuehrt, falls mehrere Reedkontaktaenderungen auf einmal auftreten und von cHardware per Aufruf von ReedkontakteGeaendert gemeldet werden.

void cIntelligenz::SignalSektionAngeklickt ( int  ) [signal]

Signal, dass emittiert wird, wenn eine Sektion (Parameter) angeklickt wird.

void cIntelligenz::SignalSollGeschwindigkeitAendern ( int  ,
int  ,
int   
) [signal]

Signal, dass die gewuenschte Zuggeschwindigkeit mitteilt (trainid,kmh,Richtung)

void cIntelligenz::SignalUpdateBahnhofsFenster ( int  ) [signal]

Wird von SlotUpdateBahnhofsfenster emittiert (Parameter ist der Bahnhof, dessen Fenster aktualisiert werden soll). Erfolgt, wenn Reedkontakte im Bahnhof reserviert werden oder der Bahnhof ein/ausgeschaltet wird.

void cIntelligenz::SignalUpdateFensterLokSteuerung ( int  ) [signal]

Signal, dass die Lok (erster Parameter) eine andere Geschwindigkeit/Ort/Richtung etc. hat.

void cIntelligenz::SignalZugGeschwindigkeit ( int  ,
int  ,
int   
) [signal]

Signal, dass die Zuggeschwindigkeit mitteilt (trainid,kmh,Richtung)

void cIntelligenz::SignalZugOrt ( int  ,
int   
) [signal]

Signal, dass mitteilt, an welchem Ort (Reedkontakt, zweiter Parameter) sich die Lok (erster Parameter) jetzt befindet.

void cIntelligenz::SlotBahnhofsdurchsage ( int  bahnhofsnr,
QString  durchsage 
) [slot]

Meldet die Info durchsage an Bahnhof bahnhofsnr.

void cIntelligenz::SlotLokPositionChanged ( int  trainid,
int  reedalt,
int  reed,
int  richtung,
int  geschw 
) [slot]

Info von Zug, dass sich seine Position/Geschw/Richtung geaendert hat.

void cIntelligenz::SlotPruefeAufStehendeLoks ( void  ) [slot]

Prueft ob Loks stehengeblieben sind.

void cIntelligenz::SlotReedkontaktAngeklickt ( int  welcher) [slot]

Wird von Hauptfenster aufgerufen, wenn ein Reedkontakt angeklickt wird. Emitiert das Signal SignalReedkontaktAngeklickt(int)

void cIntelligenz::SlotReedkontaktGeaendert ( int  welcher,
int  status 
) [slot]

Wird aufgerufen, wenn sich die Hardware sieht, dass Reedkontakt welcher seinen Status geaendert hat. status ist 0, falls der Reedkontakt scharf gemacht wurde, ansonsten wurde der Reedkontakt ausgelst. SlotReedkontaktGeaendert aktualisiert die Anzeige, schaltet eine Weiterfahrt bei Halt aus und sorgt fuer andernfalls fuer eine erneute Reservierung von Reedkontakten durch Aufruf von manuelleSteuerung.

void cIntelligenz::SlotReglerStatusGeaendert ( int  regler,
int  kurzschluss,
int  besetzt 
) [slot]

Wird per Signal aufgerufen von cHardware, wenn sich der Status (Kurzschluss/Besetzt) eines Reglers aendert. Info wird in log.cKurzschluss geschrieben.

void cIntelligenz::SlotResetCounters ( void  ) [slot]

Setzt Fehlerzaehler zurueck (LokStehengeblieben, Weichenfehler, Kurzschluss etc.)

void cIntelligenz::SlotSektionAngeklickt ( int  welche) [slot]

Wird von Hauptfenster aufgerufen, wenn eine Sektion angeklickt wird. Emitiert das Signal SignalSektionAngeklickt(int)

void cIntelligenz::SlotSetSignal ( int  sigid,
int  status 
) [slot]

Schaltet Signal.

void cIntelligenz::SlotUpdateBahnhofsfenster ( int  bahnhofsnr) [slot]

Emittiert SignalUpdateBahnhofsFenster.

void cIntelligenz::SlotWeicheGeaendert ( int  welche) [slot]

Wird aufgerufen, wenn sich eine Weichenstellung aendert. In diesem Fall wird der Stromverlauf aktualisiert und das Anlagenbild geupdated.

int cIntelligenz::StromAktualisieren ( int  ueberpruefenRegler,
bool  nurueberpruefen = FALSE 
)

Ermittelt auf Basis der Strom-Anschluesse und der Weichenstellungen, welche Gleise Strom fuehren und aendert die Darstellung entsprechend. Weiterhin wird den Reglern der Zug zugeordnet, welcher momentan auf dem Regler steht. Ist nurueberpruefen=TRUE, so werden eventuelle Weichenstellungen, die im Konnektor mit setRichtungPruefen gespeichert wurden, auf ihre Zulaessigkeit ueberprft (liefere 0 zurueck, wenn keine Probleme, sonst 1) (fahrregler muss !=0 sein fuer diese funktion). Gegenwaertig besteht noch das Problem, dass einem auf einem Abstellgleis fahrenden Zug durch Weichenaenderung der Strom entzogen werden kann.

int cIntelligenz::sucheWeg ( int  trainid,
cListe Befehle,
int  wo,
int  startkonnektor,
int  startrichtung,
int  fahrplanunganz,
int *  fahrplanung,
int  maxweg 
)

Sucht einen Weg fuer Zug trainid von startkonnektor in startrichtung (an diesem Ort befindet sich der Zug) ber die fahrplanunganz Konnektoren in *fahrplanung. Maximal maxweg (Sektionen und Konnektoren zusammen) darf dieser Weg lang sein.

int cIntelligenz::ueberpruefeSpeicher ( void  )

Ueberprft die Zeiger, die in den cSektionen und cKonnektoren abgelegt sind, mit den wirklichen und gibt bei Abweichungen eine entsprechende Meldung aus (Hintergrund: bei der Entwicklung gab es am Anfang Probleme mit der Speicherallokation. Die Routine entstand zum Debugging)

void cIntelligenz::UpdateLok ( int  trainidtmp)

Sendet das Signal SignalUpdateFensterLokSteuerung(trainidtmp)

void cIntelligenz::WeichenStrassenAnalysieren ( int  reglernr)

WeichenStrassenAnalysieren mit Hilfe von StromAktualisieren; speichert in den Konnektoren und Sektionen bei welchen Weichenstellungen sie eingeschaltet sind.


Dokumentation der Datenelemente

maximale ID der im Gleisplan genutzten Konnektoren

Definiert in Zeile 250 der Datei cIntelligenz.h.

maximale ID der im Gleisplan genutzten Sektionen

Definiert in Zeile 252 der Datei cIntelligenz.h.

Liste der Zuege, fuer die automatischeSteuerung aufzurufen ist (Liste wird durch executeAutomatischeSteuerung und insertAutomatischeSteuerung verwaltet)

Definiert in Zeile 226 der Datei cIntelligenz.h.

Verwaltung der Bahnhoefe.

Definiert in Zeile 232 der Datei cIntelligenz.h.

QGraphicsScene* cIntelligenz::canvas [private]

Gleisplan.

Definiert in Zeile 258 der Datei cIntelligenz.h.

Steht hier true, so werden keine Befehle akzeptiert und auch der Schaltplan nur im Rohbau praesentiert.

Definiert in Zeile 220 der Datei cIntelligenz.h.

Zeiger auf Textelemente auf dem Gleisplan.

Definiert in Zeile 238 der Datei cIntelligenz.h.

Array, welches angibt, ob ein bestimmter Konnektor existiert.

Definiert in Zeile 246 der Datei cIntelligenz.h.

Array, welches angibt, ob eine bestimmte Sektion existiert.

Definiert in Zeile 248 der Datei cIntelligenz.h.

Zeiger auf die cHardware Klasse.

Definiert in Zeile 234 der Datei cIntelligenz.h.

Wird benutzt von getHardware().

Zeiger auf Konnektoren.

Definiert in Zeile 236 der Datei cIntelligenz.h.

Speichert fuer jeden Zug den zuletzt ueberfahrenen Reedkontakt. Dient der Ueberpruefung, ob Zuege stehengeblieben sind. Bearbeitung geschieht ueber SlotPruefeAufStehendeLoks.

Definiert in Zeile 228 der Datei cIntelligenz.h.

Speichert fuer jeden fahrenden Zug, wie haeufig der Zug die Position nicht veraendert hat. Bearbeitung geschieht ueber SlotPruefeAufStehendeLoks.

Definiert in Zeile 230 der Datei cIntelligenz.h.

Zeiger auf das Hauptfenster;.

Definiert in Zeile 218 der Datei cIntelligenz.h.

zur Ausgabe (lediglich Info): maximale Anzahl der gleichzeitig fahrenden Zuege

Definiert in Zeile 254 der Datei cIntelligenz.h.

int cIntelligenz::measure1 [private]

Konnektorennummern der 4 Reedkontakte der Messstrecke. Messpunkt, bei dem Zeitmessung bei Vorwaertsfahrt beginnt.

Definiert in Zeile 288 der Datei cIntelligenz.h.

int cIntelligenz::measure2 [private]

Konnektorennummern der 4 Reedkontakte der Messstrecke. Messpunkt, bei dem Zeitmessung bei Vorwaertsfahrt endet.

Definiert in Zeile 290 der Datei cIntelligenz.h.

Variablen zur automatischen Geschwindigkeitsmessung.

Definiert in Zeile 260 der Datei cIntelligenz.h.

Aktuelle Regler-Geschwindigkeit, mit die Messstrecke durchfahren wird. Variable fuer den Messvorgang.

Definiert in Zeile 268 der Datei cIntelligenz.h.

double cIntelligenz::measureLaenge [private]

Laenge der Messstrecke. Konstante, die aus Konfig-Datei geladen werden (measure/laenge).

Definiert in Zeile 262 der Datei cIntelligenz.h.

bisherige Maximalgeschwindigkeit in Richtung 0

Definiert in Zeile 274 der Datei cIntelligenz.h.

bisherige Maximalgeschwindigkeit in Richtung 1

Definiert in Zeile 276 der Datei cIntelligenz.h.

Maximale Geschwindigkeit beim Vorwaertsfahren auf der Messstrecke in kmh. Konstante, die aus Konfig-Datei geladen werden (measure/maxGeschwindigkeit).

Definiert in Zeile 266 der Datei cIntelligenz.h.

Maximale Geschwindigkeit beim Rueckwaertsfahren auf der Messstrecke in kmh. Konstante, die aus Konfig-Datei geladen werden (measure/maxRueckwaertsVorsichtig).

Definiert in Zeile 264 der Datei cIntelligenz.h.

Zulaessige Hoechstgeschwindigkeit bei Rueckwaertsfahrt. Variable fuer den Messvorgang.

Definiert in Zeile 280 der Datei cIntelligenz.h.

reglerstufe, bei der die zulaessige hoechstgeschwindigkeit bei rueckwaertsfahrt ueberschritten wurde. Variable fuer den Messvorgang.

Definiert in Zeile 278 der Datei cIntelligenz.h.

Regler, der misst. Variable fuer den Messvorgang.

Definiert in Zeile 282 der Datei cIntelligenz.h.

Aktuelle Regler-Richtung, mit die Messstrecke durchfahren wird. Variable fuer den Messvorgang.

Definiert in Zeile 270 der Datei cIntelligenz.h.

Konnektorennummern der 4 Reedkontakte der Messstrecke. Start-Messpunkt.

Definiert in Zeile 286 der Datei cIntelligenz.h.

Konnektorennummern der 4 Reedkontakte der Messstrecke. Stop-Messpunkt.

Definiert in Zeile 292 der Datei cIntelligenz.h.

Anzahl der bislang gemessenen Werte. Variable fuer den Messvorgang.

Definiert in Zeile 272 der Datei cIntelligenz.h.

int cIntelligenz::measureZug [private]

Zug, der vermessen wird. Variable fuer den Messvorgang.

Definiert in Zeile 284 der Datei cIntelligenz.h.

gibt an, ob das Programm laeuft, d.h. alle Sektionen, ... sind im Speicher

Definiert in Zeile 296 der Datei cIntelligenz.h.

Verwaltung der Regler.

Definiert in Zeile 222 der Datei cIntelligenz.h.

Zeiger auf Strecken.

Definiert in Zeile 240 der Datei cIntelligenz.h.

gibt an, welche Sektion beim staendigen Speichern als letztes dran war

Definiert in Zeile 294 der Datei cIntelligenz.h.

Zeiger auf Signale.

Definiert in Zeile 242 der Datei cIntelligenz.h.

Zeiger auf Regeln, die den Signalen zugeordnet sind (wann wird welche Farbe angezeigt)

Definiert in Zeile 244 der Datei cIntelligenz.h.

Faktor mit dem Geschwindigkeiten zum Beginn multipliziert werden, wenn Loks waermer werden.

Definiert in Zeile 216 der Datei cIntelligenz.h.

Wird benutzt von changeSpeedMultiplier().

QTimer* cIntelligenz::timer [private]

Timer, der pruefeAufStehendeLoks aufruft.

Definiert in Zeile 256 der Datei cIntelligenz.h.

Verwaltung der Zuege.

Definiert in Zeile 224 der Datei cIntelligenz.h.

Wird benutzt von getTrain().


Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Datei: