mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-17 23:39:18 +02:00
merge
This commit is contained in:
726
Console/MWD.cpp
726
Console/MWD.cpp
@@ -22,55 +22,62 @@ http://mozilla.org/MPL/2.0/.
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
#define BYTETOWRITE 31 /* ilość bajtów przesyłanych z MaSzyny*/
|
||||
#define BYTETOREAD 16 /* ilość bajtów przesyłanych do MaSzyny*/
|
||||
|
||||
HANDLE hComm;
|
||||
|
||||
MWDComm::MWDComm() // konstruktor
|
||||
TMWDComm::TMWDComm() // konstruktor
|
||||
{
|
||||
MWDTime = 0;
|
||||
bSHPstate = false;
|
||||
bPrzejazdSHP = false;
|
||||
bKabina1 = true; // pasuje wyciągnąć dane na temat kabiny i ustawiać te dwa parametry!
|
||||
bKabina2 = false;
|
||||
bHamowanie = false;
|
||||
bCzuwak = false;
|
||||
MWDTime = 0;
|
||||
bSHPstate = false;
|
||||
bPrzejazdSHP = false;
|
||||
bKabina1 = true; // pasuje wyciągnąć dane na temat kabiny
|
||||
bKabina2 = false; // i ustawiać te dwa parametry!
|
||||
bHamowanie = false;
|
||||
bCzuwak = false;
|
||||
|
||||
bRysik1H = false;
|
||||
bRysik1L = false;
|
||||
bRysik2H = false;
|
||||
bRysik2L = false;
|
||||
bRysik1H = false;
|
||||
bRysik1L = false;
|
||||
bRysik2H = false;
|
||||
bRysik2L = false;
|
||||
|
||||
bocznik = 0;
|
||||
nastawnik = 0;
|
||||
kierunek = 0;
|
||||
bnkMask = 0;
|
||||
bocznik = 0;
|
||||
nastawnik = 0;
|
||||
kierunek = 0;
|
||||
bnkMask = 0;
|
||||
|
||||
int i = 0;
|
||||
while (i < BYTETOWRITE)
|
||||
{
|
||||
if (i < BYTETOREAD)
|
||||
ReadDataBuff[i] = 0;
|
||||
WriteDataBuff[i] = 0;
|
||||
i++;
|
||||
}
|
||||
i = 0;
|
||||
while (i < 6)
|
||||
{
|
||||
lastStateData[i] = 0;
|
||||
maskSwitch[i] = 0;
|
||||
bitSwitch[i] = 0;
|
||||
i++;
|
||||
}
|
||||
int i = 6;
|
||||
|
||||
while (i)
|
||||
{
|
||||
i--;
|
||||
lastStateData[i] = 0;
|
||||
maskData[i] = 0;
|
||||
maskSwitch[i] = 0;
|
||||
bitSwitch[i] = 0;
|
||||
}
|
||||
|
||||
i = 0;
|
||||
while (i<BYTETOWRITE)
|
||||
{
|
||||
if (i<BYTETOREAD)ReadDataBuff[i] = 0;
|
||||
WriteDataBuff[i] = 0;
|
||||
i++;
|
||||
}
|
||||
i = 0;
|
||||
while (i<6)
|
||||
{
|
||||
lastStateData[i] = 0;
|
||||
maskSwitch[i] = 0;
|
||||
bitSwitch[i] = 0;
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
MWDComm::~MWDComm() // destruktor
|
||||
TMWDComm::~TMWDComm() // destruktor
|
||||
{
|
||||
Close();
|
||||
}
|
||||
|
||||
bool MWDComm::Open() // otwieranie portu COM
|
||||
bool TMWDComm::Open() // otwieranie portu COM
|
||||
{
|
||||
LPCSTR portId = Global::sMWDPortId.c_str();
|
||||
hComm = CreateFile(portId, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING,
|
||||
@@ -124,8 +131,12 @@ bool MWDComm::Open() // otwieranie portu COM
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool MWDComm::Close() // zamykanie portu COM
|
||||
bool TMWDComm::Close() // zamykanie portu COM
|
||||
{
|
||||
Global::bMWDmasterEnable = false; // główne włączenie portu!
|
||||
Global::bMWDInputEnable = false; // włącz wejścia
|
||||
Global::bMWDBreakEnable = false; // włącz wejścia analogowe
|
||||
|
||||
WriteLog("COM Port is closing...");
|
||||
int i = 0;
|
||||
while (i < BYTETOWRITE) // zerowanie danych...
|
||||
@@ -141,7 +152,7 @@ bool MWDComm::Close() // zamykanie portu COM
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
inline bool MWDComm::GetMWDState() // sprawdzanie otwarcia portu COM
|
||||
bool TMWDComm::GetMWDState() // sprawdzanie otwarcia portu COM
|
||||
{
|
||||
if (hComm > 0)
|
||||
return 1;
|
||||
@@ -149,26 +160,33 @@ inline bool MWDComm::GetMWDState() // sprawdzanie otwarcia portu COM
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool MWDComm::ReadData() // odbieranie danych + odczyta danych analogowych i zapis do zmiennych
|
||||
bool TMWDComm::ReadData() // odbieranie danych + odczyta danych analogowych i zapis do zmiennych
|
||||
{
|
||||
DWORD bytes_read;
|
||||
ReadFile(hComm, &ReadDataBuff[0], BYTETOREAD, &bytes_read, NULL);
|
||||
DWORD bytes_read;
|
||||
ReadFile(hComm, &ReadDataBuff[0], BYTETOREAD, &bytes_read, NULL);
|
||||
|
||||
fAnalog[0] =
|
||||
(float)((ReadDataBuff[9] << 8) + ReadDataBuff[8]) /
|
||||
Global::fMWDAnalogCalib[0][2]; // 4095.0f; //max wartosc wynikająca z rozdzielczości
|
||||
fAnalog[1] =
|
||||
(float)((ReadDataBuff[11] << 8) + ReadDataBuff[10]) / Global::fMWDAnalogCalib[1][2];
|
||||
fAnalog[2] =
|
||||
(float)((ReadDataBuff[13] << 8) + ReadDataBuff[12]) / Global::fMWDAnalogCalib[2][2];
|
||||
fAnalog[3] =
|
||||
(float)((ReadDataBuff[15] << 8) + ReadDataBuff[14]) / Global::fMWDAnalogCalib[3][2];
|
||||
CheckData();
|
||||
|
||||
return TRUE;
|
||||
if (Global::bMWDBreakEnable)
|
||||
{
|
||||
uiAnalog[0] = (ReadDataBuff[9] << 8) + ReadDataBuff[8];
|
||||
uiAnalog[1] = (ReadDataBuff[11] << 8) + ReadDataBuff[10];
|
||||
uiAnalog[2] = (ReadDataBuff[13] << 8) + ReadDataBuff[12];
|
||||
uiAnalog[3] = (ReadDataBuff[15] << 8) + ReadDataBuff[14];
|
||||
if (Global::bMWDdebugEnable && (Global::iMWDDebugMode & 1))
|
||||
{
|
||||
WriteLog("Main Break = " + to_string(uiAnalog[0]));
|
||||
WriteLog("Locomotiv Break = " + to_string(uiAnalog[1]));
|
||||
}
|
||||
if (Global::bMWDdebugEnable && (Global::iMWDDebugMode & 2))
|
||||
{
|
||||
WriteLog("Analog input 1 = " + to_string(uiAnalog[2]));
|
||||
WriteLog("Analog imput 2 = " + to_string(uiAnalog[3]));
|
||||
}
|
||||
}
|
||||
if (Global::bMWDInputEnable) CheckData();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool MWDComm::SendData() // wysyłanie danych
|
||||
bool TMWDComm::SendData() // wysyłanie danych
|
||||
{
|
||||
DWORD bytes_write;
|
||||
|
||||
@@ -177,30 +195,30 @@ bool MWDComm::SendData() // wysyłanie danych
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool MWDComm::Run() // wywoływanie obsługi MWD + generacja większego opóźnienia
|
||||
bool TMWDComm::Run() // wywoływanie obsługi MWD + generacja większego opóźnienia
|
||||
{
|
||||
MWDTime++;
|
||||
if (!(MWDTime % 5))
|
||||
{
|
||||
if (GetMWDState())
|
||||
{
|
||||
SendData();
|
||||
if (Global::bMWDInputDataEnable)
|
||||
ReadData();
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
WriteLog("Port COM: connection ERROR!");
|
||||
// może spróbować się połączyć znowu?
|
||||
return false;
|
||||
}
|
||||
MWDTime = 0;
|
||||
}
|
||||
return false;
|
||||
if (GetMWDState())
|
||||
{
|
||||
MWDTime++;
|
||||
if (!(MWDTime % Global::iMWDdivider))
|
||||
{
|
||||
MWDTime = 0;
|
||||
SendData();
|
||||
ReadData();
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
WriteLog("Port COM: connection ERROR!");
|
||||
Close();
|
||||
// może spróbować się połączyć znowu?
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
void MWDComm::CheckData() // sprawdzanie wejść cyfrowych i odpowiednie sterowanie maszyną
|
||||
void TMWDComm::CheckData() // sprawdzanie wejść cyfrowych i odpowiednie sterowanie maszyną
|
||||
{
|
||||
int i = 0;
|
||||
while (i < 6)
|
||||
@@ -212,43 +230,43 @@ void MWDComm::CheckData() // sprawdzanie wejść cyfrowych i odpowiednie sterowa
|
||||
/*
|
||||
Rozpiska portów!
|
||||
Port0: 0 NC odblok. przek. sprężarki i wentyl. oporów
|
||||
1 M wyłącznik wył. szybkiego
|
||||
2 Shift+M impuls załączający wył. szybki
|
||||
3 N odblok. przekaźników nadmiarowych
|
||||
1 M wyłącznik wył. szybkiego
|
||||
2 Shift+M impuls załączający wył. szybki
|
||||
3 N odblok. przekaźników nadmiarowych
|
||||
i różnicowego obwodu głównego
|
||||
4 NC rezerwa
|
||||
5 Ctrl+N odblok. przek. nadmiarowych
|
||||
4 NC rezerwa
|
||||
5 Ctrl+N odblok. przek. nadmiarowych
|
||||
przetwornicy, ogrzewania pociągu i różnicowych obw. pomocniczych
|
||||
6 L wył. styczników liniowych
|
||||
7 SPACE kasowanie czuwaka
|
||||
6 L wył. styczników liniowych
|
||||
7 SPACE kasowanie czuwaka
|
||||
|
||||
Port1: 0 NC
|
||||
1 (Shift) X przetwornica
|
||||
2 (Shift) C sprężarka
|
||||
3 S piasecznice
|
||||
4 (Shift) H ogrzewanie składu
|
||||
5 przel. hamowania Shift+B
|
||||
1 (Shift) X przetwornica
|
||||
2 (Shift) C sprężarka
|
||||
3 S piasecznice
|
||||
4 (Shift) H ogrzewanie składu
|
||||
5 przel. hamowania Shift+B
|
||||
pspbpwy Ctrl+B pospieszny B towarowy
|
||||
6 przel. hamowania
|
||||
7 (Shift) F rozruch w/n
|
||||
6 przel. hamowania
|
||||
7 (Shift) F rozruch w/n
|
||||
|
||||
Port2: 0 (Shift) P pantograf przedni
|
||||
1 (Shift) O pantograf tylni
|
||||
2 ENTER przyhamowanie przy poślizgu
|
||||
3 () przyciemnienie świateł
|
||||
4 () przyciemnienie świateł
|
||||
5 NUM6 odluźniacz
|
||||
6 a syrena lok W
|
||||
7 A syrena lok N
|
||||
1 (Shift) O pantograf tylni
|
||||
2 ENTER przyhamowanie przy poślizgu
|
||||
3 () przyciemnienie świateł
|
||||
4 () przyciemnienie świateł
|
||||
5 NUM6 odluźniacz
|
||||
6 a syrena lok W
|
||||
7 A syrena lok N
|
||||
|
||||
Port3: 0 Shift+J bateria
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
6
|
||||
7
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
6
|
||||
7
|
||||
*/
|
||||
|
||||
/* po przełączeniu bistabilnego najpierw wciskamy klawisz i przy następnym
|
||||
@@ -257,298 +275,238 @@ void MWDComm::CheckData() // sprawdzanie wejść cyfrowych i odpowiednie sterowa
|
||||
|
||||
// wciskanie przycisków klawiatury
|
||||
/*PORT0*/
|
||||
if (maskData[0] & 0x02 && lastStateData[0] & 0x02)
|
||||
KeyBoard('M', 1); // wyłączenie wyłącznika szybkiego
|
||||
else
|
||||
KeyBoard('M', 0); // monostabilny
|
||||
if (maskData[0] & 0x04 && lastStateData[0] & 0x04)
|
||||
{ // impuls załączający wyłącznik szybki
|
||||
KeyBoard(0x10, 1); // monostabilny
|
||||
KeyBoard('M', 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
KeyBoard('M', 0);
|
||||
KeyBoard(0x10, 0);
|
||||
}
|
||||
if (maskData[0] & 0x08 && lastStateData[0] & 0x08)
|
||||
KeyBoard('N', 1); // odblok nadmiarowego silników trakcyjnych
|
||||
else
|
||||
KeyBoard('N', 0); // monostabilny
|
||||
if (maskData[0] & 0x20 && lastStateData[0] & 0x20)
|
||||
{ // odblok nadmiarowego przetwornicy, ogrzewania poc.
|
||||
KeyBoard(0x11, 1); // różnicowego obwodów pomocniczych
|
||||
KeyBoard('N', 1); // monostabilny
|
||||
}
|
||||
else
|
||||
{
|
||||
KeyBoard('N', 0);
|
||||
KeyBoard(0x11, 0);
|
||||
}
|
||||
if (maskData[0] & 0x40 && lastStateData[0] & 0x40)
|
||||
KeyBoard('L', 1); // wył. styczników liniowych
|
||||
else
|
||||
KeyBoard('L', 0); // monostabilny
|
||||
if (maskData[0] & 0x80 && lastStateData[0] & 0x80)
|
||||
KeyBoard(0x20, 1); // kasowanie czuwaka/SHP
|
||||
else
|
||||
KeyBoard(0x20, 0); // kasowanie czuwaka/SHP
|
||||
if (maskData[0] & 0x02) if (lastStateData[0] & 0x02) KeyBoard('M', 1); // wyłączenie wyłącznika szybkiego
|
||||
else KeyBoard('M', 0); // monostabilny
|
||||
if (maskData[0] & 0x04) if (lastStateData[0] & 0x04) { // impuls załączający wyłącznik szybki
|
||||
KeyBoard(0x10, 1); // monostabilny
|
||||
KeyBoard('M', 1);
|
||||
}
|
||||
else {
|
||||
KeyBoard('M', 0);
|
||||
KeyBoard(0x10, 0);
|
||||
}
|
||||
if (maskData[0] & 0x08) if (lastStateData[0] & 0x08) KeyBoard('N', 1); // odblok nadmiarowego silników trakcyjnych
|
||||
else KeyBoard('N', 0); // monostabilny
|
||||
if (maskData[0] & 0x20) if (lastStateData[0] & 0x20) { // odblok nadmiarowego przetwornicy, ogrzewania poc.
|
||||
KeyBoard(0x11, 1); // różnicowego obwodów pomocniczych
|
||||
KeyBoard('N', 1); // monostabilny
|
||||
}
|
||||
else {
|
||||
KeyBoard('N', 0);
|
||||
KeyBoard(0x11, 0);
|
||||
}
|
||||
if (maskData[0] & 0x40) if (lastStateData[0] & 0x40) KeyBoard('L', 1); // wył. styczników liniowych
|
||||
else KeyBoard('L', 0); // monostabilny
|
||||
if (maskData[0] & 0x80) if (lastStateData[0] & 0x80) KeyBoard(0x20, 1); // kasowanie czuwaka/SHP
|
||||
else KeyBoard(0x20, 0); // kasowanie czuwaka/SHP
|
||||
|
||||
/*PORT1*/
|
||||
|
||||
// puszczanie przycisku bistabilnego klawiatury
|
||||
if (maskSwitch[1] & 0x02)
|
||||
{
|
||||
if (bitSwitch[1] & 0x02)
|
||||
{
|
||||
KeyBoard('X', 0);
|
||||
KeyBoard(0x10, 0);
|
||||
}
|
||||
else
|
||||
KeyBoard('X', 0);
|
||||
maskSwitch[1] &= ~0x02;
|
||||
}
|
||||
if (maskSwitch[1] & 0x04)
|
||||
{
|
||||
if (bitSwitch[1] & 0x04)
|
||||
{
|
||||
KeyBoard('C', 0);
|
||||
KeyBoard(0x10, 0);
|
||||
}
|
||||
else
|
||||
KeyBoard('C', 0);
|
||||
maskSwitch[1] &= ~0x04;
|
||||
}
|
||||
if (maskSwitch[1] & 0x10)
|
||||
{
|
||||
if (bitSwitch[1] & 0x10)
|
||||
{
|
||||
KeyBoard('H', 0);
|
||||
KeyBoard(0x10, 0);
|
||||
}
|
||||
else
|
||||
KeyBoard('H', 0);
|
||||
maskSwitch[1] &= ~0x10;
|
||||
}
|
||||
if (maskSwitch[1] & 0x20 || maskSwitch[1] & 0x40)
|
||||
{
|
||||
if (maskSwitch[1] & 0x20)
|
||||
KeyBoard(0x10, 0);
|
||||
if (maskSwitch[1] & 0x40)
|
||||
KeyBoard(0x11, 0);
|
||||
KeyBoard('B', 0);
|
||||
maskSwitch[1] &= ~0x60;
|
||||
}
|
||||
if (maskSwitch[1] & 0x80)
|
||||
{
|
||||
if (bitSwitch[1] & 0x80)
|
||||
{
|
||||
KeyBoard('F', 0);
|
||||
KeyBoard(0x10, 0);
|
||||
}
|
||||
else
|
||||
KeyBoard('F', 0);
|
||||
maskSwitch[1] &= ~0x80;
|
||||
}
|
||||
if (maskSwitch[1] & 0x02) {
|
||||
if (bitSwitch[1] & 0x02) {
|
||||
KeyBoard('X', 0);
|
||||
KeyBoard(0x10, 0);
|
||||
}
|
||||
else KeyBoard('X', 0);
|
||||
maskSwitch[1] &= ~0x02;
|
||||
}
|
||||
if (maskSwitch[1] & 0x04) {
|
||||
if (bitSwitch[1] & 0x04) {
|
||||
KeyBoard('C', 0);
|
||||
KeyBoard(0x10, 0);
|
||||
}
|
||||
else KeyBoard('C', 0);
|
||||
maskSwitch[1] &= ~0x04;
|
||||
}
|
||||
if (maskSwitch[1] & 0x10) {
|
||||
if (bitSwitch[1] & 0x10) {
|
||||
KeyBoard('H', 0);
|
||||
KeyBoard(0x10, 0);
|
||||
}
|
||||
else KeyBoard('H', 0);
|
||||
maskSwitch[1] &= ~0x10;
|
||||
}
|
||||
if (maskSwitch[1] & 0x20 || maskSwitch[1] & 0x40) {
|
||||
if (maskSwitch[1] & 0x20) KeyBoard(0x10, 0);
|
||||
if (maskSwitch[1] & 0x40) KeyBoard(0x11, 0);
|
||||
KeyBoard('B', 0);
|
||||
maskSwitch[1] &= ~0x60;
|
||||
}
|
||||
if (maskSwitch[1] & 0x80) {
|
||||
if (bitSwitch[1] & 0x80) {
|
||||
KeyBoard('F', 0);
|
||||
KeyBoard(0x10, 0);
|
||||
}
|
||||
else KeyBoard('F', 0);
|
||||
maskSwitch[1] &= ~0x80;
|
||||
}
|
||||
|
||||
if (maskData[1] & 0x02 && lastStateData[1] & 0x02)
|
||||
{ // przetwornica
|
||||
KeyBoard(0x10, 1); // bistabilny
|
||||
KeyBoard('X', 1);
|
||||
maskSwitch[1] |= 0x02;
|
||||
bitSwitch[1] |= 0x02;
|
||||
}
|
||||
else
|
||||
{
|
||||
maskSwitch[1] |= 0x02;
|
||||
bitSwitch[1] &= ~0x02;
|
||||
KeyBoard('X', 1);
|
||||
}
|
||||
if (maskData[1] & 0x04 && lastStateData[1] & 0x04)
|
||||
{ // sprężarka
|
||||
KeyBoard(0x10, 1); // bistabilny
|
||||
KeyBoard('C', 1);
|
||||
maskSwitch[1] |= 0x04;
|
||||
bitSwitch[1] |= 0x04;
|
||||
}
|
||||
else
|
||||
{
|
||||
maskSwitch[1] |= 0x04;
|
||||
bitSwitch[1] &= ~0x04;
|
||||
KeyBoard('C', 1);
|
||||
}
|
||||
if (maskData[1] & 0x08 && lastStateData[1] & 0x08)
|
||||
KeyBoard('S', 1); // piasecznica
|
||||
else
|
||||
KeyBoard('S', 0); // monostabilny
|
||||
if (maskData[1] & 0x10 && lastStateData[1] & 0x10)
|
||||
{ // ogrzewanie składu
|
||||
KeyBoard(0x11, 1); // bistabilny
|
||||
KeyBoard('H', 1);
|
||||
maskSwitch[1] |= 0x10;
|
||||
bitSwitch[1] |= 0x10;
|
||||
}
|
||||
else
|
||||
{
|
||||
maskSwitch[1] |= 0x10;
|
||||
bitSwitch[1] &= ~0x10;
|
||||
KeyBoard('H', 1);
|
||||
}
|
||||
if (maskData[1] & 0x20 || maskData[1] & 0x40)
|
||||
{ // przełącznik hamowania
|
||||
if (lastStateData[1] & 0x20)
|
||||
{ // Shift+B
|
||||
KeyBoard(0x10, 1);
|
||||
maskSwitch[1] |= 0x20;
|
||||
}
|
||||
else if (lastStateData[1] & 0x40)
|
||||
{ // Ctrl+B
|
||||
KeyBoard(0x11, 1);
|
||||
maskSwitch[1] |= 0x40;
|
||||
}
|
||||
KeyBoard('B', 1);
|
||||
}
|
||||
|
||||
if (maskData[1] & 0x80 && lastStateData[1] & 0x80)
|
||||
{ // rozruch wysoki/niski
|
||||
KeyBoard(0x10, 1); // bistabilny
|
||||
KeyBoard('F', 1);
|
||||
maskSwitch[1] |= 0x80;
|
||||
bitSwitch[1] |= 0x80;
|
||||
}
|
||||
else
|
||||
{
|
||||
maskSwitch[1] |= 0x80;
|
||||
bitSwitch[1] &= ~0x80;
|
||||
KeyBoard('F', 1);
|
||||
}
|
||||
if (maskData[1] & 0x02) if (lastStateData[1] & 0x02) { // przetwornica
|
||||
KeyBoard(0x10, 1); // bistabilny
|
||||
KeyBoard('X', 1);
|
||||
maskSwitch[1] |= 0x02;
|
||||
bitSwitch[1] |= 0x02;
|
||||
}
|
||||
else {
|
||||
maskSwitch[1] |= 0x02;
|
||||
bitSwitch[1] &= ~0x02;
|
||||
KeyBoard('X', 1);
|
||||
}
|
||||
if (maskData[1] & 0x04) if (lastStateData[1] & 0x04) { // sprężarka
|
||||
KeyBoard(0x10, 1); // bistabilny
|
||||
KeyBoard('C', 1);
|
||||
maskSwitch[1] |= 0x04;
|
||||
bitSwitch[1] |= 0x04;
|
||||
}
|
||||
else {
|
||||
maskSwitch[1] |= 0x04;
|
||||
bitSwitch[1] &= ~0x04;
|
||||
KeyBoard('C', 1);
|
||||
}
|
||||
if (maskData[1] & 0x08) if (lastStateData[1] & 0x08) KeyBoard('S', 1); // piasecznica
|
||||
else KeyBoard('S', 0); // monostabilny
|
||||
if (maskData[1] & 0x10) if (lastStateData[1] & 0x10) { // ogrzewanie składu
|
||||
KeyBoard(0x11, 1); // bistabilny
|
||||
KeyBoard('H', 1);
|
||||
maskSwitch[1] |= 0x10;
|
||||
bitSwitch[1] |= 0x10;
|
||||
}
|
||||
else {
|
||||
maskSwitch[1] |= 0x10;
|
||||
bitSwitch[1] &= ~0x10;
|
||||
KeyBoard('H', 1);
|
||||
}
|
||||
if (maskData[1] & 0x20 || maskData[1] & 0x40) { // przełącznik hamowania
|
||||
if (lastStateData[1] & 0x20) { // Shift+B
|
||||
KeyBoard(0x10, 1);
|
||||
maskSwitch[1] |= 0x20;
|
||||
}
|
||||
else if (lastStateData[1] & 0x40) { // Ctrl+B
|
||||
KeyBoard(0x11, 1);
|
||||
maskSwitch[1] |= 0x40;
|
||||
}
|
||||
KeyBoard('B', 1);
|
||||
}
|
||||
|
||||
/*PORT2*/
|
||||
if (maskData[1] & 0x80) if (lastStateData[1] & 0x80) { // rozruch wysoki/niski
|
||||
KeyBoard(0x10, 1); // bistabilny
|
||||
KeyBoard('F', 1);
|
||||
maskSwitch[1] |= 0x80;
|
||||
bitSwitch[1] |= 0x80;
|
||||
}
|
||||
else {
|
||||
maskSwitch[1] |= 0x80;
|
||||
bitSwitch[1] &= ~0x80;
|
||||
KeyBoard('F', 1);
|
||||
}
|
||||
|
||||
if (maskSwitch[2] & 0x01)
|
||||
{
|
||||
if (bitSwitch[2] & 0x01)
|
||||
{
|
||||
KeyBoard('P', 0);
|
||||
KeyBoard(0x10, 0);
|
||||
}
|
||||
else
|
||||
KeyBoard('P', 0);
|
||||
maskSwitch[2] &= ~0x01;
|
||||
}
|
||||
if (maskSwitch[2] & 0x02)
|
||||
{
|
||||
if (bitSwitch[2] & 0x02)
|
||||
{
|
||||
KeyBoard('O', 0);
|
||||
KeyBoard(0x10, 0);
|
||||
}
|
||||
else
|
||||
KeyBoard('O', 0);
|
||||
maskSwitch[2] &= ~0x02;
|
||||
}
|
||||
|
||||
if (maskData[2] & 0x01 && lastStateData[2] & 0x01)
|
||||
{ // pantograf przedni
|
||||
KeyBoard(0x10, 1); // bistabilny
|
||||
KeyBoard('P', 1);
|
||||
maskSwitch[2] |= 0x01;
|
||||
bitSwitch[2] |= 0x01;
|
||||
}
|
||||
else
|
||||
{
|
||||
maskSwitch[2] |= 0x01;
|
||||
bitSwitch[2] &= ~0x01;
|
||||
KeyBoard('P', 1);
|
||||
}
|
||||
if (maskData[2] & 0x02 && lastStateData[2] & 0x02)
|
||||
{ // pantograf tylni
|
||||
KeyBoard(0x10, 1); // bistabilny
|
||||
KeyBoard('O', 1);
|
||||
maskSwitch[2] |= 0x02;
|
||||
bitSwitch[2] |= 0x02;
|
||||
}
|
||||
else
|
||||
{
|
||||
maskSwitch[2] |= 0x02;
|
||||
bitSwitch[2] &= ~0x02;
|
||||
KeyBoard('O', 1);
|
||||
}
|
||||
if (maskData[2] & 0x04 && lastStateData[2] & 0x04)
|
||||
{ // przyhamowanie przy poślizgu
|
||||
KeyBoard(0x10, 1); // monostabilny
|
||||
KeyBoard(0x0D, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
//PORT2
|
||||
if (maskSwitch[2] & 0x01) {
|
||||
if (bitSwitch[2] & 0x01) {
|
||||
KeyBoard('P', 0);
|
||||
KeyBoard(0x10, 0);
|
||||
}
|
||||
else KeyBoard('P', 0);
|
||||
maskSwitch[2] &= ~0x01;
|
||||
}
|
||||
if (maskSwitch[2] & 0x02) {
|
||||
if (bitSwitch[2] & 0x02) {
|
||||
KeyBoard('O', 0);
|
||||
KeyBoard(0x10, 0);
|
||||
}
|
||||
else KeyBoard('O', 0);
|
||||
maskSwitch[2] &= ~0x02;
|
||||
}
|
||||
|
||||
KeyBoard(0x0D, 0);
|
||||
KeyBoard(0x10, 0);
|
||||
}
|
||||
/*if(maskData[2] & 0x08 && lastStateData[2] & 0x08){ // przyciemnienie świateł
|
||||
KeyBoard(' ',0); // bistabilny
|
||||
KeyBoard(0x10,1);
|
||||
KeyBoard(' ',1);
|
||||
}else{
|
||||
KeyBoard(' ',0);
|
||||
KeyBoard(0x10,0);
|
||||
KeyBoard(' ',1);
|
||||
}
|
||||
if(maskData[2] & 0x10 && lastStateData[2] & 0x10) { // przyciemnienie świateł
|
||||
KeyBoard(' ',0); // bistabilny
|
||||
KeyBoard(0x11,1);
|
||||
KeyBoard(' ',1);
|
||||
}else{
|
||||
KeyBoard(' ',0);
|
||||
KeyBoard(0x11,0);
|
||||
KeyBoard(' ',1);
|
||||
}*/
|
||||
if (maskData[2] & 0x20 && lastStateData[2] & 0x20)
|
||||
KeyBoard(0x66, 1); // odluźniacz
|
||||
else
|
||||
KeyBoard(0x66, 0); // monostabilny
|
||||
if (maskData[2] & 0x40 && lastStateData[2] & 0x40)
|
||||
{ // syrena wysoka
|
||||
KeyBoard(0x10, 1); // monostabilny
|
||||
KeyBoard('A', 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
KeyBoard('A', 0);
|
||||
KeyBoard(0x10, 0);
|
||||
}
|
||||
if (maskData[2] & 0x80 && lastStateData[2] & 0x80)
|
||||
KeyBoard('A', 1); // syrena niska
|
||||
else
|
||||
KeyBoard('A', 0); // monostabilny
|
||||
|
||||
/*PORT3*/
|
||||
if (maskData[2] & 0x01) if (lastStateData[2] & 0x01) { // pantograf przedni
|
||||
KeyBoard(0x10, 1); // bistabilny
|
||||
KeyBoard('P', 1);
|
||||
maskSwitch[2] |= 0x01;
|
||||
bitSwitch[2] |= 0x01;
|
||||
}
|
||||
else {
|
||||
maskSwitch[2] |= 0x01;
|
||||
bitSwitch[2] &= ~0x01;
|
||||
KeyBoard('P', 1);
|
||||
}
|
||||
if (maskData[2] & 0x02) if (lastStateData[2] & 0x02) { // pantograf tylni
|
||||
KeyBoard(0x10, 1); // bistabilny
|
||||
KeyBoard('O', 1);
|
||||
maskSwitch[2] |= 0x02;
|
||||
bitSwitch[2] |= 0x02;
|
||||
}
|
||||
else {
|
||||
maskSwitch[2] |= 0x02;
|
||||
bitSwitch[2] &= ~0x02;
|
||||
KeyBoard('O', 1);
|
||||
}
|
||||
if (maskData[2] & 0x04) if (lastStateData[2] & 0x04) { // przyhamowanie przy poślizgu
|
||||
KeyBoard(0x10, 1); // monostabilny
|
||||
KeyBoard(0x0D, 1);
|
||||
}
|
||||
else {
|
||||
|
||||
if (maskSwitch[3] & 0x01)
|
||||
{
|
||||
if (bitSwitch[3] & 0x01)
|
||||
{
|
||||
KeyBoard('J', 0);
|
||||
KeyBoard(0x10, 0);
|
||||
}
|
||||
else
|
||||
KeyBoard('J', 0);
|
||||
maskSwitch[3] &= ~0x01;
|
||||
}
|
||||
KeyBoard(0x0D, 0);
|
||||
KeyBoard(0x10, 0);
|
||||
}
|
||||
/*if(maskData[2] & 0x08) if (lastStateData[2] & 0x08){ // przyciemnienie świateł
|
||||
KeyBoard(' ',0); // bistabilny
|
||||
KeyBoard(0x10,1);
|
||||
KeyBoard(' ',1);
|
||||
}else{
|
||||
KeyBoard(' ',0);
|
||||
KeyBoard(0x10,0);
|
||||
KeyBoard(' ',1);
|
||||
}
|
||||
if(maskData[2] & 0x10) if (lastStateData[2] & 0x10) { // przyciemnienie świateł
|
||||
KeyBoard(' ',0); // bistabilny
|
||||
KeyBoard(0x11,1);
|
||||
KeyBoard(' ',1);
|
||||
}else{
|
||||
KeyBoard(' ',0);
|
||||
KeyBoard(0x11,0);
|
||||
KeyBoard(' ',1);
|
||||
}*/
|
||||
if (maskData[2] & 0x20) if (lastStateData[2] & 0x20) KeyBoard(0x66, 1); // odluźniacz
|
||||
else KeyBoard(0x66, 0); // monostabilny
|
||||
if (maskData[2] & 0x40) if (lastStateData[2] & 0x40) { // syrena wysoka
|
||||
KeyBoard(0x10, 1); // monostabilny
|
||||
KeyBoard('A', 1);
|
||||
}
|
||||
else {
|
||||
KeyBoard('A', 0);
|
||||
KeyBoard(0x10, 0);
|
||||
}
|
||||
if (maskData[2] & 0x80) if (lastStateData[2] & 0x80) KeyBoard('A', 1); // syrena niska
|
||||
else KeyBoard('A', 0); // monostabilny
|
||||
|
||||
if (maskData[3] & 0x01 && lastStateData[3] & 0x01)
|
||||
{ // bateria
|
||||
KeyBoard(0x10, 1); // bistabilny
|
||||
KeyBoard('J', 1);
|
||||
maskSwitch[3] |= 0x01;
|
||||
bitSwitch[3] |= 0x01;
|
||||
}
|
||||
else
|
||||
{
|
||||
maskSwitch[3] |= 0x01;
|
||||
bitSwitch[3] &= ~0x01;
|
||||
KeyBoard('J', 1);
|
||||
}
|
||||
|
||||
//PORT3
|
||||
|
||||
if (maskSwitch[3] & 0x01) {
|
||||
if (bitSwitch[3] & 0x01) {
|
||||
KeyBoard('J', 0);
|
||||
KeyBoard(0x10, 0);
|
||||
}
|
||||
else KeyBoard('J', 0);
|
||||
maskSwitch[3] &= ~0x01;
|
||||
}
|
||||
|
||||
if (maskData[3] & 0x01) if (lastStateData[3] & 0x01) { // bateria
|
||||
KeyBoard(0x10, 1); // bistabilny
|
||||
KeyBoard('J', 1);
|
||||
maskSwitch[3] |= 0x01;
|
||||
bitSwitch[3] |= 0x01;
|
||||
}
|
||||
else {
|
||||
maskSwitch[3] |= 0x01;
|
||||
bitSwitch[3] &= ~0x01;
|
||||
KeyBoard('J', 1);
|
||||
}
|
||||
|
||||
/*
|
||||
if(maskData[3] & 0x04 && lastStateData[1] & 0x04) { KeyBoard(0x10,1);
|
||||
@@ -790,7 +748,7 @@ void MWDComm::CheckData() // sprawdzanie wejść cyfrowych i odpowiednie sterowa
|
||||
WriteDataBuff[6] &= ~(1 << 3);
|
||||
}
|
||||
|
||||
void MWDComm::KeyBoard(int key, bool s) // emulacja klawiatury
|
||||
void TMWDComm::KeyBoard(int key, bool s) // emulacja klawiatury
|
||||
{
|
||||
INPUT ip;
|
||||
// Set up a generic keyboard event.
|
||||
|
||||
@@ -19,48 +19,53 @@ http://mozilla.org/MPL/2.0/.
|
||||
#define MWDH
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
#define BYTETOWRITE 31 // ilość bajtów przesyłanych z MaSzyny
|
||||
#define BYTETOREAD 16 // ilość bajtów przesyłanych do MaSzyny
|
||||
|
||||
typedef unsigned char BYTE;
|
||||
typedef unsigned long DWORD;
|
||||
|
||||
class MWDComm
|
||||
class TMWDComm
|
||||
{
|
||||
private:
|
||||
int MWDTime; //
|
||||
char lastStateData[6], maskData[6], maskSwitch[6], bitSwitch[6];
|
||||
int bocznik, nastawnik, kierunek;
|
||||
char bnkMask;
|
||||
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 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;
|
||||
//void CheckData2();
|
||||
|
||||
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
|
||||
bool bRysik1H;
|
||||
bool bRysik1L;
|
||||
bool bRysik2H;
|
||||
bool bRysik2L;
|
||||
|
||||
// zmienne do rysików HASLERA
|
||||
bool bSHPstate;
|
||||
bool bPrzejazdSHP;
|
||||
bool bKabina1;
|
||||
bool bKabina2;
|
||||
bool bHamowanie;
|
||||
bool bCzuwak;
|
||||
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
|
||||
|
||||
float fAnalog[4]; // trzymanie danych z wejść analogowych
|
||||
// zmienne do rysików HASLERA
|
||||
bool bSHPstate;
|
||||
bool bPrzejazdSHP;
|
||||
bool bKabina1;
|
||||
bool bKabina2;
|
||||
bool bHamowanie;
|
||||
bool bCzuwak;
|
||||
|
||||
unsigned int uiAnalog[4]; // trzymanie danych z wejść analogowych
|
||||
|
||||
BYTE ReadDataBuff[17]; // bufory danych
|
||||
BYTE WriteDataBuff[31];
|
||||
BYTE ReadDataBuff[BYTETOREAD]; //17]; // bufory danych
|
||||
BYTE WriteDataBuff[BYTETOWRITE]; //31];
|
||||
|
||||
MWDComm(); // konstruktor
|
||||
~MWDComm(); // destruktor
|
||||
TMWDComm(); // konstruktor
|
||||
~TMWDComm(); // destruktor
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user