qrailway 0.9
|
Serielle Kommunikation. Mehr ...
#include <cSeriell.h>
Öffentliche Methoden | |
cSeriell (QObject *nachrichtenzieltmp) | |
Initialisiert die serielle Kommunikation und bereitet die Kommandoschleife vor. nachrichtenzieltmp gibt einen Zeiger auf das QObject an, welches Rueckmeldungen erhalten soll. | |
~cSeriell (void) | |
Beendet die serielle Kommunikation, beendet notfalls die noch laufende Kommandoschleife. | |
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. Die zugeordnete Log-Datei ist log.cSeriell. | |
void | run (void) |
Die Kommandoschleife (einen eigenen Thread) | |
void | initialisiereSeriellenPort (void) |
Initialisiert den seriellen Port. | |
int | sendeBefehl (char *befehl, int prioritaet=1) |
Traegt den Befehl, auf den der Zeiger befehl zeigt, in die Kommandoschleife ein. Prioritaet kann entweder 1 oder 3 sein. Befehle mit Prioritaet 3 werden trotz gesetztem notaus-Flag gesendet (dient insbesondere dazu, trotz gesetztem notaus-Flag den Notaus-Befehl an die Reglerkarten senden zu koennen. | |
int | sendeDauerBefehl (char *befehl, int wieoft=1) |
Traegt einen permanenten Befehl, auf den der Zeiger befehl zeigt, in die Kommandoschleife ein. (status 2) | |
void | getAntwort (int karte, int nummer, char *antwort) |
Liefert die Antwort des Befehls mit der ID nummer zurueck und loescht Ihn aus der Kommandoschleife. | |
void | setNotaus (bool notausantmp) |
Setzt das notaus flag, welches die Steuerung der Karten betrifft: Falls notausan=TRUE, so werden keine fahrreglerbefehle abgeschickt bis notausan=FALSE gesetzt wird. | |
Private Attribute | |
bool | notausan |
Falls notausan=TRUE, so werden keine fahrreglerbefehle abgeschickt bis notausan=FALSE gesetzt wird. | |
FILE * | serialport |
Zeiger fuer die Initialisierung des seriellen Ports. | |
struct termios | serialconfig |
Zeiger fuer die Initialisierung des seriellen Ports. | |
cAuftragdef | auftrag [128][absmaxauftraege] |
Die Kommandoschleife. Kartenspezifisch. Jede Karte hat Ihre eigene Auftragsschleife. | |
int | momentanerauftrag [128] |
Aktuelle Kommandonummer je Karte. | |
int | genutztebefehle [128] |
Anzahl der genutzten Befehle je Karte. | |
int | momentanekarte |
aktuelle Karte im Durchlauf | |
bool | raushier |
Ist raushier=TRUE, so wird die Kommandoschleife unterbrochen (fuer Destruktor). | |
QObject * | nachrichtenziel |
Speichert das Ziel fuer ausgehende Empfangsmeldungen. | |
unsigned long int | anzahlfehlera [128] |
Nachrichten und Fehler zaehlen: | |
unsigned long int | anzahlfehlerb [128] |
unsigned long int | anzahlfehlerc [128] |
unsigned long int | anzahlnachrichten [128] |
int | befehlsoffset |
Legt fest, wieviel spaeter Befehle in die Schleife geschrieben werden. | |
int | maxauftraege |
Gibt an, wieviele Befehle die Befehlsschleife umfassen soll. | |
int | maxseriellefehler |
Legt fest, wie oft ein Befehl versucht wird zu schreiben. | |
int | baudrate |
Legt baudrate fest. | |
int | timetowrite |
Legt Zeit fuer Schreiben/Lesen fest. | |
int | timetoread |
int | timetowait |
int | hardwareaktiv |
Legt fest, ob die Hardwareschnittstelle aktiv ist (1) oder nicht (0) | |
int | statusmeldung1 [128] |
Speichert, welche Karten beim letzten Durchlauf ueberprueft wurden. | |
int | statusmeldung2 [128] |
Speichert, welche Karten beim letzten Durchlauf ueberprueft wurden. |
Serielle Kommunikation.
Ist zustaendig fuer saemtliche Kommunikation mit der Hardware (wird von cHardware verwendet). Je Karte existiert eine Schleife, in der die Befehle für diese Karte stehen. Nacheinander werden die jeweiligen Schleifen durchgegangen, damit nicht an eine Karte zu viele Befehle direkt hintereinander erfolgen, so dass die Karte diese Befehle nicht mehr verarbeiten könnte.
Definiert in Zeile 64 der Datei cSeriell.h.
cSeriell::cSeriell | ( | QObject * | nachrichtenzieltmp | ) |
Initialisiert die serielle Kommunikation und bereitet die Kommandoschleife vor. nachrichtenzieltmp gibt einen Zeiger auf das QObject an, welches Rueckmeldungen erhalten soll.
cSeriell::~cSeriell | ( | void | ) |
Beendet die serielle Kommunikation, beendet notfalls die noch laufende Kommandoschleife.
void cSeriell::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. Die zugeordnete Log-Datei ist log.cSeriell.
void cSeriell::getAntwort | ( | int | karte, |
int | nummer, | ||
char * | antwort | ||
) |
Liefert die Antwort des Befehls mit der ID nummer zurueck und loescht Ihn aus der Kommandoschleife.
void cSeriell::initialisiereSeriellenPort | ( | void | ) |
Initialisiert den seriellen Port.
void cSeriell::run | ( | void | ) |
Die Kommandoschleife (einen eigenen Thread)
int cSeriell::sendeBefehl | ( | char * | befehl, |
int | prioritaet = 1 |
||
) |
Traegt den Befehl, auf den der Zeiger befehl zeigt, in die Kommandoschleife ein. Prioritaet kann entweder 1 oder 3 sein. Befehle mit Prioritaet 3 werden trotz gesetztem notaus-Flag gesendet (dient insbesondere dazu, trotz gesetztem notaus-Flag den Notaus-Befehl an die Reglerkarten senden zu koennen.
int cSeriell::sendeDauerBefehl | ( | char * | befehl, |
int | wieoft = 1 |
||
) |
Traegt einen permanenten Befehl, auf den der Zeiger befehl zeigt, in die Kommandoschleife ein. (status 2)
void cSeriell::setNotaus | ( | bool | notausantmp | ) | [inline] |
Setzt das notaus flag, welches die Steuerung der Karten betrifft: Falls notausan=TRUE, so werden keine fahrreglerbefehle abgeschickt bis notausan=FALSE gesetzt wird.
Definiert in Zeile 85 der Datei cSeriell.h.
Benutzt notausan.
{ notausan=notausantmp; };
unsigned long int cSeriell::anzahlfehlera[128] [private] |
Nachrichten und Fehler zaehlen:
Definiert in Zeile 106 der Datei cSeriell.h.
unsigned long int cSeriell::anzahlfehlerb[128] [private] |
Definiert in Zeile 106 der Datei cSeriell.h.
unsigned long int cSeriell::anzahlfehlerc[128] [private] |
Definiert in Zeile 106 der Datei cSeriell.h.
unsigned long int cSeriell::anzahlnachrichten[128] [private] |
Definiert in Zeile 106 der Datei cSeriell.h.
cAuftragdef cSeriell::auftrag[128][absmaxauftraege] [private] |
Die Kommandoschleife. Kartenspezifisch. Jede Karte hat Ihre eigene Auftragsschleife.
Definiert in Zeile 94 der Datei cSeriell.h.
int cSeriell::baudrate [private] |
Legt baudrate fest.
Definiert in Zeile 114 der Datei cSeriell.h.
int cSeriell::befehlsoffset [private] |
Legt fest, wieviel spaeter Befehle in die Schleife geschrieben werden.
Definiert in Zeile 108 der Datei cSeriell.h.
int cSeriell::genutztebefehle[128] [private] |
Anzahl der genutzten Befehle je Karte.
Definiert in Zeile 98 der Datei cSeriell.h.
int cSeriell::hardwareaktiv [private] |
Legt fest, ob die Hardwareschnittstelle aktiv ist (1) oder nicht (0)
Definiert in Zeile 118 der Datei cSeriell.h.
int cSeriell::maxauftraege [private] |
Gibt an, wieviele Befehle die Befehlsschleife umfassen soll.
Definiert in Zeile 110 der Datei cSeriell.h.
int cSeriell::maxseriellefehler [private] |
Legt fest, wie oft ein Befehl versucht wird zu schreiben.
Definiert in Zeile 112 der Datei cSeriell.h.
int cSeriell::momentanekarte [private] |
aktuelle Karte im Durchlauf
Definiert in Zeile 100 der Datei cSeriell.h.
int cSeriell::momentanerauftrag[128] [private] |
Aktuelle Kommandonummer je Karte.
Definiert in Zeile 96 der Datei cSeriell.h.
QObject* cSeriell::nachrichtenziel [private] |
Speichert das Ziel fuer ausgehende Empfangsmeldungen.
Definiert in Zeile 104 der Datei cSeriell.h.
bool cSeriell::notausan [private] |
Falls notausan=TRUE, so werden keine fahrreglerbefehle abgeschickt bis notausan=FALSE gesetzt wird.
Definiert in Zeile 85 der Datei cSeriell.h.
Wird benutzt von setNotaus().
bool cSeriell::raushier [private] |
Ist raushier=TRUE, so wird die Kommandoschleife unterbrochen (fuer Destruktor).
Definiert in Zeile 102 der Datei cSeriell.h.
struct termios cSeriell::serialconfig [private] |
Zeiger fuer die Initialisierung des seriellen Ports.
Definiert in Zeile 92 der Datei cSeriell.h.
FILE* cSeriell::serialport [private] |
Zeiger fuer die Initialisierung des seriellen Ports.
Definiert in Zeile 90 der Datei cSeriell.h.
int cSeriell::statusmeldung1[128] [private] |
Speichert, welche Karten beim letzten Durchlauf ueberprueft wurden.
Definiert in Zeile 120 der Datei cSeriell.h.
int cSeriell::statusmeldung2[128] [private] |
Speichert, welche Karten beim letzten Durchlauf ueberprueft wurden.
Definiert in Zeile 122 der Datei cSeriell.h.
int cSeriell::timetoread [private] |
Definiert in Zeile 116 der Datei cSeriell.h.
int cSeriell::timetowait [private] |
Definiert in Zeile 116 der Datei cSeriell.h.
int cSeriell::timetowrite [private] |
Legt Zeit fuer Schreiben/Lesen fest.
Definiert in Zeile 116 der Datei cSeriell.h.