Poprawka dla MWD aby kompilował się na VS

This commit is contained in:
firleju
2017-01-18 06:10:08 +01:00
parent 6440d64b2c
commit 51fff210e1
8 changed files with 4664 additions and 4069 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1,111 +1,107 @@
/*
This Source Code Form is subject to the
terms of the Mozilla Public License, v.
2.0. If a copy of the MPL was not
distributed with this file, You can
obtain one at
http://mozilla.org/MPL/2.0/.
*/
/*
Program obsługi portu COM i innych na potrzeby sterownika MWDevice
(oraz innych wykorzystujących komunikację przez port COM)
dla Symulatora Pojazdów Szynowych MaSzyna
author: Maciej Witek 2016
Autor nie ponosi odpowiedzialności za niewłaciwe używanie lub działanie programu!
*/
#ifndef MWDH
#define MWDH
//---------------------------------------------------------------------------
typedef unsigned char BYTE;
typedef unsigned long DWORD;
class MWDComm
{
private:
int MWDTime; //
char lastStateData[6], maskData[6],maskSwitch[6], bitSwitch[6];
int bocznik, nastawnik, kierunek;
char bnkMask;
bool ReadData(); //BYTE *pReadDataBuff);
bool SendData(); //BYTE *pWriteDataBuff);
bool CheckData(); //sprawdzanie zmian wejść i kontrola mazaków HASLERA
void KeyBoard(int key, bool s);
bool bRysik1H;
bool bRysik1L;
bool bRysik2H;
bool bRysik2L;
public:
bool Open(); // Otwarcie portu
bool Close(); // Zamknięcie portu
bool Run(); // Obsługa portu
bool GetMWDState(); // sprawdź czy port jest otwarty, 0 zamknięty, 1 otwarty
// zmienne do rysików HASLERA
bool bSHPstate;
bool bPrzejazdSHP;
bool bKabina1;
bool bKabina2;
bool bHamowanie;
bool bCzuwak;
float fAnalog[4]; // trzymanie danych z wejść analogowych
BYTE ReadDataBuff[17]; // bufory danych
BYTE WriteDataBuff[31];
MWDComm(); //konstruktor
~MWDComm(); //destruktor
};
#endif
/*
INFO - zmiany dokonane w innych plikach niezbędne do prawidłowego działania:
Console.cpp:
Console::AnalogCalibrateGet - obsługa kranów hamulców
Console::Update - wywoływanie obsługi MWD
Console::ValueSet - obsługa manometrów, mierników WN (PWM-y)
Console::BitsUpdate - ustawiania lampek
Console::Off - zamykanie portu COM
Console::On - otwieranie portu COM
Console::~Console - usuwanie MWD (jest też w Console OFF)
MWDComm * Console::MWD = NULL; - luzem, obiekt i wskaźnik(?)
dodatkowo zmieniłem int na long int dla BitSet i BitClear oraz iBits
Train.cpp:
if (Global::iFeedbackMode == 5) - pobieranie prędkości, manometrów i mierników WN
if (ggBrakeCtrl.SubModel) - możliwość sterowania hamulcem zespolonym
if (ggLocalBrake.SubModel) - możliwość sterowania hamulcem lokomotywy
Globals.h:
dodano zmienne dla MWD
Globals.cpp:
dodano inicjalizaję zmiennych i odczyt z ini ustawień
Wpisy do pliku eu07.ini
//maciek001 MWD
comportname COM3 // wybór portu COM
mwdbaudrate 500000
mwdbreakenable yes // czy załączyć sterowanie hamulcami? blokuje klawiature
mwdbreak 1 255 0 255 // hamulec zespolony
mwdbreak 2 255 0 255 // hamulec lokomotywy
mwdzbiornikglowny 0.82 255
mwdprzewodglowny 0.7 255
mwdcylinderhamulcowy 0.43 255
mwdwoltomierzwn 4000 255
mwdamperomierzwn 800 255
*/
/*
This Source Code Form is subject to the
terms of the Mozilla Public License, v.
2.0. If a copy of the MPL was not
distributed with this file, You can
obtain one at
http://mozilla.org/MPL/2.0/.
*/
/*
Program obsługi portu COM i innych na potrzeby sterownika MWDevice
(oraz innych wykorzystujących komunikację przez port COM)
dla Symulatora Pojazdów Szynowych MaSzyna
author: Maciej Witek 2016
Autor nie ponosi odpowiedzialności za niewłaciwe używanie lub działanie programu!
*/
#ifndef MWDH
#define MWDH
//---------------------------------------------------------------------------
typedef unsigned char BYTE;
typedef unsigned long DWORD;
class MWDComm
{
private:
int MWDTime; //
char lastStateData[6], maskData[6], maskSwitch[6], bitSwitch[6];
int bocznik, nastawnik, kierunek;
char bnkMask;
bool ReadData(); // BYTE *pReadDataBuff);
bool SendData(); // BYTE *pWriteDataBuff);
void CheckData(); // sprawdzanie zmian wejść i kontrola mazaków HASLERA
void KeyBoard(int key, bool s);
bool bRysik1H;
bool bRysik1L;
bool bRysik2H;
bool bRysik2L;
public:
bool Open(); // Otwarcie portu
bool Close(); // Zamknięcie portu
bool Run(); // Obsługa portu
bool GetMWDState(); // sprawdź czy port jest otwarty, 0 zamknięty, 1 otwarty
// zmienne do rysików HASLERA
bool bSHPstate;
bool bPrzejazdSHP;
bool bKabina1;
bool bKabina2;
bool bHamowanie;
bool bCzuwak;
float fAnalog[4]; // trzymanie danych z wejść analogowych
BYTE ReadDataBuff[17]; // bufory danych
BYTE WriteDataBuff[31];
MWDComm(); // konstruktor
~MWDComm(); // destruktor
};
#endif
/*
INFO - zmiany dokonane w innych plikach niezbędne do prawidłowego działania:
Console.cpp:
Console::AnalogCalibrateGet - obsługa kranów hamulców
Console::Update - wywoływanie obsługi MWD
Console::ValueSet - obsługa manometrów, mierników WN (PWM-y)
Console::BitsUpdate - ustawiania lampek
Console::Off - zamykanie portu COM
Console::On - otwieranie portu COM
Console::~Console - usuwanie MWD (jest też w Console OFF)
MWDComm * Console::MWD = NULL; - luzem, obiekt i wskaźnik(?)
dodatkowo zmieniłem int na long int dla BitSet i BitClear oraz iBits
Train.cpp:
if (Global::iFeedbackMode == 5) - pobieranie prędkości, manometrów i mierników WN
if (ggBrakeCtrl.SubModel) - możliwość sterowania hamulcem zespolonym
if (ggLocalBrake.SubModel) - możliwość sterowania hamulcem lokomotywy
Globals.h:
dodano zmienne dla MWD
Globals.cpp:
dodano inicjalizaję zmiennych i odczyt z ini ustawień
Wpisy do pliku eu07.ini
//maciek001 MWD
comportname COM3 // wybór portu COM
mwdbaudrate 500000
mwdbreakenable yes // czy załączyć sterowanie hamulcami? blokuje klawiature
mwdbreak 1 255 0 255 // hamulec zespolony
mwdbreak 2 255 0 255 // hamulec lokomotywy
mwdzbiornikglowny 0.82 255
mwdprzewodglowny 0.7 255
mwdcylinderhamulcowy 0.43 255
mwdwoltomierzwn 4000 255
mwdamperomierzwn 800 255
*/

File diff suppressed because it is too large Load Diff

View File

@@ -10,10 +10,10 @@ http://mozilla.org/MPL/2.0/.
#pragma once
//#include <fstream>
#include <string>
#include "Classes.h"
#include "dumb3d.h"
#include "mczapkie/mover.h"
#include <string>
using namespace Math3D;
using namespace Mtable;
@@ -52,10 +52,12 @@ enum TMovementStatus
moveGuardSignal = 0x8000, // sygnał od kierownika (minął czas postoju)
moveVisibility = 0x10000, // jazda na widoczność po przejechaniu S1 na SBL
moveDoorOpened = 0x20000, // drzwi zostały otwarte - doliczyć czas na zamknięcie
movePushPull = 0x40000, // zmiana czoła przez zmianę kabiny - nie odczepiać przy zmianie kierunku
movePushPull =
0x40000, // zmiana czoła przez zmianę kabiny - nie odczepiać przy zmianie kierunku
moveSemaphorFound = 0x80000, // na drodze skanowania został znaleziony semafor
moveSemaphorWasElapsed = 0x100000, // minięty został semafor
moveTrainInsideStation = 0x200000, // pociąg między semaforem a rozjazdami lub następnym semaforem
moveTrainInsideStation =
0x200000, // pociąg między semaforem a rozjazdami lub następnym semaforem
moveSpeedLimitFound = 0x400000 // pociąg w ograniczeniu z podaną jego długością
};
@@ -126,9 +128,9 @@ class TSpeedPos
public:
double fDist; // aktualna odległość (ujemna gdy minięte)
double fVelNext; // prędkość obowiązująca od tego miejsca
double fSectionVelocityDist; //długość ograniczenia prędkości
double fSectionVelocityDist; // długość ograniczenia prędkości
// double fAcc;
int iFlags; //flagi typu wpisu do tabelki
int iFlags; // flagi typu wpisu do tabelki
// 1=istotny,2=tor,4=odwrotnie,8-zwrotnica (może się zmienić),16-stan
// zwrotnicy,32-minięty,64=koniec,128=łuk
// 0x100=event,0x200=manewrowa,0x400=przystanek,0x800=SBL,0x1000=wysłana komenda,0x2000=W5
@@ -147,8 +149,8 @@ class TSpeedPos
bool Set(TEvent *e, double d, TOrders order = Wait_for_orders);
void Set(TTrack *t, double d, int f);
std::string TableText();
std::string GetName();
bool IsProperSemaphor(TOrders order = Wait_for_orders);
std::string GetName();
bool IsProperSemaphor(TOrders order = Wait_for_orders);
};
//----------------------------------------------------------------------------
@@ -172,8 +174,8 @@ class TController
double fLastVel; // prędkość na poprzednio sprawdzonym torze
TTrack *tLast; // ostatni analizowany tor
TEvent *eSignSkip; // można pominąć ten SBL po zatrzymaniu
TSpeedPos *sSemNext; // następny semafor na drodze zależny od trybu jazdy
TSpeedPos *sSemNextStop; // następny semafor na drodze zależny od trybu jazdy i na stój
TSpeedPos *sSemNext; // następny semafor na drodze zależny od trybu jazdy
TSpeedPos *sSemNextStop; // następny semafor na drodze zależny od trybu jazdy i na stój
private: // parametry aktualnego składu
double fLength; // długość składu (do wyciągania z ograniczeń)
double fMass; // całkowita masa do liczenia stycznej składowej grawitacji
@@ -219,8 +221,8 @@ class TController
// migacz lub czeka na stan zwrotnicy
private:
TDynamicObject *pVehicle; // pojazd w którym siedzi sterujący
TDynamicObject *
pVehicles[2]; // skrajne pojazdy w składzie (niekoniecznie bezpośrednio sterowane)
TDynamicObject
*pVehicles[2]; // skrajne pojazdy w składzie (niekoniecznie bezpośrednio sterowane)
TMoverParameters *mvControlling; // jakim pojazdem steruje (może silnikowym w EZT)
TMoverParameters *mvOccupied; // jakim pojazdem hamuje
TTrainParameters *TrainParams; // rozkład jazdy zawsze jest, nawet jeśli pusty
@@ -244,16 +246,16 @@ class TController
double VelLimit; // predkość zadawana przez event jednokierunkowego ograniczenia prędkości
public:
double VelSignalLast; // prędkość zadana na ostatnim semaforze
double VelSignalNext; // prędkość zadana na następnym semaforze
double VelSignalNext; // prędkość zadana na następnym semaforze
double VelLimitLast; // prędkość zadana przez ograniczenie
double VelRoad; // aktualna prędkość drogowa (ze znaku W27)
// (PutValues albo komendą)
public:
double VelNext; // prędkość, jaka ma być po przejechaniu długości ProximityDist
private:
double fProximityDist; //odleglosc podawana w SetProximityVelocity(); >0:przeliczać do
double fProximityDist; // odleglosc podawana w SetProximityVelocity(); >0:przeliczać do
// punktu, <0:podana wartość
double FirstSemaphorDist; // odległość do pierwszego znalezionego semafora
double FirstSemaphorDist; // odległość do pierwszego znalezionego semafora
public:
double
ActualProximityDist; // odległość brana pod uwagę przy wyliczaniu prędkości i przyspieszenia
@@ -312,7 +314,7 @@ class TController
void ControllingSet(); // znajduje człon do sterowania
void AutoRewident(); // ustawia hamulce w składzie
public:
Mtable::TTrainParameters * Timetable()
Mtable::TTrainParameters *Timetable()
{
return TrainParams;
};
@@ -358,12 +360,12 @@ class TController
double Distance(vector3 &p1, vector3 &n, vector3 &p2);
private: // Ra: metody obsługujące skanowanie toru
TEvent * CheckTrackEvent(double fDirection, TTrack *Track);
TEvent *CheckTrackEvent(double fDirection, TTrack *Track);
bool TableCheckEvent(TEvent *e);
bool TableAddNew();
bool TableNotFound(TEvent *e);
void TableClear();
TEvent * TableCheckTrackEvent(double fDirection, TTrack *Track);
TEvent *TableCheckTrackEvent(double fDirection, TTrack *Track);
void TableTraceRoute(double fDistance, TDynamicObject *pVehicle = NULL);
void TableCheck(double fDistance);
TCommandType TableUpdate(double &fVelDes, double &fDist, double &fNext, double &fAcc);
@@ -371,9 +373,9 @@ class TController
private: // Ra: stare funkcje skanujące, używane do szukania sygnalizatora z tyłu
bool BackwardTrackBusy(TTrack *Track);
TEvent * CheckTrackEventBackward(double fDirection, TTrack *Track);
TTrack * BackwardTraceRoute(double &fDistance, double &fDirection, TTrack *Track,
TEvent *&Event);
TEvent *CheckTrackEventBackward(double fDirection, TTrack *Track);
TTrack *BackwardTraceRoute(double &fDistance, double &fDirection, TTrack *Track,
TEvent *&Event);
void SetProximityVelocity(double dist, double vel, const vector3 *pos);
TCommandType BackwardScan();
@@ -383,8 +385,8 @@ class TController
~TController();
std::string NextStop();
void TakeControl(bool yes);
std::string Relation();
std::string TrainName();
std::string Relation();
std::string TrainName();
int StationCount();
int StationIndex();
bool IsStop();

File diff suppressed because it is too large Load Diff

View File

@@ -317,8 +317,8 @@ class Global
// maciek001: zmienne dla MWD
static bool bMWDdebugEnable;
static unsigned long int iMWDBaudrate;
static AnsiString sMWDPortId;
static unsigned int iMWDBaudrate;
static std::string sMWDPortId;
static bool bMWDBreakEnable;
static bool bMWDInputDataEnable;
static double fMWDAnalogCalib[4][3];

4822
Train.cpp

File diff suppressed because it is too large Load Diff

86
Train.h
View File

@@ -12,18 +12,18 @@ http://mozilla.org/MPL/2.0/.
//#include "Track.h"
//#include "TrkFoll.h"
#include "Model3d.h"
#include "Spring.h"
#include "Gauge.h"
#include "Button.h"
#include "DynObj.h"
#include "Gauge.h"
#include "Model3d.h"
#include "Spring.h"
#include "mtable.h"
#include "Sound.h"
#include "AdvSound.h"
#include "RealSound.h"
#include "FadeSound.h"
#include "PyInt.h"
#include "RealSound.h"
#include "Sound.h"
#include <string>
// typedef enum {st_Off, st_Starting, st_On, st_ShuttingDown} T4State;
@@ -63,8 +63,8 @@ class TCab
TButton *btList; // Ra 2014-08: lista animacji dwustanowych (lampek) w kabinie
int iButtonsMax, iButtons; // ile miejsca w tablicy i ile jest w u篡ciu
public:
TGauge * Gauge(int n = -1); // pobranie adresu obiektu
TButton * Button(int n = -1); // pobranie adresu obiektu
TGauge *Gauge(int n = -1); // pobranie adresu obiektu
TButton *Button(int n = -1); // pobranie adresu obiektu
void Update();
};
@@ -96,22 +96,21 @@ class TTrain
void UpdateMechPosition(double dt);
bool Update();
void MechStop();
void SetLights();
// virtual bool RenderAlpha();
void SetLights();
// virtual bool RenderAlpha();
// McZapkie-310302: ladowanie parametrow z pliku
bool LoadMMediaFile(std::string const &asFileName);
PyObject *GetTrainState();
private:
// clears state of all cabin controls
void
clear_cab_controls();
// initializes a gauge matching provided label. returns: true if the label was found, false otherwise
bool
initialize_gauge( cParser &Parser, std::string const &Label, int const Cabindex );
// initializes a button matching provided label. returns: true if the label was found, false otherwise
bool
initialize_button( cParser &Parser, std::string const &Label, int const Cabindex );
private:
// clears state of all cabin controls
void clear_cab_controls();
// initializes a gauge matching provided label. returns: true if the label was found, false
// otherwise
bool initialize_gauge(cParser &Parser, std::string const &Label, int const Cabindex);
// initializes a button matching provided label. returns: true if the label was found, false
// otherwise
bool initialize_button(cParser &Parser, std::string const &Label, int const Cabindex);
private: //瞠by go nic z zewn靖rz nie przestawia這
TDynamicObject *DynamicObject; // przestawia zmiana pojazdu [F5]
@@ -163,7 +162,7 @@ private:
TGauge ggMainButton; // EZT
TGauge ggSecurityResetButton;
TGauge ggReleaserButton;
TGauge ggSandButton; //guzik piasecznicy
TGauge ggSandButton; // guzik piasecznicy
TGauge ggAntiSlipButton;
TGauge ggFuseButton;
TGauge ggConverterFuseButton; // hunter-261211: przycisk odblokowania
@@ -175,7 +174,7 @@ private:
TGauge ggRightLightButton;
TGauge ggLeftEndLightButton;
TGauge ggRightEndLightButton;
TGauge ggLightsButton; //przelacznik reflektorow (wszystkich)
TGauge ggLightsButton; // przelacznik reflektorow (wszystkich)
// hunter-230112: przelacznik swiatel tylnich
TGauge ggRearUpperLightButton;
@@ -201,7 +200,7 @@ private:
TGauge ggCabLightButton; // hunter-091012: przelacznik oswietlania kabiny
TGauge ggCabLightDimButton; // hunter-091012: przelacznik przyciemnienia
TGauge ggBatteryButton; // Stele 161228 hebelek baterii
TGauge ggBatteryButton; // Stele 161228 hebelek baterii
// oswietlenia kabiny
// NBMX wrzesien 2003 - obsluga drzwi
@@ -268,7 +267,7 @@ private:
TButton btLampkaBocznik4;
TButton btLampkaRadiotelefon;
TButton btLampkaHamienie;
TButton btLampkaED; //Stele 161228 hamowanie elektrodynamiczne
TButton btLampkaED; // Stele 161228 hamowanie elektrodynamiczne
TButton btLampkaJazda; // Ra: nie u篡wane
// KURS90
TButton btLampkaBoczniki;
@@ -376,7 +375,7 @@ private:
float fConverterTimer; // hunter-261211: dla przekaznika
float fMainRelayTimer; // hunter-141211: zalaczanie WSa z opoznieniem
float fCzuwakTestTimer; // hunter-091012: do testu czuwaka
float fLightsTimer; // yB 150617: timer do swiatel
float fLightsTimer; // yB 150617: timer do swiatel
int CAflag; // hunter-131211: dla osobnego zbijania CA i SHP
@@ -396,21 +395,22 @@ private:
float fHVoltage; // napi?cie dla dynamicznych ga?ek
float fHCurrent[4]; // pr?dy: suma i amperomierze 1,2,3
float fEngine[4]; // obroty te? trzeba pobra?
int iCarNo, iPowerNo, iUnitNo; //liczba pojazdow, czlonow napednych i jednostek spi皻ych ze sob<6F>
bool bDoors[20][3]; // drzwi dla wszystkich czlonow
int iUnits[20]; // numer jednostki
int iDoorNo[20]; // liczba drzwi
char cCode[20]; //kod pojazdu
std::string asCarName[20]; //nazwa czlonu
bool bMains[8]; //WSy
float fCntVol[8]; //napiecie NN
bool bPants[8][2]; //podniesienie pantografow
bool bFuse[8]; //nadmiarowe
bool bBatt[8]; //baterie
bool bConv[8]; //przetwornice
bool bComp[8][2]; //sprezarki
bool bHeat[8]; //grzanie
// McZapkie: do syczenia
int iCarNo, iPowerNo, iUnitNo; // liczba pojazdow, czlonow napednych i jednostek spi皻ych ze
// sob<6F>
bool bDoors[20][3]; // drzwi dla wszystkich czlonow
int iUnits[20]; // numer jednostki
int iDoorNo[20]; // liczba drzwi
char cCode[20]; // kod pojazdu
std::string asCarName[20]; // nazwa czlonu
bool bMains[8]; // WSy
float fCntVol[8]; // napiecie NN
bool bPants[8][2]; // podniesienie pantografow
bool bFuse[8]; // nadmiarowe
bool bBatt[8]; // baterie
bool bConv[8]; // przetwornice
bool bComp[8][2]; // sprezarki
bool bHeat[8]; // grzanie
// McZapkie: do syczenia
float fPPress, fNPress;
float fSPPress, fSNPress;
int iSekunda; // Ra: sekunda aktualizacji pr?dko?ci
@@ -418,17 +418,17 @@ private:
TPythonScreens pyScreens;
public:
float fPress[20][3]; // cisnienia dla wszystkich czlonow
float fEIMParams[9][10]; // parametry dla silnikow asynchronicznych
float fPress[20][3]; // cisnienia dla wszystkich czlonow
float fEIMParams[9][10]; // parametry dla silnikow asynchronicznych
int RadioChannel()
{
return iRadioChannel;
};
inline TDynamicObject * Dynamic()
inline TDynamicObject *Dynamic()
{
return DynamicObject;
};
inline TMoverParameters * Controlled()
inline TMoverParameters *Controlled()
{
return mvControlled;
};