qrailway 0.9

cHardware.h

gehe zur Dokumentation dieser Datei
00001 #ifndef CHARDWARE_H
00002 #define CHARDWARE_H
00003 
00004 #include "cConstants.h"
00005 #include <iostream>
00006 #include "cSektion.h"
00007 #include "cKonnektor.h"
00008 #include "cSignal.h"
00009 #include <qthread.h>
00010 #include <qdatetime.h>
00011 #include <qfile.h>
00012 #include <qtextstream.h>
00013 #include <QEvent>
00014 #include <QSettings>
00015 #include <time.h>
00016 #include "cSeriell.h"
00017 
00018 class cIntelligenz;
00019 
00021 
00022 class cKartenStatus {
00023  public:
00025         cKartenStatus(void) {
00026                 kartentyp=0;
00027                 for (int i=0;i<4;i++) {
00028                     status1[i]=0;
00029                     status2[i]=127;
00030                 }
00031                 for (int i=0;i<10;i++) weiche[i]=0;
00032                 for (int i=0;i<24;i++) regler[i]=0;
00033                 for (int i=0;i<6;i++) fahrregler[i]=0;
00034                 for (int i=0;i<12;i++) {
00035                   signalstatus[i]=0;
00036                   signalstatusalt[i]=0; //+64; // daher in jedem Fall neues Setzen erforderlich (alt<>neu)
00037                   blinkstatus[i]=63;
00038                   blinkstatusalt[i]=63; //+64; // daher in jedem Fall neues Setzen erforderlich (alt<>neu)
00039                 }
00040         }
00042         char kartentyp;
00044         char status1[4];
00046         char status2[4];
00048         int weiche[10];
00050         int regler[24];
00052         int fahrregler[6];
00054         char signalstatus[12];
00056         char signalstatusalt[12];
00058         char blinkstatus[12];
00060         char blinkstatusalt[12];
00061 };
00062 
00064 
00065 class cHardware : public QObject
00066 {
00067  Q_OBJECT
00068 
00069 public:
00071  void cDebug(int prioritaet,const QString & meldung);
00073   cHardware(cIntelligenz * Intelligenztmp);
00075   ~cHardware(void);
00077   void registerKonnektor(cKonnektor *konnektor);
00079   void registerSignal(cSignal *signal);
00081   void setWeiche(int nrKon,const QString & richtung);
00083   void setRegler(int regler,int Geschwindigkeit,int Richtung,int Beschleunigung,int Mindestgeschwindigkeit,bool Notaus);
00085   int getHardwareSignal(int adresse,int signal);
00087   void setzeSignal(int adresse,int signal,bool an,bool blink);
00089   void starteSerielleKommunikation(void);
00091   int sendeBefehl(char* befehl);
00093   int sendeDauerBefehlStatusmeldung(int Adresse,int Statusmeldung,int wieoft=1,int licht=0);
00095   int sendeBefehlWeicheStellen(int Adresse,int Weiche,const QString & Richtung);
00097   int sendeBefehlFahrregler(int Adresse,int Regler,int Geschwindigkeit,int Richtung,int Beschleunigung,int Mindestgeschwindigkeit,bool Notaus);
00099   int sendeBefehlTrigger(int Adresse,int Trigger,bool Aktiv,int Regler,int Geschwindigkeit,int Richtung,int Beschleunigung);
00101   int sendeBefehlModifyTrigger(int Adresse,int Trigger,bool Aktiv,int Regler,int Geschwindigkeit,int Richtung,int Beschleunigung);
00103   int sendeBefehlStatusmeldung(int Adresse,int Statusmeldung);
00105     void sendeBefehlAlleReglerNotaus(bool aus);
00107   int verarbeiteAntwort(char* antwort,QDateTime zeit);
00109   void setTrigger(int nrKon,bool Aktiv,int Regler,int Geschwindigkeit,int Richtung,int Beschleunigung,int geschwindigkeitkmh);
00111   void modifyTrigger(int nrKon,bool Aktiv,int Regler,int Geschwindigkeit,int Richtung,int Beschleunigung,int geschwindigkeitkmh);
00113   void registerRegler(void);
00115   void customEvent( QEvent * e );
00116 private:
00118   cSeriell *Seriell;
00120   cKartenStatus KartenStatus[128];
00122   cIntelligenz * Intelligenz;
00123   public slots:
00125 void SlotsendeBefehlSignal(void);
00126 signals:
00128   void SignalWeicheGeaendert(int);
00130   void SignalReedkontaktGeaendert(int,int);
00132   void HardwareSignal(char,char,char,char,char,char);
00134   void SignalReglerStatusGeaendert(int,int,int);
00135 };
00136 
00137 #include "cIntelligenz.h"
00138 
00139 #endif // CHARDWARE_H