diff --git a/Console.cpp b/Console.cpp index d38bb4e9..d29f6f02 100644 --- a/Console.cpp +++ b/Console.cpp @@ -146,7 +146,7 @@ int Console::On() { // załączenie konsoli (np. nawiązanie komunikacji) iSwitch[0] = iSwitch[1] = iSwitch[2] = iSwitch[3] = 0; // bity 0..127 - bez [Ctrl] iSwitch[4] = iSwitch[5] = iSwitch[6] = iSwitch[7] = 0; // bity 128..255 - z [Ctrl] - switch (iMode) + switch (iMode) { case 1: // kontrolki klawiatury case 2: // kontrolki klawiatury @@ -176,6 +176,7 @@ int Console::On() { // połączenie nie wyszło, ma być NULL delete PoKeys55[0]; PoKeys55[0] = NULL; + WriteLog("PoKeys not found!"); } break; } @@ -324,29 +325,29 @@ void Console::BitsUpdate(int mask) else MWDComm->WriteDataBuff[4] &= ~(1 << 6); if (mask & 0x0004) if (iBits & 4) MWDComm->WriteDataBuff[4] |= 1 << 1; // jazda na oporach rozruchowych else MWDComm->WriteDataBuff[4] &= ~(1 << 1); - if (mask & 0x0008) if (iBits & 8) MWDComm->WriteDataBuff[5] |= 1 << 5; // wy??cznik szybki + if (mask & 0x0008) if (iBits & 8) MWDComm->WriteDataBuff[5] |= 1 << 5; // wyłącznik szybki else MWDComm->WriteDataBuff[5] &= ~(1 << 5); - if (mask & 0x0010) if (iBits & 0x10) MWDComm->WriteDataBuff[5] |= 1 << 4; // nadmiarowy silnik?w trakcyjnych + if (mask & 0x0010) if (iBits & 0x10) MWDComm->WriteDataBuff[5] |= 1 << 4; // nadmiarowy silników trakcyjnych else MWDComm->WriteDataBuff[5] &= ~(1 << 4); - if (mask & 0x0020) if (iBits & 0x20) MWDComm->WriteDataBuff[4] |= 1 << 0; // styczniki liniowe + if (mask & 0x0020) if (iBits & 0x20) MWDComm->WriteDataBuff[5] |= 1 << 0; // styczniki liniowe else MWDComm->WriteDataBuff[5] &= ~(1 << 0); - if (mask & 0x0040) if (iBits & 0x40) MWDComm->WriteDataBuff[4] |= 1 << 2; // po?lizg + if (mask & 0x0040) if (iBits & 0x40) MWDComm->WriteDataBuff[4] |= 1 << 2; // poślizg else MWDComm->WriteDataBuff[4] &= ~(1 << 2); if (mask & 0x0080) if (iBits & 0x80) MWDComm->WriteDataBuff[5] |= 1 << 2; // (nadmiarowy) przetwornicy? ++ else MWDComm->WriteDataBuff[5] &= ~(1 << 2); - if (mask & 0x0100) if (iBits & 0x100) MWDComm->WriteDataBuff[5] |= 1 << 7; // nadmiarowy spr??arki + if (mask & 0x0100) if (iBits & 0x100) MWDComm->WriteDataBuff[5] |= 1 << 7; // nadmiarowy sprężarki else MWDComm->WriteDataBuff[5] &= ~(1 << 7); if (mask & 0x0200) if (iBits & 0x200) MWDComm->WriteDataBuff[2] |= 1 << 1; // wentylatory i opory else MWDComm->WriteDataBuff[2] &= ~(1 << 1); if (mask & 0x0400) if (iBits & 0x400) MWDComm->WriteDataBuff[2] |= 1 << 2; // wysoki rozruch else MWDComm->WriteDataBuff[2] &= ~(1 << 2); - if (mask & 0x0800) if (iBits & 0x800) MWDComm->WriteDataBuff[4] |= 1 << 0; // ogrzewanie poci?gu + if (mask & 0x0800) if (iBits & 0x800) MWDComm->WriteDataBuff[4] |= 1 << 0; // ogrzewanie pociągu else MWDComm->WriteDataBuff[4] &= ~(1 << 0); - if (mask & 0x1000) if (iBits & 0x1000) MWDComm->bHamowanie = true; // hasler: ci?nienie w hamulcach HASLER rysik 2 + if (mask & 0x1000) if (iBits & 0x1000) MWDComm->bHamowanie = true; // hasler: ciśnienie w hamulcach HASLER rysik 2 else MWDComm->bHamowanie = false; - if (mask & 0x2000) if (iBits & 0x2000) MWDComm->WriteDataBuff[6] |= 1 << 4; // hasler: pr?d "na" silnikach HASLER rysik 3 + if (mask & 0x2000) if (iBits & 0x2000) MWDComm->WriteDataBuff[6] |= 1 << 4; // hasler: prąd "na" silnikach - HASLER rysik 3 else MWDComm->WriteDataBuff[6] &= ~(1 << 4); - if (mask & 0x4000) if (iBits & 0x4000) MWDComm->WriteDataBuff[6] |= 1 << 7; // brz?czyk SHP/CA + if (mask & 0x4000) if (iBits & 0x4000) MWDComm->WriteDataBuff[6] |= 1 << 7; // brzęczyk SHP/CA else MWDComm->WriteDataBuff[6] &= ~(1 << 7); //if(mask & 0x8000) if(iBits & 0x8000) MWDComm->WriteDataBuff[1] |= 1<<7; (puste) //else MWDComm->WriteDataBuff[0] &= ~(1<<7); @@ -393,36 +394,50 @@ void Console::ValueSet(int x, double y) unsigned int iliczba; switch (x) { - case 0: iliczba = (unsigned int)floor((y / (Global::fMWDzg[0] * 10) * Global::fMWDzg[1]) + 0.5); // zbiornik g??wny + case 0: iliczba = (unsigned int)floor((y / (Global::fMWDzg[0] * 10) * Global::fMWDzg[1]) + 0.5); // zbiornik główny MWDComm->WriteDataBuff[12] = (unsigned char)(iliczba >> 8); MWDComm->WriteDataBuff[11] = (unsigned char)iliczba; + if (Global::bMWDmasterEnable && Global::iMWDDebugMode & 8) WriteLog("Main tank press " + to_string(MWDComm->WriteDataBuff[12]) + " " + to_string(MWDComm->WriteDataBuff[11])); break; - case 1: iliczba = (unsigned int)floor((y / (Global::fMWDpg[0] * 10) * Global::fMWDpg[1]) + 0.5); // przew?d g??wny + case 1: iliczba = (unsigned int)floor((y / (Global::fMWDpg[0] * 10) * Global::fMWDpg[1]) + 0.5); // przewód główny MWDComm->WriteDataBuff[10] = (unsigned char)(iliczba >> 8); MWDComm->WriteDataBuff[9] = (unsigned char)iliczba; + if (Global::bMWDmasterEnable && Global::iMWDDebugMode & 8) WriteLog("Main pipe press " + to_string(MWDComm->WriteDataBuff[10]) + " " + to_string(MWDComm->WriteDataBuff[9])); break; - case 2: iliczba = (unsigned int)floor((y / (Global::fMWDph[0] * 10) * Global::fMWDph[1]) + 0.5); // cylinder hamulcowy + case 2: iliczba = (unsigned int)floor((y / (Global::fMWDph[0] * 10) * Global::fMWDph[1]) + 0.5); // cylinder hamulcowy MWDComm->WriteDataBuff[8] = (unsigned char)(iliczba >> 8); MWDComm->WriteDataBuff[7] = (unsigned char)iliczba; + if (Global::bMWDmasterEnable && Global::iMWDDebugMode & 8) WriteLog("Break press " + to_string(MWDComm->WriteDataBuff[8]) + " " + to_string(MWDComm->WriteDataBuff[7])); break; - case 3: iliczba = (unsigned int)floor((y / Global::fMWDvolt[0] * Global::fMWDvolt[1]) + 0.5); // woltomierz WN + case 3: iliczba = (unsigned int)floor((y / Global::fMWDvolt[0] * Global::fMWDvolt[1]) + 0.5); // woltomierz WN MWDComm->WriteDataBuff[14] = (unsigned char)(iliczba >> 8); MWDComm->WriteDataBuff[13] = (unsigned char)iliczba; + if (Global::bMWDmasterEnable && Global::iMWDDebugMode & 8) WriteLog("Hi Volt meter " + to_string(MWDComm->WriteDataBuff[14]) + " " + to_string(MWDComm->WriteDataBuff[13])); break; case 4: iliczba = (unsigned int)floor((y / Global::fMWDamp[0] * Global::fMWDamp[1]) + 0.5); // amp WN 1 MWDComm->WriteDataBuff[16] = (unsigned char)(iliczba >> 8); MWDComm->WriteDataBuff[15] = (unsigned char)iliczba; + if (Global::bMWDmasterEnable && Global::iMWDDebugMode & 8) WriteLog("Apm meter1 " + to_string(MWDComm->WriteDataBuff[16]) + " " + to_string(MWDComm->WriteDataBuff[15])); break; case 5: iliczba = (unsigned int)floor((y / Global::fMWDamp[0] * Global::fMWDamp[1]) + 0.5); // amp WN 2 MWDComm->WriteDataBuff[18] = (unsigned char)(iliczba >> 8); MWDComm->WriteDataBuff[17] = (unsigned char)iliczba; + if (Global::bMWDmasterEnable && Global::iMWDDebugMode & 8) WriteLog("Apm meter2 " + to_string(MWDComm->WriteDataBuff[18]) + " " + to_string(MWDComm->WriteDataBuff[17])); break; case 6: iliczba = (unsigned int)floor((y / Global::fMWDamp[0] * Global::fMWDamp[1]) + 0.5); // amp WN 3 MWDComm->WriteDataBuff[20] = (unsigned int)(iliczba >> 8); MWDComm->WriteDataBuff[19] = (unsigned char)iliczba; + if (Global::bMWDmasterEnable && Global::iMWDDebugMode & 8) WriteLog("Apm meter3 " + to_string(MWDComm->WriteDataBuff[20]) + " " + to_string(MWDComm->WriteDataBuff[19])); break; - case 7: MWDComm->WriteDataBuff[0] = (unsigned char)floor(y); // prędkość + case 7: if (Global::iPause) MWDComm->WriteDataBuff[0] = 0; //skoro pauza to hasler stoi i nie nabija kilometrów CHYBA NIE DZIAŁA! + else MWDComm->WriteDataBuff[0] = (unsigned char)floor(y); // prędkość dla np haslera + if (Global::bMWDmasterEnable && Global::iMWDDebugMode & 8) WriteLog("Speed: " + to_string(MWDComm->WriteDataBuff[0])); break; + case 8: iliczba = (unsigned int)floor((y / Global::fMWDlowVolt[0] * Global::fMWDlowVolt[1]) + 0.5); // volt NN + MWDComm->WriteDataBuff[22] = (unsigned int)(iliczba >> 8); + MWDComm->WriteDataBuff[21] = (unsigned char)iliczba; + if (Global::bMWDmasterEnable && Global::iMWDDebugMode & 8) WriteLog("Low Volt meter " + to_string(MWDComm->WriteDataBuff[22]) + " " + to_string(MWDComm->WriteDataBuff[21])); + break; // przygotowane do wdrożenia, jeszcze nie wywoływane } } }; @@ -461,29 +476,31 @@ float Console::AnalogCalibrateGet(int x) { // pobranie i kalibracja wartości analogowej, jeśli nie ma PoKeys zwraca NULL if (iMode == 4 && PoKeys55[0]) { - float b = PoKeys55[0]->fAnalog[x]; - return (((((Global::fCalibrateIn[x][5] * b) + Global::fCalibrateIn[x][4]) * b + - Global::fCalibrateIn[x][3]) * - b + - Global::fCalibrateIn[x][2]) * - b + - Global::fCalibrateIn[x][1]) * - b + - Global::fCalibrateIn[x][0]; - } + float b = PoKeys55[0]->fAnalog[x]; + /*return (((((Global::fCalibrateIn[x][5] * b) + Global::fCalibrateIn[x][4]) * b + + Global::fCalibrateIn[x][3]) * + b + + Global::fCalibrateIn[x][2]) * + b + + Global::fCalibrateIn[x][1]) * + b + + Global::fCalibrateIn[x][0];*/ + b = (((((Global::fCalibrateIn[x][5] * b) + Global::fCalibrateIn[x][4]) * b + + Global::fCalibrateIn[x][3]) * + b + + Global::fCalibrateIn[x][2]) * + b + + Global::fCalibrateIn[x][1]) * + b + + Global::fCalibrateIn[x][0]; + if (x == 0) return (b + 2) / 8; + if (x == 1) return b/10; + else return b; + } if (Global::bMWDmasterEnable && Global::bMWDBreakEnable) { float b = (float)MWDComm->uiAnalog[x]; - b = (b - Global::fMWDAnalogInCalib[x][0]) / (Global::fMWDAnalogInCalib[x][1] - Global::fMWDAnalogInCalib[x][0]); - switch (x) - { - case 0: if (Global::bMWDdebugEnable && Global::iMWDDebugMode & 4) WriteLog("Pozycja kranu = " + to_string(b * 8 - 2)); - return (b * 8 - 2); - break; - case 1: return (b * 10); - break; - default: return 0; - } + return (b - Global::fMWDAnalogInCalib[x][0]) / (Global::fMWDAnalogInCalib[x][1] - Global::fMWDAnalogInCalib[x][0]); } return -1.0; // odcięcie }; diff --git a/Console/MWD.cpp b/Console/MWD.cpp index 67e08f46..19564b8f 100644 --- a/Console/MWD.cpp +++ b/Console/MWD.cpp @@ -164,7 +164,7 @@ bool TMWDComm::ReadData() // odbieranie danych + odczyta danych analogowych i za { DWORD bytes_read; ReadFile(hComm, &ReadDataBuff[0], BYTETOREAD, &bytes_read, NULL); - + if (Global::bMWDdebugEnable && Global::iMWDDebugMode == 128) WriteLog("Data receive. Checking data..."); if (Global::bMWDBreakEnable) { uiAnalog[0] = (ReadDataBuff[9] << 8) + ReadDataBuff[8]; @@ -204,8 +204,11 @@ bool TMWDComm::Run() // wywoływanie obsługi MWD + generacja większego opóźn if (!(MWDTime % Global::iMWDdivider)) { MWDTime = 0; + if (Global::bMWDdebugEnable && Global::iMWDDebugMode == 128) WriteLog("Sending data..."); SendData(); + if (Global::bMWDdebugEnable && Global::iMWDDebugMode == 128) WriteLog(" complet!\nReceiving data..."); ReadData(); + if (Global::bMWDdebugEnable && Global::iMWDDebugMode == 128) WriteLog(" complet!"); return 1; } } diff --git a/Console/MWD.h b/Console/MWD.h index ad35ee87..93f2dab4 100644 --- a/Console/MWD.h +++ b/Console/MWD.h @@ -61,8 +61,8 @@ public: unsigned int uiAnalog[4]; // trzymanie danych z wejść analogowych - BYTE ReadDataBuff[BYTETOREAD]; //17]; // bufory danych - BYTE WriteDataBuff[BYTETOWRITE]; //31]; + BYTE ReadDataBuff[BYTETOREAD+2]; //17]; // bufory danych + BYTE WriteDataBuff[BYTETOWRITE+2]; //31]; TMWDComm(); // konstruktor ~TMWDComm(); // destruktor @@ -70,43 +70,29 @@ public: #endif /* - INFO - zmiany dokonane w innych plikach niezbędne do prawidłowego działania: +INFO - wpisy do eu07.ini: - 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) +mwdmasterenable yes // włącz MWD (master MWD Enable) +mwddebugenable yes // włącz logowanie +mwddebugmode 4 // tryb debugowania (które logi) - MWDComm * Console::MWD = NULL; - luzem, obiekt i wskaźnik(?) - dodatkowo zmieniłem int na long int dla BitSet i BitClear oraz iBits +mwdcomportname COM3 // nazwa portu +mwdbaudrate 500000 // prędkość transmisji - 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 +mwdinputenable yes // włącz wejścia (przyciski, przełączniki) +mwdbreakenable yes // włącz hamulce (wejścia analogowe) - Globals.h: - dodano zmienne dla MWD - Globals.cpp: - dodano inicjalizaję zmiennych i odczyt z ini ustawień +mwdmainbreakconfig 0 1023 // konfiguracja kranu zespolonego -> min, max (położenie kranu - odczyt z ADC) +mwdlocbreakconfig 0 1023 // konfiguracja kranu maszynisty -> min, max (położenie kranu - odczyt z ADC) +mwdanalogin2config 0 1023 +mwdanalogin2config 0 1023 - Wpisy do pliku eu07.ini +mwdmaintankpress 0.9 1023 // max ciśnienie w zbiorniku głownym i rozdzielczość +mwdmainpipepress 0.7 1023 // max ciśnienie w przewodzie głównym i rozdzielczość +mwdbreakpress 0.5 1023 // max ciśnienie w cylindrach hamulcowych i rozdzielczość - //maciek001 MWD - comportname COM3 // wybór portu COM - mwdbaudrate 500000 +mwdhivoltmeter 4000 1023 // max napięcie na woltomierzu WN +mwdhiampmeter 800 1023 // max prąd amperomierza WN - 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 +mwddivider 5 // dzielnik - czym większy tym rzadziej czyta diwajs */ diff --git a/Globals.cpp b/Globals.cpp index 3e68f5e7..8ff250eb 100644 --- a/Globals.cpp +++ b/Globals.cpp @@ -214,6 +214,7 @@ double Global::fMWDpg[2] = { 0.8, 1023 }; double Global::fMWDph[2] = { 0.6, 1023 }; double Global::fMWDvolt[2] = { 4000, 1023 }; double Global::fMWDamp[2] = { 800, 1023 }; +double Global::fMWDlowVolt[2] = { 150, 1023 }; int Global::iMWDdivider = 5; //--------------------------------------------------------------------------- @@ -905,6 +906,11 @@ void Global::ConfigParse(cParser &Parser) Parser >> fMWDamp[0] >> fMWDamp[1]; if (bMWDdebugEnable) WriteLog("Amp settings: " + to_string(fMWDamp[0]) + (" ") + to_string(fMWDamp[1])); } + else if (token == "mwdlowvoltmeter") { + Parser.getTokens(2, false); + Parser >> fMWDlowVolt[0] >> fMWDlowVolt[1]; + if (bMWDdebugEnable) WriteLog("Low VoltMeter settings: " + to_string(fMWDlowVolt[0]) + (" ") + to_string(fMWDlowVolt[1])); + } else if (token == "mwddivider") { Parser.getTokens(1, false); Parser >> iMWDdivider; @@ -943,9 +949,9 @@ void Global::ConfigParse(cParser &Parser) /* this won't execute anymore with the old parser removed // TBD: remove, or launch depending on passed flag? if (qp) - { // to poniżej wykonywane tylko raz, jedynie po wczytaniu eu07.ini - Console::ModeSet(iFeedbackMode, iFeedbackPort); // tryb pracy konsoli sterowniczej - iFpsRadiusMax = 0.000025 * fFpsRadiusMax * + { // to poniżej wykonywane tylko raz, jedynie po wczytaniu eu07.ini*/ + Console::ModeSet(iFeedbackMode, iFeedbackPort); // tryb pracy konsoli sterowniczej + /*iFpsRadiusMax = 0.000025 * fFpsRadiusMax * fFpsRadiusMax; // maksymalny promień renderowania 3000.0 -> 225 if (iFpsRadiusMax > 400) iFpsRadiusMax = 400; diff --git a/Globals.h b/Globals.h index c46932e1..ce3ec320 100644 --- a/Globals.h +++ b/Globals.h @@ -359,6 +359,7 @@ class Global static double fMWDph[2]; static double fMWDvolt[2]; static double fMWDamp[2]; + static double fMWDlowVolt[2]; static int iMWDdivider; }; //--------------------------------------------------------------------------- diff --git a/Train.cpp b/Train.cpp index ce35b35c..ec438634 100644 --- a/Train.cpp +++ b/Train.cpp @@ -2832,6 +2832,20 @@ bool TTrain::Update( double const Deltatime ) /// napędu } + if (Global::bMWDmasterEnable) // pobieranie danych dla pulpitu port (COM) + { + Console::ValueSet(0, mvOccupied->Compressor); // zbiornik główny + Console::ValueSet(1, mvOccupied->PipePress); // przewód główny + Console::ValueSet(2, mvOccupied->BrakePress); // cylinder hamulcowy + Console::ValueSet(3, fHVoltage); // woltomierz wysokiego napięcia + Console::ValueSet(4, fHCurrent[(mvControlled->TrainType & dt_EZT) ? 0 : 1]); + // pierwszy amperomierz; dla EZT prąd całkowity + Console::ValueSet(5, fHCurrent[2]); // drugi amperomierz 2 + Console::ValueSet(6, fHCurrent[3]); // drugi amperomierz 3 + Console::ValueSet(7, fTachoVelocity); + //Console::ValueSet(8, mvControlled->BatteryVoltage); // jeszcze nie pora ;) + } + // hunter-080812: wyrzucanie szybkiego na elektrykach gdy nie ma napiecia // przy dowolnym ustawieniu kierunkowego // Ra: to już jest w T_MoverParameters::TractionForce(), ale zależy od @@ -3752,12 +3766,21 @@ bool TTrain::Update( double const Deltatime ) false) // nie blokujemy AI { // Ra: nie najlepsze miejsce, ale na początek gdzieś to dać trzeba // Firleju: dlatego kasujemy i zastepujemy funkcją w Console - if (((mvOccupied->BrakeHandle == FV4a) || - (mvOccupied->BrakeHandle == FVel6))) // może można usunąć ograniczenie do FV4a i FVel6? + if (mvOccupied->BrakeHandle == FV4a) { double b = Console::AnalogCalibrateGet(0); + b = b * 8 - 2; b = Global::CutValueToRange(-2.0, b, mvOccupied->BrakeCtrlPosNo); // przycięcie zmiennej do granic - + if (Global::bMWDdebugEnable && Global::iMWDDebugMode & 4) WriteLog("FV4a break position = " + to_string(b)); + ggBrakeCtrl.UpdateValue(b); // przesów bez zaokrąglenia + mvOccupied->BrakeLevelSet(b); + } + if (mvOccupied->BrakeHandle == FVel6) // może można usunąć ograniczenie do FV4a i FVel6? + { + double b = Console::AnalogCalibrateGet(0); + b = b * 7 - 1; + b = Global::CutValueToRange(-1.0, b, mvOccupied->BrakeCtrlPosNo); // przycięcie zmiennej do granic + if (Global::bMWDdebugEnable && Global::iMWDDebugMode & 4) WriteLog("FVel6 break position = " + to_string(b)); ggBrakeCtrl.UpdateValue(b); // przesów bez zaokrąglenia mvOccupied->BrakeLevelSet(b); } @@ -3768,19 +3791,23 @@ bool TTrain::Update( double const Deltatime ) // ggBrakeCtrl.UpdateValue(double(mvOccupied->BrakeCtrlPos)); ggBrakeCtrl.UpdateValue(mvOccupied->fBrakeCtrlPos); ggBrakeCtrl.Update(); + + } if (ggLocalBrake.SubModel) { if (DynamicObject->Mechanik ? - (DynamicObject->Mechanik->AIControllFlag ? false : (Global::iFeedbackMode == 4 || Global::bMWDmasterEnable)) : + (DynamicObject->Mechanik->AIControllFlag ? false : (Global::iFeedbackMode == 4 || (Global::bMWDmasterEnable && Global::bMWDBreakEnable))) : false) // nie blokujemy AI { // Ra: nie najlepsze miejsce, ale na początek gdzieś to dać trzeba // Firleju: dlatego kasujemy i zastepujemy funkcją w Console if ((mvOccupied->BrakeLocHandle == FD1)) { double b = Console::AnalogCalibrateGet(1); + b *= 10; b = Global::CutValueToRange(0.0, b, LocalBrakePosNo); // przycięcie zmiennej do granic ggLocalBrake.UpdateValue(b); // przesów bez zaokrąglenia + if (Global::bMWDdebugEnable && Global::iMWDDebugMode & 4) WriteLog("FD1 break position = " + to_string(b)); mvOccupied->LocalBrakePos = int(1.09 * b); // sposób zaokrąglania jest do ustalenia } @@ -4671,7 +4698,7 @@ bool TTrain::Update( double const Deltatime ) if ((!Console::Pressed(Global::Keys[k_DecBrakeLevel])) && (!Console::Pressed(Global::Keys[k_WaveBrake])) && (mvOccupied->BrakeCtrlPos == -1) && (mvOccupied->BrakeHandle == FVel6) && (DynamicObject->Controller != AIdriver) && - (Global::iFeedbackMode != 4)) + (Global::iFeedbackMode != 4) && (!(Global::bMWDmasterEnable && Global::bMWDBreakEnable))) { // mvOccupied->BrakeCtrlPos=(mvOccupied->BrakeCtrlPos)+1; // mvOccupied->IncBrakeLevel(); diff --git a/maszyna.sln b/maszyna.sln index 1c19b757..24fa39aa 100644 --- a/maszyna.sln +++ b/maszyna.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2013 -VisualStudioVersion = 12.0.40629.0 +# Visual Studio 14 +VisualStudioVersion = 14.0.23107.0 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "maszyna", "maszyna.vcxproj", "{8E0232E5-1C67-442F-9E04-45ED2DDFC960}" EndProject @@ -19,7 +19,4 @@ Global GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection - GlobalSection(Performance) = preSolution - HasPerformanceSessions = true - EndGlobalSection EndGlobal diff --git a/maszyna.vcxproj b/maszyna.vcxproj index 3cd10c56..b8354a00 100644 --- a/maszyna.vcxproj +++ b/maszyna.vcxproj @@ -1,5 +1,5 @@  - + Debug @@ -13,17 +13,18 @@ {8E0232E5-1C67-442F-9E04-45ED2DDFC960} Win32Proj + 8.1 Application true - v120_xp + v140_xp Application false - v120_xp + v140_xp @@ -36,14 +37,14 @@ - eu07++ - $(SolutionDir)tmp\$(PlatformShortName)-$(Configuration)\$(ProjectName)\ - $(SolutionDir)bin\ + mhEU07-201702debug + E:\Gry\EU07\eu07 exe\tmj-cpp-hamulec + E:\Gry\EU07\eu07 exe\tmj-cpp - eu07++ + mhEU07-201702relase $(SolutionDir)tmp\$(PlatformShortName)-$(Configuration)\$(ProjectName)\ - $(SolutionDir)bin\ + E:\Gry\EU07\eu07 exe\tmj-cpp-hamulec false @@ -55,7 +56,8 @@ Use true false - true + false + MultiThreadedDebug MachineX86 @@ -67,7 +69,7 @@ WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) - MultiThreadedDLL + MultiThreaded Level3 ProgramDatabase $(SolutionDir);$(SolutionDir)console;$(SolutionDir)mczapkie;$(SolutionDir)opengl;$(SolutionDir)python/include;%(AdditionalIncludeDirectories)