qrailway 0.9
|
Verwaltung aller Zuege/Sektionen/Konnektoren. Kontrolliert (Re-)Aktionen. Mehr ...
#include <cIntelligenz.h>
Ö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. | |
cKonnektor * | getKonnektor (int welche, bool warnung=TRUE) |
Liefert einen Zeiger auf den Konnektor mit der conid welche zurueck. Existiert dieser nicht wird NULL zurueckgeliefert. | |
cSektion * | getSektion (int welche) |
Liefert einen Zeiger auf die Sektion mit der secid welche zurueck. Existiert diese nicht wird NULL zurueckgeliefert. | |
cTrain * | getTrain (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. | |
cHardware * | getHardware (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. | |
cBahnhof * | getBahnhof (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. | |
cMainWindow * | MainWindow |
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. | |
cBahnhof * | Bahnhof [maxBahnhof] |
Verwaltung der Bahnhoefe. | |
cHardware * | Hardware |
Zeiger auf die cHardware Klasse. | |
cKonnektor * | Konnektor [maxKonnektoren] |
Zeiger auf Konnektoren. | |
cDescription * | Description [maxDescriptions] |
Zeiger auf Textelemente auf dem Gleisplan. | |
cSektion * | Sektion [maxSektionen] |
Zeiger auf Strecken. | |
cSignal * | Signal [maxSignale] |
Zeiger auf Signale. | |
cSignalRule * | SignalRegel [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 |
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.
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.
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.
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:
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.
int cIntelligenz::anzahlKonnektoren [private] |
maximale ID der im Gleisplan genutzten Konnektoren
Definiert in Zeile 250 der Datei cIntelligenz.h.
int cIntelligenz::anzahlSektionen [private] |
maximale ID der im Gleisplan genutzten Sektionen
Definiert in Zeile 252 der Datei cIntelligenz.h.
int cIntelligenz::automatischeSteuerungQueue[maxTrain] [private] |
Liste der Zuege, fuer die automatischeSteuerung aufzurufen ist (Liste wird durch executeAutomatischeSteuerung und insertAutomatischeSteuerung verwaltet)
Definiert in Zeile 226 der Datei cIntelligenz.h.
cBahnhof* cIntelligenz::Bahnhof[maxBahnhof] [private] |
Verwaltung der Bahnhoefe.
Definiert in Zeile 232 der Datei cIntelligenz.h.
QGraphicsScene* cIntelligenz::canvas [private] |
Gleisplan.
Definiert in Zeile 258 der Datei cIntelligenz.h.
bool cIntelligenz::controlsDisabled [private] |
Steht hier true, so werden keine Befehle akzeptiert und auch der Schaltplan nur im Rohbau praesentiert.
Definiert in Zeile 220 der Datei cIntelligenz.h.
cDescription* cIntelligenz::Description[maxDescriptions] [private] |
Zeiger auf Textelemente auf dem Gleisplan.
Definiert in Zeile 238 der Datei cIntelligenz.h.
bool cIntelligenz::existiertKonnektor[maxKonnektoren] [private] |
Array, welches angibt, ob ein bestimmter Konnektor existiert.
Definiert in Zeile 246 der Datei cIntelligenz.h.
bool cIntelligenz::existiertSektion[maxSektionen] [private] |
Array, welches angibt, ob eine bestimmte Sektion existiert.
Definiert in Zeile 248 der Datei cIntelligenz.h.
cHardware* cIntelligenz::Hardware [private] |
Zeiger auf die cHardware Klasse.
Definiert in Zeile 234 der Datei cIntelligenz.h.
Wird benutzt von getHardware().
cKonnektor* cIntelligenz::Konnektor[maxKonnektoren] [private] |
Zeiger auf Konnektoren.
Definiert in Zeile 236 der Datei cIntelligenz.h.
int cIntelligenz::lastreed[maxTrain] [private] |
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.
int cIntelligenz::lastreedwarten[maxTrain] [private] |
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.
cMainWindow* cIntelligenz::MainWindow [private] |
Zeiger auf das Hauptfenster;.
Definiert in Zeile 218 der Datei cIntelligenz.h.
int cIntelligenz::maxfahrendezuege [private] |
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.
bool cIntelligenz::measureAktiv [private] |
Variablen zur automatischen Geschwindigkeitsmessung.
Definiert in Zeile 260 der Datei cIntelligenz.h.
int cIntelligenz::measureGeschwindigkeit [private] |
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.
int cIntelligenz::measureMax0 [private] |
bisherige Maximalgeschwindigkeit in Richtung 0
Definiert in Zeile 274 der Datei cIntelligenz.h.
int cIntelligenz::measureMax1 [private] |
bisherige Maximalgeschwindigkeit in Richtung 1
Definiert in Zeile 276 der Datei cIntelligenz.h.
int cIntelligenz::measureMaxGeschwindigkeit [private] |
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.
int cIntelligenz::measureMaxRueckwaertsVorsichtig [private] |
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.
int cIntelligenz::measureMaxZurueck [private] |
Zulaessige Hoechstgeschwindigkeit bei Rueckwaertsfahrt. Variable fuer den Messvorgang.
Definiert in Zeile 280 der Datei cIntelligenz.h.
int cIntelligenz::measureMaxZurueckErreicht [private] |
reglerstufe, bei der die zulaessige hoechstgeschwindigkeit bei rueckwaertsfahrt ueberschritten wurde. Variable fuer den Messvorgang.
Definiert in Zeile 278 der Datei cIntelligenz.h.
int cIntelligenz::measureRegler [private] |
Regler, der misst. Variable fuer den Messvorgang.
Definiert in Zeile 282 der Datei cIntelligenz.h.
int cIntelligenz::measureRichtung [private] |
Aktuelle Regler-Richtung, mit die Messstrecke durchfahren wird. Variable fuer den Messvorgang.
Definiert in Zeile 270 der Datei cIntelligenz.h.
int cIntelligenz::measureStart [private] |
Konnektorennummern der 4 Reedkontakte der Messstrecke. Start-Messpunkt.
Definiert in Zeile 286 der Datei cIntelligenz.h.
int cIntelligenz::measureStop [private] |
Konnektorennummern der 4 Reedkontakte der Messstrecke. Stop-Messpunkt.
Definiert in Zeile 292 der Datei cIntelligenz.h.
int cIntelligenz::measureWert [private] |
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.
bool cIntelligenz::ProgrammLaeuft [private] |
gibt an, ob das Programm laeuft, d.h. alle Sektionen, ... sind im Speicher
Definiert in Zeile 296 der Datei cIntelligenz.h.
cRegler cIntelligenz::Regler[maxRegler] [private] |
Verwaltung der Regler.
Definiert in Zeile 222 der Datei cIntelligenz.h.
cSektion* cIntelligenz::Sektion[maxSektionen] [private] |
Zeiger auf Strecken.
Definiert in Zeile 240 der Datei cIntelligenz.h.
int cIntelligenz::sektionSpeichernZaehler [private] |
gibt an, welche Sektion beim staendigen Speichern als letztes dran war
Definiert in Zeile 294 der Datei cIntelligenz.h.
cSignal* cIntelligenz::Signal[maxSignale] [private] |
Zeiger auf Signale.
Definiert in Zeile 242 der Datei cIntelligenz.h.
cSignalRule* cIntelligenz::SignalRegel[maxSignalRegeln] [private] |
Zeiger auf Regeln, die den Signalen zugeordnet sind (wann wird welche Farbe angezeigt)
Definiert in Zeile 244 der Datei cIntelligenz.h.
double cIntelligenz::speedmultiplier [private] |
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.
cTrain cIntelligenz::Train[maxTrain] [private] |