Dodana informacja o wersji

This commit is contained in:
firleju
2017-01-19 18:01:44 +01:00
parent 3dec967d30
commit dcf91d9044
2 changed files with 220 additions and 131 deletions

View File

@@ -10,11 +10,12 @@ http://mozilla.org/MPL/2.0/.
#include "stdafx.h"
#include "Console.h"
#include "Globals.h"
#include "Logs.h"
#include "PoKeys55.h"
#include "LPT.h"
#include "Logs.h"
#include "MWD.h" // maciek001: obsluga portu COM
#include "PoKeys55.h"
#include "mczapkie/mctools.h"
#include "MWD.h" // maciek001: obsluga portu COM
//---------------------------------------------------------------------------
// Ra: klasa statyczna gromadz<64>ca sygna<6E>y steruj<75>ce oraz informacje zwrotne
@@ -80,30 +81,31 @@ public static Int32 GetScreenSaverTimeout()
*/
// static class member storage allocation
TKeyTrans Console::ktTable[ 4 * 256 ];
TKeyTrans Console::ktTable[4 * 256];
// Ra: do poprawienia
void SetLedState(char Code, bool bOn)
{ // Ra: bajer do migania LED-ami w klawiaturze
// NOTE: disabled for the time being
// TODO: find non Borland specific equivalent, or get rid of it
/* if (Win32Platform == VER_PLATFORM_WIN32_NT)
{
// WriteLog(AnsiString(int(GetAsyncKeyState(Code))));
if (bool(GetAsyncKeyState(Code)) != bOn)
void SetLedState(char Code, bool bOn){
// Ra: bajer do migania LED-ami w klawiaturze
// NOTE: disabled for the time being
// TODO: find non Borland specific equivalent, or get rid of it
/* if (Win32Platform == VER_PLATFORM_WIN32_NT)
{
keybd_event(Code, MapVirtualKey(Code, 0), KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(Code, MapVirtualKey(Code, 0), KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
// WriteLog(AnsiString(int(GetAsyncKeyState(Code))));
if (bool(GetAsyncKeyState(Code)) != bOn)
{
keybd_event(Code, MapVirtualKey(Code, 0), KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(Code, MapVirtualKey(Code, 0), KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
0);
}
}
}
else
{
TKeyboardState KBState;
GetKeyboardState(KBState);
KBState[Code] = bOn ? 1 : 0;
SetKeyboardState(KBState);
};
*/
else
{
TKeyboardState KBState;
GetKeyboardState(KBState);
KBState[Code] = bOn ? 1 : 0;
SetKeyboardState(KBState);
};
*/
};
//---------------------------------------------------------------------------
@@ -113,7 +115,7 @@ int Console::iMode = 0;
int Console::iConfig = 0;
TPoKeys55 *Console::PoKeys55[2] = {NULL, NULL};
TLPT *Console::LPT = NULL;
MWDComm * Console::MWD = NULL; // maciek001: obiekt dla MWD
MWDComm *Console::MWD = NULL; // maciek001: obiekt dla MWD
int Console::iSwitch[8]; // bistabilne w kabinie, za<7A><61>czane z [Shift], wy<77><79>czane bez
int Console::iButton[8]; // monostabilne w kabinie, za<7A><61>czane podczas trzymania klawisza
@@ -178,7 +180,8 @@ int Console::On()
break;
case 5: // maciek001: MWD OK
MWD = new MWDComm();
if(!(MWD->Open())){
if (!(MWD->Open()))
{
delete MWD;
iMode = 0;
Global::iFeedbackMode = 0;
@@ -204,10 +207,8 @@ void Console::Off()
PoKeys55[1] = NULL;
delete LPT;
LPT = NULL;
if(iMode == 5 || MWD->GetMWDState()){
delete MWD; // maciek001: zamykanie portu COM i takie tam inne ;)
MWD = NULL;
}
delete MWD; // maciek001: zamykanie portu COM i takie tam inne ;)
MWD = NULL;
};
void Console::BitsSet(int mask, int entry)
@@ -217,8 +218,9 @@ void Console::BitsSet(int mask, int entry)
int old = iBits; // poprzednie stany
iBits |= mask;
BitsUpdate(old ^ iBits); // 1 dla bit<69>w zmienionych
if (iMode == 4)
WriteLog("PoKeys::BitsSet: mask: " + std::to_string(mask) + " iBits: " + std::to_string(iBits));
if (iMode == 4)
WriteLog("PoKeys::BitsSet: mask: " + std::to_string(mask) +
" iBits: " + std::to_string(iBits));
}
};
@@ -291,56 +293,106 @@ void Console::BitsUpdate(int mask)
PoKeys55[0]->Write(0x40, 52 - 1, (iBits & 0x1000) ? 1 : 0);
if (mask & 0x2000) // b13 Pr<50>d na silnikach do odbijania w haslerze
PoKeys55[0]->Write(0x40, 53 - 1, (iBits & 0x2000) ? 1 : 0);
if (mask & 0x4000) // b14 Brz<72>czyk SHP lub CA
PoKeys55[0]->Write(0x40, 16 - 1, (iBits & 0x4000) ? 1 : 0);
}
if (mask & 0x4000) // b14 Brz<72>czyk SHP lub CA
PoKeys55[0]->Write(0x40, 16 - 1, (iBits & 0x4000) ? 1 : 0);
}
break;
case 5: // maciek001: MWD lampki i kontrolki
/* out3: ogrzewanie sk?adu, opory rozruchowe, poslizg, zaluzjewent, -, -, czuwak, shp
out4: stycz.liniowe, pezekaznikr??nicobwpomoc, nadmiarprzetw, roznicowy obw. g?, nadmiarsilniki, wylszybki, zanikpr?duprzyje?dzienaoporach, nadmiarsprezarki
out4: stycz.liniowe, pezekaznikr??nicobwpomoc, nadmiarprzetw, roznicowy obw. g?,
nadmiarsilniki, wylszybki, zanikpr?duprzyje?dzienaoporach, nadmiarsprezarki
out5: HASLER */
if(mask & 0x0001) if(iBits & 1){
MWD->WriteDataBuff[4] |= 1<<7; // SHP HASLER te<74>
if(!MWD->bSHPstate){
MWD->bSHPstate = true;
MWD->bPrzejazdSHP = true;
}else MWD->bPrzejazdSHP = false;
}
else{
MWD->WriteDataBuff[4] &= ~(1<<7);
MWD->bPrzejazdSHP = false;
MWD->bSHPstate = false;
}
if(mask & 0x0002) if(iBits & 2) MWD->WriteDataBuff[4] |= 1<<6; // CA
else MWD->WriteDataBuff[4] &= ~(1<<6);
if(mask & 0x0004) if(iBits & 4) MWD->WriteDataBuff[4] |= 1<<1; // jazda na oporach rozruchowych
else MWD->WriteDataBuff[4] &= ~(1<<1);
if(mask & 0x0008) if(iBits & 8) MWD->WriteDataBuff[5] |= 1<<5; // wy??cznik szybki
else MWD->WriteDataBuff[5] &= ~(1<<5);
if(mask & 0x0010) if(iBits & 0x10) MWD->WriteDataBuff[5] |= 1<<4; // nadmiarowy silnik?w trakcyjnych
else MWD->WriteDataBuff[5] &= ~(1<<4);
if(mask & 0x0020) if(iBits & 0x20) MWD->WriteDataBuff[4] |= 1<<0; // styczniki liniowe
else MWD->WriteDataBuff[5] &= ~(1<<0);
if(mask & 0x0040) if(iBits & 0x40) MWD->WriteDataBuff[4] |= 1<<2; // po?lizg
else MWD->WriteDataBuff[4] &= ~(1<<2);
if(mask & 0x0080) if(iBits & 0x80) MWD->WriteDataBuff[5] |= 1<<2; // (nadmiarowy) przetwornicy? ++
else MWD->WriteDataBuff[5] &= ~(1<<2);
if(mask & 0x0100) if(iBits & 0x100) MWD->WriteDataBuff[5] |= 1<<7; // nadmiarowy spr??arki
else MWD->WriteDataBuff[5] &= ~(1<<7);
if(mask & 0x0200) if(iBits & 0x200) MWD->WriteDataBuff[2] |= 1<<1; // wentylatory i opory
else MWD->WriteDataBuff[2] &= ~(1<<1);
if(mask & 0x0400) if(iBits & 0x400) MWD->WriteDataBuff[2] |= 1<<2; // wysoki rozruch
else MWD->WriteDataBuff[2] &= ~(1<<2);
if(mask & 0x0800) if(iBits & 0x800) MWD->WriteDataBuff[4] |= 1<<0; // ogrzewanie poci?gu
else MWD->WriteDataBuff[4] &= ~(1<<0);
if(mask & 0x1000) if(iBits & 0x1000) MWD->bHamowanie = true; // hasler: ci?nienie w hamulcach HASLER rysik 2
else MWD->bHamowanie = false;
if(mask & 0x2000) if(iBits & 0x2000) MWD->WriteDataBuff[6] |= 1<<4; // hasler: pr?d "na" silnikach HASLER rysik 3
else MWD->WriteDataBuff[6] &= ~(1<<4);
if(mask & 0x4000) if(iBits & 0x4000) MWD->WriteDataBuff[6] |= 1<<7; // brz?czyk SHP/CA
else MWD->WriteDataBuff[6] &= ~(1<<7);
//if(mask & 0x8000) if(iBits & 0x8000) MWD->WriteDataBuff[1] |= 1<<7; (puste)
//else MWD->WriteDataBuff[0] &= ~(1<<7);
if (mask & 0x0001)
if (iBits & 1)
{
MWD->WriteDataBuff[4] |= 1 << 7; // SHP HASLER te<74>
if (!MWD->bSHPstate)
{
MWD->bSHPstate = true;
MWD->bPrzejazdSHP = true;
}
else
MWD->bPrzejazdSHP = false;
}
else
{
MWD->WriteDataBuff[4] &= ~(1 << 7);
MWD->bPrzejazdSHP = false;
MWD->bSHPstate = false;
}
if (mask & 0x0002)
if (iBits & 2)
MWD->WriteDataBuff[4] |= 1 << 6; // CA
else
MWD->WriteDataBuff[4] &= ~(1 << 6);
if (mask & 0x0004)
if (iBits & 4)
MWD->WriteDataBuff[4] |= 1 << 1; // jazda na oporach rozruchowych
else
MWD->WriteDataBuff[4] &= ~(1 << 1);
if (mask & 0x0008)
if (iBits & 8)
MWD->WriteDataBuff[5] |= 1 << 5; // wy??cznik szybki
else
MWD->WriteDataBuff[5] &= ~(1 << 5);
if (mask & 0x0010)
if (iBits & 0x10)
MWD->WriteDataBuff[5] |= 1 << 4; // nadmiarowy silnik?w trakcyjnych
else
MWD->WriteDataBuff[5] &= ~(1 << 4);
if (mask & 0x0020)
if (iBits & 0x20)
MWD->WriteDataBuff[4] |= 1 << 0; // styczniki liniowe
else
MWD->WriteDataBuff[5] &= ~(1 << 0);
if (mask & 0x0040)
if (iBits & 0x40)
MWD->WriteDataBuff[4] |= 1 << 2; // po?lizg
else
MWD->WriteDataBuff[4] &= ~(1 << 2);
if (mask & 0x0080)
if (iBits & 0x80)
MWD->WriteDataBuff[5] |= 1 << 2; // (nadmiarowy) przetwornicy? ++
else
MWD->WriteDataBuff[5] &= ~(1 << 2);
if (mask & 0x0100)
if (iBits & 0x100)
MWD->WriteDataBuff[5] |= 1 << 7; // nadmiarowy spr??arki
else
MWD->WriteDataBuff[5] &= ~(1 << 7);
if (mask & 0x0200)
if (iBits & 0x200)
MWD->WriteDataBuff[2] |= 1 << 1; // wentylatory i opory
else
MWD->WriteDataBuff[2] &= ~(1 << 1);
if (mask & 0x0400)
if (iBits & 0x400)
MWD->WriteDataBuff[2] |= 1 << 2; // wysoki rozruch
else
MWD->WriteDataBuff[2] &= ~(1 << 2);
if (mask & 0x0800)
if (iBits & 0x800)
MWD->WriteDataBuff[4] |= 1 << 0; // ogrzewanie poci?gu
else
MWD->WriteDataBuff[4] &= ~(1 << 0);
if (mask & 0x1000)
if (iBits & 0x1000)
MWD->bHamowanie = true; // hasler: ci?nienie w hamulcach HASLER rysik 2
else
MWD->bHamowanie = false;
if (mask & 0x2000)
if (iBits & 0x2000)
MWD->WriteDataBuff[6] |=
1 << 4; // hasler: pr?d "na" silnikach HASLER rysik 3
else
MWD->WriteDataBuff[6] &= ~(1 << 4);
if (mask & 0x4000)
if (iBits & 0x4000)
MWD->WriteDataBuff[6] |= 1 << 7; // brz?czyk SHP/CA
else
MWD->WriteDataBuff[6] &= ~(1 << 7);
// if(mask & 0x8000) if(iBits & 0x8000) MWD->WriteDataBuff[1] |= 1<<7; (puste)
// else MWD->WriteDataBuff[0] &= ~(1<<7);
break;
}
};
@@ -355,58 +407,85 @@ void Console::ValueSet(int x, double y)
if (iMode == 4)
if (PoKeys55[0])
{
x = Global::iPoKeysPWM[x];
if (Global::iCalibrateOutDebugInfo == x)
WriteLog("CalibrateOutDebugInfo: oryginal=" + std::to_string(y), false);
if (Global::fCalibrateOutMax[x] > 0)
{
y = Global::CutValueToRange(0, y, Global::fCalibrateOutMax[x]);
if (Global::iCalibrateOutDebugInfo == x)
WriteLog(" cutted=" + std::to_string(y),false);
y = y / Global::fCalibrateOutMax[x]; // sprowadzenie do <0,1> je<6A>li podana maksymalna warto<74><6F>
if (Global::iCalibrateOutDebugInfo == x)
WriteLog(" fraction=" + std::to_string(y),false);
}
double temp = (((((Global::fCalibrateOut[x][5] * y) + Global::fCalibrateOut[x][4]) * y +
Global::fCalibrateOut[x][3]) * y + Global::fCalibrateOut[x][2]) * y +
Global::fCalibrateOut[x][1]) * y +
Global::fCalibrateOut[x][0]; // zakres <0;1>
if (Global::iCalibrateOutDebugInfo == x)
WriteLog(" calibrated=" + std::to_string(temp));
PoKeys55[0]->PWM(x, temp);
x = Global::iPoKeysPWM[x];
if (Global::iCalibrateOutDebugInfo == x)
WriteLog("CalibrateOutDebugInfo: oryginal=" + std::to_string(y), false);
if (Global::fCalibrateOutMax[x] > 0)
{
y = Global::CutValueToRange(0, y, Global::fCalibrateOutMax[x]);
if (Global::iCalibrateOutDebugInfo == x)
WriteLog(" cutted=" + std::to_string(y), false);
y = y / Global::fCalibrateOutMax[x]; // sprowadzenie do <0,1> je<6A>li podana
// maksymalna warto<74><6F>
if (Global::iCalibrateOutDebugInfo == x)
WriteLog(" fraction=" + std::to_string(y), false);
}
double temp = (((((Global::fCalibrateOut[x][5] * y) + Global::fCalibrateOut[x][4]) * y +
Global::fCalibrateOut[x][3]) *
y +
Global::fCalibrateOut[x][2]) *
y +
Global::fCalibrateOut[x][1]) *
y +
Global::fCalibrateOut[x][0]; // zakres <0;1>
if (Global::iCalibrateOutDebugInfo == x)
WriteLog(" calibrated=" + std::to_string(temp));
PoKeys55[0]->PWM(x, temp);
}
if(iMode == 5 && MWD) //pwm-y i pr<70>dko<6B><6F>
if (iMode == 5 && MWD) // pwm-y i pr<70>dko<6B><6F>
{
unsigned int iliczba ;
if(x==0){
iliczba = (unsigned int) floor((y / (Global::fMWDzg[0] * 10) * Global::fMWDzg[1]) + 0.5); // zbiornik g??wny
MWD->WriteDataBuff[12] = (unsigned char)(iliczba>>8);
unsigned int iliczba;
if (x == 0)
{
iliczba = (unsigned int)floor((y / (Global::fMWDzg[0] * 10) * Global::fMWDzg[1]) +
0.5); // zbiornik g??wny
MWD->WriteDataBuff[12] = (unsigned char)(iliczba >> 8);
MWD->WriteDataBuff[11] = (unsigned char)iliczba;
}else if(x==1){
iliczba = (unsigned int) floor((y / (Global::fMWDpg[0] * 10) * Global::fMWDpg[1]) + 0.5); // przew?d g??wny
MWD->WriteDataBuff[10] = (unsigned char)(iliczba>>8);
}
else if (x == 1)
{
iliczba = (unsigned int)floor((y / (Global::fMWDpg[0] * 10) * Global::fMWDpg[1]) +
0.5); // przew?d g??wny
MWD->WriteDataBuff[10] = (unsigned char)(iliczba >> 8);
MWD->WriteDataBuff[9] = (unsigned char)iliczba;
}else if(x==2){
iliczba = (unsigned int) floor((y / (Global::fMWDph[0] * 10) * Global::fMWDph[1]) + 0.5); // cylinder hamulcowy
MWD->WriteDataBuff[8] = (unsigned char)(iliczba>>8);
}
else if (x == 2)
{
iliczba = (unsigned int)floor((y / (Global::fMWDph[0] * 10) * Global::fMWDph[1]) +
0.5); // cylinder hamulcowy
MWD->WriteDataBuff[8] = (unsigned char)(iliczba >> 8);
MWD->WriteDataBuff[7] = (unsigned char)iliczba;
}else if(x==3){
iliczba = (unsigned int) floor((y / Global::fMWDvolt[0] * Global::fMWDvolt[1]) + 0.5); // woltomierz WN
MWD->WriteDataBuff[14] = (unsigned char)(iliczba>>8);
}
else if (x == 3)
{
iliczba = (unsigned int)floor((y / Global::fMWDvolt[0] * Global::fMWDvolt[1]) +
0.5); // woltomierz WN
MWD->WriteDataBuff[14] = (unsigned char)(iliczba >> 8);
MWD->WriteDataBuff[13] = (unsigned char)iliczba;
}else if(x==4){
iliczba = (unsigned int)floor((y / Global::fMWDamp[0] * Global::fMWDamp[1]) + 0.5); // amp WN 1
MWD->WriteDataBuff[16] = (unsigned char)(iliczba>>8);
}
else if (x == 4)
{
iliczba = (unsigned int)floor((y / Global::fMWDamp[0] * Global::fMWDamp[1]) +
0.5); // amp WN 1
MWD->WriteDataBuff[16] = (unsigned char)(iliczba >> 8);
MWD->WriteDataBuff[15] = (unsigned char)iliczba;
}else if(x==5){
iliczba = (unsigned int)floor((y / Global::fMWDamp[0] * Global::fMWDamp[1]) + 0.5); // amp WN 2
MWD->WriteDataBuff[18] = (unsigned char)(iliczba>>8);
}
else if (x == 5)
{
iliczba = (unsigned int)floor((y / Global::fMWDamp[0] * Global::fMWDamp[1]) +
0.5); // amp WN 2
MWD->WriteDataBuff[18] = (unsigned char)(iliczba >> 8);
MWD->WriteDataBuff[17] = (unsigned char)iliczba;
}else if(x==6){
iliczba = (unsigned int)floor((y / Global::fMWDamp[0] * Global::fMWDamp[1]) + 0.5); // amp WN 3
MWD->WriteDataBuff[20] = (unsigned int)(iliczba>>8);
}
else if (x == 6)
{
iliczba = (unsigned int)floor((y / Global::fMWDamp[0] * Global::fMWDamp[1]) +
0.5); // amp WN 3
MWD->WriteDataBuff[20] = (unsigned int)(iliczba >> 8);
MWD->WriteDataBuff[19] = (unsigned char)iliczba;
}else if(x==7) MWD->WriteDataBuff[0] = (unsigned char)floor(y); // pr<70>dko<6B><6F>
}
else if (x == 7)
MWD->WriteDataBuff[0] = (unsigned char)floor(y); // pr<70>dko<6B><6F>
}
};
@@ -425,7 +504,7 @@ void Console::Update()
Global::iPause |= 8; // tak???
PoKeys55[0]->Connect(); // pr<70>ba ponownego pod<6F><64>czenia
}
if (iMode == 5)// Obs?uga MWD OK
if (iMode == 5) // Obs?uga MWD OK
{
MWD->Run();
}
@@ -445,24 +524,34 @@ float Console::AnalogCalibrateGet(int x)
{
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];
Global::fCalibrateIn[x][3]) *
b +
Global::fCalibrateIn[x][2]) *
b +
Global::fCalibrateIn[x][1]) *
b +
Global::fCalibrateIn[x][0];
}
if(iMode == 5 && MWD) // maciek001: obs?uga hamulc?w (wej?? analogowych) OK
if (iMode == 5 && MWD) // maciek001: obs?uga hamulc?w (wej?? analogowych) OK
{
float b = MWD->fAnalog[x];
//b = b*(Global::fMWDAnalogCalib[x][0]-Global::fMWDAnalogCalib[x][1])/Global::fMWDAnalogCalib[x][3]+Global::fMWDAnalogCalib[x][1]/Global::fMWDAnalogCalib[x][3];
b = (b-Global::fMWDAnalogCalib[x][1])/(Global::fMWDAnalogCalib[x][1]-Global::fMWDAnalogCalib[x][0]);
switch(x)
// b =
// b*(Global::fMWDAnalogCalib[x][0]-Global::fMWDAnalogCalib[x][1])/Global::fMWDAnalogCalib[x][3]+Global::fMWDAnalogCalib[x][1]/Global::fMWDAnalogCalib[x][3];
b = (b - Global::fMWDAnalogCalib[x][1]) /
(Global::fMWDAnalogCalib[x][1] - Global::fMWDAnalogCalib[x][0]);
switch (x)
{
case 0: return (b*8-2);
case 0:
return (b * 8 - 2);
break;
case 1: return (b*10);
case 1:
return (b * 10);
break;
default: return 0;
default:
return 0;
}
}
return -1.0; //odci<63>cie
return -1.0; // odci<EFBFBD>cie
};
unsigned char Console::DigitalGet(int x)