qrailway 0.9
|
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