mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-18 00:49:19 +02:00
Konwersja na UTF-8
Konwersja na UTF-8 Dodany nowy warunek dla formatera aby nie sortował includów.
This commit is contained in:
@@ -11,4 +11,5 @@ AllowShortBlocksOnASingleLine: false
|
|||||||
AllowShortIfStatementsOnASingleLine: false
|
AllowShortIfStatementsOnASingleLine: false
|
||||||
AllowShortFunctionsOnASingleLine: Empty
|
AllowShortFunctionsOnASingleLine: Empty
|
||||||
ColumnLimit: 100
|
ColumnLimit: 100
|
||||||
|
SortIncludes: false
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -32,14 +32,14 @@ bool TLPT::Connect(int port)
|
|||||||
OutPort = (OutPortType)GetProcAddress(hDLL, "Out32");
|
OutPort = (OutPortType)GetProcAddress(hDLL, "Out32");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return false; // MessageBox(NULL,"ERROR","B³¹d przy ³adowaniu pliku",MB_OK);
|
return false; // MessageBox(NULL,"ERROR","Błąd przy ładowaniu pliku",MB_OK);
|
||||||
address =
|
address =
|
||||||
port; //&0xFFFFFC; //ostatnie 2 bity maj¹ byæ zerowe -> a niech sobie OUT-uj¹, gdzie chc¹
|
port; //&0xFFFFFC; //ostatnie 2 bity mają być zerowe -> a niech sobie OUT-ują, gdzie chcą
|
||||||
switch (address) // nie dotyczy 0x3BC
|
switch (address) // nie dotyczy 0x3BC
|
||||||
{
|
{
|
||||||
case 0x0378:
|
case 0x0378:
|
||||||
case 0x0278:
|
case 0x0278:
|
||||||
OutPort(address + 0x402, 0); // SPP, czyli jednokierunkowe wyjœcie
|
OutPort(address + 0x402, 0); // SPP, czyli jednokierunkowe wyjście
|
||||||
break;
|
break;
|
||||||
case 0xBC00:
|
case 0xBC00:
|
||||||
case 0xBD00:
|
case 0xBD00:
|
||||||
@@ -49,6 +49,6 @@ bool TLPT::Connect(int port)
|
|||||||
};
|
};
|
||||||
|
|
||||||
void TLPT::Out(int x)
|
void TLPT::Out(int x)
|
||||||
{ // wys³anie bajtu do portu
|
{ // wysłanie bajtu do portu
|
||||||
OutPort(address, x);
|
OutPort(address, x);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -8,11 +8,11 @@ http://mozilla.org/MPL/2.0/.
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Program obsługi portu COM i innych na potrzeby sterownika MWDevice
|
Program obsługi portu COM i innych na potrzeby sterownika MWDevice
|
||||||
(oraz innych wykorzystujących komunikację przez port COM)
|
(oraz innych wykorzystujących komunikację przez port COM)
|
||||||
dla Symulatora Pojazdów Szynowych MaSzyna
|
dla Symulatora Pojazdów Szynowych MaSzyna
|
||||||
author: Maciej Witek 2016
|
author: Maciej Witek 2016
|
||||||
Autor nie ponosi odpowiedzialności za niewłaciwe używanie lub działanie programu!
|
Autor nie ponosi odpowiedzialności za niewłaciwe używanie lub działanie programu!
|
||||||
*/
|
*/
|
||||||
#include "stdafx.h"
|
#include "stdafx.h"
|
||||||
#include "MWD.h"
|
#include "MWD.h"
|
||||||
@@ -22,8 +22,8 @@ http://mozilla.org/MPL/2.0/.
|
|||||||
|
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
|
||||||
#define BYTETOWRITE 31 /* ilość bajtów przesyłanych z MaSzyny*/
|
#define BYTETOWRITE 31 /* ilość bajtów przesyłanych z MaSzyny*/
|
||||||
#define BYTETOREAD 16 /* ilość bajtów przesyłanych do MaSzyny*/
|
#define BYTETOREAD 16 /* ilość bajtów przesyłanych do MaSzyny*/
|
||||||
|
|
||||||
HANDLE hComm;
|
HANDLE hComm;
|
||||||
|
|
||||||
@@ -32,7 +32,7 @@ MWDComm::MWDComm() // konstruktor
|
|||||||
MWDTime = 0;
|
MWDTime = 0;
|
||||||
bSHPstate = false;
|
bSHPstate = false;
|
||||||
bPrzejazdSHP = false;
|
bPrzejazdSHP = false;
|
||||||
bKabina1 = true; // pasuje wyciągnąć dane na temat kabiny i ustawiać te dwa parametry!
|
bKabina1 = true; // pasuje wyciągnąć dane na temat kabiny i ustawiać te dwa parametry!
|
||||||
bKabina2 = false;
|
bKabina2 = false;
|
||||||
bHamowanie = false;
|
bHamowanie = false;
|
||||||
bCzuwak = false;
|
bCzuwak = false;
|
||||||
@@ -134,7 +134,7 @@ bool MWDComm::Close() // zamykanie portu COM
|
|||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
Sleep(100);
|
Sleep(100);
|
||||||
SendData(); // wysyłanie do pulpitu: zatrzymanie haslera i zgaszenie lampek
|
SendData(); // wysyłanie do pulpitu: zatrzymanie haslera i zgaszenie lampek
|
||||||
Sleep(700);
|
Sleep(700);
|
||||||
CloseHandle(hComm);
|
CloseHandle(hComm);
|
||||||
WriteLog("COM is close!");
|
WriteLog("COM is close!");
|
||||||
@@ -156,7 +156,7 @@ bool MWDComm::ReadData() // odbieranie danych + odczyta danych analogowych i zap
|
|||||||
|
|
||||||
fAnalog[0] =
|
fAnalog[0] =
|
||||||
(float)((ReadDataBuff[9] << 8) + ReadDataBuff[8]) /
|
(float)((ReadDataBuff[9] << 8) + ReadDataBuff[8]) /
|
||||||
Global::fMWDAnalogCalib[0][3]; // 4095.0f; //max wartosc wynikająca z rozdzielczości
|
Global::fMWDAnalogCalib[0][3]; // 4095.0f; //max wartosc wynikająca z rozdzielczości
|
||||||
fAnalog[1] =
|
fAnalog[1] =
|
||||||
(float)((ReadDataBuff[11] << 8) + ReadDataBuff[10]) / Global::fMWDAnalogCalib[1][3];
|
(float)((ReadDataBuff[11] << 8) + ReadDataBuff[10]) / Global::fMWDAnalogCalib[1][3];
|
||||||
fAnalog[2] =
|
fAnalog[2] =
|
||||||
@@ -168,7 +168,7 @@ bool MWDComm::ReadData() // odbieranie danych + odczyta danych analogowych i zap
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MWDComm::SendData() // wysyłanie danych
|
bool MWDComm::SendData() // wysyłanie danych
|
||||||
{
|
{
|
||||||
DWORD bytes_write;
|
DWORD bytes_write;
|
||||||
DWORD fdwEvtMask;
|
DWORD fdwEvtMask;
|
||||||
@@ -178,7 +178,7 @@ bool MWDComm::SendData() // wysy
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MWDComm::Run() // wywoływanie obsługi MWD + generacja większego opóźnienia
|
bool MWDComm::Run() // wywoływanie obsługi MWD + generacja większego opóźnienia
|
||||||
{
|
{
|
||||||
MWDTime++;
|
MWDTime++;
|
||||||
if (!(MWDTime % 5))
|
if (!(MWDTime % 5))
|
||||||
@@ -193,14 +193,14 @@ bool MWDComm::Run() // wywo
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
WriteLog("Port COM: connection ERROR!");
|
WriteLog("Port COM: connection ERROR!");
|
||||||
// może spróbować się połączyć znowu?
|
// może spróbować się połączyć znowu?
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
MWDTime = 0;
|
MWDTime = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MWDComm::CheckData() // sprawdzanie wejść cyfrowych i odpowiednie sterowanie maszyną
|
void MWDComm::CheckData() // sprawdzanie wejść cyfrowych i odpowiednie sterowanie maszyną
|
||||||
{
|
{
|
||||||
int i = 0;
|
int i = 0;
|
||||||
while (i < 6)
|
while (i < 6)
|
||||||
@@ -210,23 +210,23 @@ void MWDComm::CheckData() // sprawdzanie wej
|
|||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
Rozpiska portów!
|
Rozpiska portów!
|
||||||
Port0: 0 NC odblok. przek. sprężarki i wentyl. oporów
|
Port0: 0 NC odblok. przek. sprężarki i wentyl. oporów
|
||||||
1 M wyłącznik wył. szybkiego
|
1 M wyłącznik wył. szybkiego
|
||||||
2 Shift+M impuls załączający wył. szybki
|
2 Shift+M impuls załączający wył. szybki
|
||||||
3 N odblok. przekaźników nadmiarowych
|
3 N odblok. przekaźników nadmiarowych
|
||||||
i różnicowego obwodu głównego
|
i różnicowego obwodu głównego
|
||||||
4 NC rezerwa
|
4 NC rezerwa
|
||||||
5 Ctrl+N odblok. przek. nadmiarowych
|
5 Ctrl+N odblok. przek. nadmiarowych
|
||||||
przetwornicy, ogrzewania pociągu i różnicowych obw. pomocniczych
|
przetwornicy, ogrzewania pociągu i różnicowych obw. pomocniczych
|
||||||
6 L wył. styczników liniowych
|
6 L wył. styczników liniowych
|
||||||
7 SPACE kasowanie czuwaka
|
7 SPACE kasowanie czuwaka
|
||||||
|
|
||||||
Port1: 0 NC
|
Port1: 0 NC
|
||||||
1 (Shift) X przetwornica
|
1 (Shift) X przetwornica
|
||||||
2 (Shift) C sprężarka
|
2 (Shift) C sprężarka
|
||||||
3 S piasecznice
|
3 S piasecznice
|
||||||
4 (Shift) H ogrzewanie składu
|
4 (Shift) H ogrzewanie składu
|
||||||
5 przel. hamowania Shift+B
|
5 przel. hamowania Shift+B
|
||||||
pspbpwy Ctrl+B pospieszny B towarowy
|
pspbpwy Ctrl+B pospieszny B towarowy
|
||||||
6 przel. hamowania
|
6 przel. hamowania
|
||||||
@@ -234,10 +234,10 @@ void MWDComm::CheckData() // sprawdzanie wej
|
|||||||
|
|
||||||
Port2: 0 (Shift) P pantograf przedni
|
Port2: 0 (Shift) P pantograf przedni
|
||||||
1 (Shift) O pantograf tylni
|
1 (Shift) O pantograf tylni
|
||||||
2 ENTER przyhamowanie przy poślizgu
|
2 ENTER przyhamowanie przy poślizgu
|
||||||
3 () przyciemnienie świateł
|
3 () przyciemnienie świateł
|
||||||
4 () przyciemnienie świateł
|
4 () przyciemnienie świateł
|
||||||
5 NUM6 odluźniacz
|
5 NUM6 odluźniacz
|
||||||
6 a syrena lok W
|
6 a syrena lok W
|
||||||
7 A syrena lok N
|
7 A syrena lok N
|
||||||
|
|
||||||
@@ -251,18 +251,18 @@ void MWDComm::CheckData() // sprawdzanie wej
|
|||||||
7
|
7
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* po przełączeniu bistabilnego najpierw wciskamy klawisz i przy następnym
|
/* po przełączeniu bistabilnego najpierw wciskamy klawisz i przy następnym
|
||||||
wejściu w pętlę MWD puszczamy bo inaczej nie działa
|
wejściu w pętlę MWD puszczamy bo inaczej nie działa
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// wciskanie przycisków klawiatury
|
// wciskanie przycisków klawiatury
|
||||||
/*PORT0*/
|
/*PORT0*/
|
||||||
if (maskData[0] & 0x02 && lastStateData[0] & 0x02)
|
if (maskData[0] & 0x02 && lastStateData[0] & 0x02)
|
||||||
KeyBoard('M', 1); // wyłączenie wyłącznika szybkiego
|
KeyBoard('M', 1); // wyłączenie wyłącznika szybkiego
|
||||||
else
|
else
|
||||||
KeyBoard('M', 0); // monostabilny
|
KeyBoard('M', 0); // monostabilny
|
||||||
if (maskData[0] & 0x04 && lastStateData[0] & 0x04)
|
if (maskData[0] & 0x04 && lastStateData[0] & 0x04)
|
||||||
{ // impuls załączający wyłącznik szybki
|
{ // impuls załączający wyłącznik szybki
|
||||||
KeyBoard(0x10, 1); // monostabilny
|
KeyBoard(0x10, 1); // monostabilny
|
||||||
KeyBoard('M', 1);
|
KeyBoard('M', 1);
|
||||||
}
|
}
|
||||||
@@ -272,12 +272,12 @@ void MWDComm::CheckData() // sprawdzanie wej
|
|||||||
KeyBoard(0x10, 0);
|
KeyBoard(0x10, 0);
|
||||||
}
|
}
|
||||||
if (maskData[0] & 0x08 && lastStateData[0] & 0x08)
|
if (maskData[0] & 0x08 && lastStateData[0] & 0x08)
|
||||||
KeyBoard('N', 1); // odblok nadmiarowego silników trakcyjnych
|
KeyBoard('N', 1); // odblok nadmiarowego silników trakcyjnych
|
||||||
else
|
else
|
||||||
KeyBoard('N', 0); // monostabilny
|
KeyBoard('N', 0); // monostabilny
|
||||||
if (maskData[0] & 0x20 && lastStateData[0] & 0x20)
|
if (maskData[0] & 0x20 && lastStateData[0] & 0x20)
|
||||||
{ // odblok nadmiarowego przetwornicy, ogrzewania poc.
|
{ // odblok nadmiarowego przetwornicy, ogrzewania poc.
|
||||||
KeyBoard(0x11, 1); // różnicowego obwodów pomocniczych
|
KeyBoard(0x11, 1); // różnicowego obwodów pomocniczych
|
||||||
KeyBoard('N', 1); // monostabilny
|
KeyBoard('N', 1); // monostabilny
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -286,7 +286,7 @@ void MWDComm::CheckData() // sprawdzanie wej
|
|||||||
KeyBoard(0x11, 0);
|
KeyBoard(0x11, 0);
|
||||||
}
|
}
|
||||||
if (maskData[0] & 0x40 && lastStateData[0] & 0x40)
|
if (maskData[0] & 0x40 && lastStateData[0] & 0x40)
|
||||||
KeyBoard('L', 1); // wył. styczników liniowych
|
KeyBoard('L', 1); // wył. styczników liniowych
|
||||||
else
|
else
|
||||||
KeyBoard('L', 0); // monostabilny
|
KeyBoard('L', 0); // monostabilny
|
||||||
if (maskData[0] & 0x80 && lastStateData[0] & 0x80)
|
if (maskData[0] & 0x80 && lastStateData[0] & 0x80)
|
||||||
@@ -365,7 +365,7 @@ void MWDComm::CheckData() // sprawdzanie wej
|
|||||||
KeyBoard('X', 1);
|
KeyBoard('X', 1);
|
||||||
}
|
}
|
||||||
if (maskData[1] & 0x04 && lastStateData[1] & 0x04)
|
if (maskData[1] & 0x04 && lastStateData[1] & 0x04)
|
||||||
{ // sprężarka
|
{ // sprężarka
|
||||||
KeyBoard(0x10, 1); // bistabilny
|
KeyBoard(0x10, 1); // bistabilny
|
||||||
KeyBoard('C', 1);
|
KeyBoard('C', 1);
|
||||||
maskSwitch[1] |= 0x04;
|
maskSwitch[1] |= 0x04;
|
||||||
@@ -382,7 +382,7 @@ void MWDComm::CheckData() // sprawdzanie wej
|
|||||||
else
|
else
|
||||||
KeyBoard('S', 0); // monostabilny
|
KeyBoard('S', 0); // monostabilny
|
||||||
if (maskData[1] & 0x10 && lastStateData[1] & 0x10)
|
if (maskData[1] & 0x10 && lastStateData[1] & 0x10)
|
||||||
{ // ogrzewanie składu
|
{ // ogrzewanie składu
|
||||||
KeyBoard(0x11, 1); // bistabilny
|
KeyBoard(0x11, 1); // bistabilny
|
||||||
KeyBoard('H', 1);
|
KeyBoard('H', 1);
|
||||||
maskSwitch[1] |= 0x10;
|
maskSwitch[1] |= 0x10;
|
||||||
@@ -395,7 +395,7 @@ void MWDComm::CheckData() // sprawdzanie wej
|
|||||||
KeyBoard('H', 1);
|
KeyBoard('H', 1);
|
||||||
}
|
}
|
||||||
if (maskData[1] & 0x20 || maskData[1] & 0x40)
|
if (maskData[1] & 0x20 || maskData[1] & 0x40)
|
||||||
{ // przełącznik hamowania
|
{ // przełącznik hamowania
|
||||||
if (lastStateData[1] & 0x20)
|
if (lastStateData[1] & 0x20)
|
||||||
{ // Shift+B
|
{ // Shift+B
|
||||||
KeyBoard(0x10, 1);
|
KeyBoard(0x10, 1);
|
||||||
@@ -475,7 +475,7 @@ void MWDComm::CheckData() // sprawdzanie wej
|
|||||||
KeyBoard('O', 1);
|
KeyBoard('O', 1);
|
||||||
}
|
}
|
||||||
if (maskData[2] & 0x04 && lastStateData[2] & 0x04)
|
if (maskData[2] & 0x04 && lastStateData[2] & 0x04)
|
||||||
{ // przyhamowanie przy poślizgu
|
{ // przyhamowanie przy poślizgu
|
||||||
KeyBoard(0x10, 1); // monostabilny
|
KeyBoard(0x10, 1); // monostabilny
|
||||||
KeyBoard(0x0D, 1);
|
KeyBoard(0x0D, 1);
|
||||||
}
|
}
|
||||||
@@ -485,7 +485,7 @@ void MWDComm::CheckData() // sprawdzanie wej
|
|||||||
KeyBoard(0x0D, 0);
|
KeyBoard(0x0D, 0);
|
||||||
KeyBoard(0x10, 0);
|
KeyBoard(0x10, 0);
|
||||||
}
|
}
|
||||||
/*if(maskData[2] & 0x08 && lastStateData[2] & 0x08){ // przyciemnienie świateł
|
/*if(maskData[2] & 0x08 && lastStateData[2] & 0x08){ // przyciemnienie świateł
|
||||||
KeyBoard(' ',0); // bistabilny
|
KeyBoard(' ',0); // bistabilny
|
||||||
KeyBoard(0x10,1);
|
KeyBoard(0x10,1);
|
||||||
KeyBoard(' ',1);
|
KeyBoard(' ',1);
|
||||||
@@ -494,7 +494,7 @@ void MWDComm::CheckData() // sprawdzanie wej
|
|||||||
KeyBoard(0x10,0);
|
KeyBoard(0x10,0);
|
||||||
KeyBoard(' ',1);
|
KeyBoard(' ',1);
|
||||||
}
|
}
|
||||||
if(maskData[2] & 0x10 && lastStateData[2] & 0x10) { // przyciemnienie świateł
|
if(maskData[2] & 0x10 && lastStateData[2] & 0x10) { // przyciemnienie świateł
|
||||||
KeyBoard(' ',0); // bistabilny
|
KeyBoard(' ',0); // bistabilny
|
||||||
KeyBoard(0x11,1);
|
KeyBoard(0x11,1);
|
||||||
KeyBoard(' ',1);
|
KeyBoard(' ',1);
|
||||||
@@ -504,7 +504,7 @@ void MWDComm::CheckData() // sprawdzanie wej
|
|||||||
KeyBoard(' ',1);
|
KeyBoard(' ',1);
|
||||||
}*/
|
}*/
|
||||||
if (maskData[2] & 0x20 && lastStateData[2] & 0x20)
|
if (maskData[2] & 0x20 && lastStateData[2] & 0x20)
|
||||||
KeyBoard(0x66, 1); // odluźniacz
|
KeyBoard(0x66, 1); // odluźniacz
|
||||||
else
|
else
|
||||||
KeyBoard(0x66, 0); // monostabilny
|
KeyBoard(0x66, 0); // monostabilny
|
||||||
if (maskData[2] & 0x40 && lastStateData[2] & 0x40)
|
if (maskData[2] & 0x40 && lastStateData[2] & 0x40)
|
||||||
@@ -713,28 +713,28 @@ void MWDComm::CheckData() // sprawdzanie wej
|
|||||||
{
|
{
|
||||||
bnkMask |= 1;
|
bnkMask |= 1;
|
||||||
nastawnik++;
|
nastawnik++;
|
||||||
KeyBoard(0x6B, 1); // wciśnij + i dodaj 1 do nastawnika
|
KeyBoard(0x6B, 1); // wciśnij + i dodaj 1 do nastawnika
|
||||||
}
|
}
|
||||||
if (nastawnik > ReadDataBuff[6])
|
if (nastawnik > ReadDataBuff[6])
|
||||||
{
|
{
|
||||||
bnkMask |= 2;
|
bnkMask |= 2;
|
||||||
nastawnik--;
|
nastawnik--;
|
||||||
KeyBoard(0x6D, 1); // wciśnij - i odejmij 1 do nastawnika
|
KeyBoard(0x6D, 1); // wciśnij - i odejmij 1 do nastawnika
|
||||||
}
|
}
|
||||||
if (bocznik < ReadDataBuff[7])
|
if (bocznik < ReadDataBuff[7])
|
||||||
{
|
{
|
||||||
bnkMask |= 4;
|
bnkMask |= 4;
|
||||||
bocznik++;
|
bocznik++;
|
||||||
KeyBoard(0x6F, 1); // wciśnij / i dodaj 1 do bocznika
|
KeyBoard(0x6F, 1); // wciśnij / i dodaj 1 do bocznika
|
||||||
}
|
}
|
||||||
if (bocznik > ReadDataBuff[7])
|
if (bocznik > ReadDataBuff[7])
|
||||||
{
|
{
|
||||||
bnkMask |= 8;
|
bnkMask |= 8;
|
||||||
bocznik--;
|
bocznik--;
|
||||||
KeyBoard(0x6A, 1); // wciśnij * i odejmij 1 do bocznika
|
KeyBoard(0x6A, 1); // wciśnij * i odejmij 1 do bocznika
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Obsługa HASLERA */
|
/* Obsługa HASLERA */
|
||||||
if (ReadDataBuff[0] & 0x80)
|
if (ReadDataBuff[0] & 0x80)
|
||||||
bCzuwak = true;
|
bCzuwak = true;
|
||||||
|
|
||||||
|
|||||||
@@ -8,11 +8,11 @@ http://mozilla.org/MPL/2.0/.
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Program obsługi portu COM i innych na potrzeby sterownika MWDevice
|
Program obsługi portu COM i innych na potrzeby sterownika MWDevice
|
||||||
(oraz innych wykorzystujących komunikację przez port COM)
|
(oraz innych wykorzystujących komunikację przez port COM)
|
||||||
dla Symulatora Pojazdów Szynowych MaSzyna
|
dla Symulatora Pojazdów Szynowych MaSzyna
|
||||||
author: Maciej Witek 2016
|
author: Maciej Witek 2016
|
||||||
Autor nie ponosi odpowiedzialności za niewłaciwe używanie lub działanie programu!
|
Autor nie ponosi odpowiedzialności za niewłaciwe używanie lub działanie programu!
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MWDH
|
#ifndef MWDH
|
||||||
@@ -32,7 +32,7 @@ class MWDComm
|
|||||||
|
|
||||||
bool ReadData(); // BYTE *pReadDataBuff);
|
bool ReadData(); // BYTE *pReadDataBuff);
|
||||||
bool SendData(); // BYTE *pWriteDataBuff);
|
bool SendData(); // BYTE *pWriteDataBuff);
|
||||||
void CheckData(); // sprawdzanie zmian wejść i kontrola mazaków HASLERA
|
void CheckData(); // sprawdzanie zmian wejść i kontrola mazaków HASLERA
|
||||||
void KeyBoard(int key, bool s);
|
void KeyBoard(int key, bool s);
|
||||||
|
|
||||||
bool bRysik1H;
|
bool bRysik1H;
|
||||||
@@ -42,11 +42,11 @@ class MWDComm
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
bool Open(); // Otwarcie portu
|
bool Open(); // Otwarcie portu
|
||||||
bool Close(); // Zamknięcie portu
|
bool Close(); // Zamknięcie portu
|
||||||
bool Run(); // Obsługa portu
|
bool Run(); // Obsługa portu
|
||||||
bool GetMWDState(); // sprawdź czy port jest otwarty, 0 zamknięty, 1 otwarty
|
bool GetMWDState(); // sprawdź czy port jest otwarty, 0 zamknięty, 1 otwarty
|
||||||
|
|
||||||
// zmienne do rysików HASLERA
|
// zmienne do rysików HASLERA
|
||||||
bool bSHPstate;
|
bool bSHPstate;
|
||||||
bool bPrzejazdSHP;
|
bool bPrzejazdSHP;
|
||||||
bool bKabina1;
|
bool bKabina1;
|
||||||
@@ -54,7 +54,7 @@ class MWDComm
|
|||||||
bool bHamowanie;
|
bool bHamowanie;
|
||||||
bool bCzuwak;
|
bool bCzuwak;
|
||||||
|
|
||||||
float fAnalog[4]; // trzymanie danych z wejść analogowych
|
float fAnalog[4]; // trzymanie danych z wejść analogowych
|
||||||
|
|
||||||
BYTE ReadDataBuff[17]; // bufory danych
|
BYTE ReadDataBuff[17]; // bufory danych
|
||||||
BYTE WriteDataBuff[31];
|
BYTE WriteDataBuff[31];
|
||||||
@@ -65,37 +65,37 @@ class MWDComm
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
INFO - zmiany dokonane w innych plikach niezbędne do prawidłowego działania:
|
INFO - zmiany dokonane w innych plikach niezbędne do prawidłowego działania:
|
||||||
|
|
||||||
Console.cpp:
|
Console.cpp:
|
||||||
Console::AnalogCalibrateGet - obsługa kranów hamulców
|
Console::AnalogCalibrateGet - obsługa kranów hamulców
|
||||||
Console::Update - wywoływanie obsługi MWD
|
Console::Update - wywoływanie obsługi MWD
|
||||||
Console::ValueSet - obsługa manometrów, mierników WN (PWM-y)
|
Console::ValueSet - obsługa manometrów, mierników WN (PWM-y)
|
||||||
Console::BitsUpdate - ustawiania lampek
|
Console::BitsUpdate - ustawiania lampek
|
||||||
Console::Off - zamykanie portu COM
|
Console::Off - zamykanie portu COM
|
||||||
Console::On - otwieranie portu COM
|
Console::On - otwieranie portu COM
|
||||||
Console::~Console - usuwanie MWD (jest też w Console OFF)
|
Console::~Console - usuwanie MWD (jest też w Console OFF)
|
||||||
|
|
||||||
MWDComm * Console::MWD = NULL; - luzem, obiekt i wskaźnik(?)
|
MWDComm * Console::MWD = NULL; - luzem, obiekt i wskaźnik(?)
|
||||||
dodatkowo zmieniłem int na long int dla BitSet i BitClear oraz iBits
|
dodatkowo zmieniłem int na long int dla BitSet i BitClear oraz iBits
|
||||||
|
|
||||||
Train.cpp:
|
Train.cpp:
|
||||||
if (Global::iFeedbackMode == 5) - pobieranie prędkości, manometrów i mierników WN
|
if (Global::iFeedbackMode == 5) - pobieranie prędkości, manometrów i mierników WN
|
||||||
if (ggBrakeCtrl.SubModel) - możliwość sterowania hamulcem zespolonym
|
if (ggBrakeCtrl.SubModel) - możliwość sterowania hamulcem zespolonym
|
||||||
if (ggLocalBrake.SubModel) - możliwość sterowania hamulcem lokomotywy
|
if (ggLocalBrake.SubModel) - możliwość sterowania hamulcem lokomotywy
|
||||||
|
|
||||||
Globals.h:
|
Globals.h:
|
||||||
dodano zmienne dla MWD
|
dodano zmienne dla MWD
|
||||||
Globals.cpp:
|
Globals.cpp:
|
||||||
dodano inicjalizaję zmiennych i odczyt z ini ustawień
|
dodano inicjalizaję zmiennych i odczyt z ini ustawień
|
||||||
|
|
||||||
Wpisy do pliku eu07.ini
|
Wpisy do pliku eu07.ini
|
||||||
|
|
||||||
//maciek001 MWD
|
//maciek001 MWD
|
||||||
comportname COM3 // wybór portu COM
|
comportname COM3 // wybór portu COM
|
||||||
mwdbaudrate 500000
|
mwdbaudrate 500000
|
||||||
|
|
||||||
mwdbreakenable yes // czy załączyć sterowanie hamulcami? blokuje klawiature
|
mwdbreakenable yes // czy załączyć sterowanie hamulcami? blokuje klawiature
|
||||||
mwdbreak 1 255 0 255 // hamulec zespolony
|
mwdbreak 1 255 0 255 // hamulec zespolony
|
||||||
mwdbreak 2 255 0 255 // hamulec lokomotywy
|
mwdbreak 2 255 0 255 // hamulec lokomotywy
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ TPoKeys55::TPoKeys55()
|
|||||||
fAnalog[0] = fAnalog[1] = fAnalog[2] = fAnalog[3] = fAnalog[4] = fAnalog[5] = fAnalog[6] = -1.0;
|
fAnalog[0] = fAnalog[1] = fAnalog[2] = fAnalog[3] = fAnalog[4] = fAnalog[5] = fAnalog[6] = -1.0;
|
||||||
iPWM[0] = iPWM[1] = iPWM[2] = iPWM[3] = iPWM[4] = iPWM[5] = iPWM[6] = 0;
|
iPWM[0] = iPWM[1] = iPWM[2] = iPWM[3] = iPWM[4] = iPWM[5] = iPWM[6] = 0;
|
||||||
iPWM[7] = 4096;
|
iPWM[7] = 4096;
|
||||||
iInputs[0] = 0; // czy normalnie s¹ w stanie wysokim?
|
iInputs[0] = 0; // czy normalnie są w stanie wysokim?
|
||||||
iRepeats = 0;
|
iRepeats = 0;
|
||||||
bNoError = true;
|
bNoError = true;
|
||||||
};
|
};
|
||||||
@@ -43,7 +43,7 @@ TPoKeys55::~TPoKeys55()
|
|||||||
};
|
};
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
void TPoKeys55::Close()
|
void TPoKeys55::Close()
|
||||||
{ // roz³¹czenie komunikacji
|
{ // rozłączenie komunikacji
|
||||||
if (WriteHandle != INVALID_HANDLE_VALUE)
|
if (WriteHandle != INVALID_HANDLE_VALUE)
|
||||||
CloseHandle(WriteHandle);
|
CloseHandle(WriteHandle);
|
||||||
WriteHandle = INVALID_HANDLE_VALUE;
|
WriteHandle = INVALID_HANDLE_VALUE;
|
||||||
@@ -53,10 +53,10 @@ void TPoKeys55::Close()
|
|||||||
};
|
};
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
bool TPoKeys55::Connect()
|
bool TPoKeys55::Connect()
|
||||||
{ // Ra: to jest do wyczyszcznia z niepotrzebnych zmiennych i komunikatów
|
{ // Ra: to jest do wyczyszcznia z niepotrzebnych zmiennych i komunikatów
|
||||||
Close();
|
Close();
|
||||||
GUID InterfaceClassGuid = {0x4d1e55b2, 0xf16f, 0x11cf, 0x88, 0xcb, 0x00,
|
GUID InterfaceClassGuid = {0x4d1e55b2, 0xf16f, 0x11cf, 0x88, 0xcb, 0x00,
|
||||||
0x11, 0x11, 0x00, 0x00, 0x30}; // wszystkie HID tak maj¹
|
0x11, 0x11, 0x00, 0x00, 0x30}; // wszystkie HID tak mają
|
||||||
HDEVINFO DeviceInfoTable;
|
HDEVINFO DeviceInfoTable;
|
||||||
PSP_DEVICE_INTERFACE_DATA InterfaceDataStructure = new SP_DEVICE_INTERFACE_DATA;
|
PSP_DEVICE_INTERFACE_DATA InterfaceDataStructure = new SP_DEVICE_INTERFACE_DATA;
|
||||||
PSP_DEVICE_INTERFACE_DETAIL_DATA DetailedInterfaceDataStructure =
|
PSP_DEVICE_INTERFACE_DETAIL_DATA DetailedInterfaceDataStructure =
|
||||||
@@ -192,7 +192,7 @@ bool TPoKeys55::Connect()
|
|||||||
}
|
}
|
||||||
SetupDiDestroyDeviceInfoList(
|
SetupDiDestroyDeviceInfoList(
|
||||||
DeviceInfoTable); // Clean up the old structure we no longer need.
|
DeviceInfoTable); // Clean up the old structure we no longer need.
|
||||||
iRepeats = 0; // nowe szanse na pod³¹czenie
|
iRepeats = 0; // nowe szanse na podłączenie
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
InterfaceIndex++;
|
InterfaceIndex++;
|
||||||
@@ -209,15 +209,15 @@ bool TPoKeys55::Write(unsigned char c, unsigned char b3, unsigned char b4, unsig
|
|||||||
OutputBuffer[0] = 0; // The first byte is the "Report ID" and does not get transmitted over the
|
OutputBuffer[0] = 0; // The first byte is the "Report ID" and does not get transmitted over the
|
||||||
// USB bus. Always set=0.
|
// USB bus. Always set=0.
|
||||||
OutputBuffer[1] = 0xBB; // 0xBB - bajt rozpoznawczy dla PoKeys55
|
OutputBuffer[1] = 0xBB; // 0xBB - bajt rozpoznawczy dla PoKeys55
|
||||||
OutputBuffer[2] = iLastCommand = c; // operacja: 0x31: blokowy odczyt wejϾ
|
OutputBuffer[2] = iLastCommand = c; // operacja: 0x31: blokowy odczyt wejść
|
||||||
OutputBuffer[3] = b3; // np. numer pinu (o 1 mniej ni¿ numer na p³ytce)
|
OutputBuffer[3] = b3; // np. numer pinu (o 1 mniej niż numer na płytce)
|
||||||
OutputBuffer[4] = b4;
|
OutputBuffer[4] = b4;
|
||||||
OutputBuffer[5] = b5;
|
OutputBuffer[5] = b5;
|
||||||
OutputBuffer[6] = 0;
|
OutputBuffer[6] = 0;
|
||||||
OutputBuffer[7] = ++cRequest; // numer ¿¹dania
|
OutputBuffer[7] = ++cRequest; // numer żądania
|
||||||
OutputBuffer[8] = 0;
|
OutputBuffer[8] = 0;
|
||||||
for (int i = 0; i < 8; ++i)
|
for (int i = 0; i < 8; ++i)
|
||||||
OutputBuffer[8] += OutputBuffer[i]; // czy sumowaæ te¿ od 9 do 64?
|
OutputBuffer[8] += OutputBuffer[i]; // czy sumować też od 9 do 64?
|
||||||
// The basic Windows I/O functions WriteFile() and ReadFile() can be used to read and write to
|
// The basic Windows I/O functions WriteFile() and ReadFile() can be used to read and write to
|
||||||
// HID class USB devices
|
// HID class USB devices
|
||||||
//(once we have the read and write handles to the device, which are obtained with CreateFile()).
|
//(once we have the read and write handles to the device, which are obtained with CreateFile()).
|
||||||
@@ -225,7 +225,7 @@ bool TPoKeys55::Write(unsigned char c, unsigned char b3, unsigned char b4, unsig
|
|||||||
WriteFile(WriteHandle, &OutputBuffer, 65, &BytesWritten,
|
WriteFile(WriteHandle, &OutputBuffer, 65, &BytesWritten,
|
||||||
0); // Blocking function, unless an "overlapped" structure is used
|
0); // Blocking function, unless an "overlapped" structure is used
|
||||||
return (BytesWritten == 65);
|
return (BytesWritten == 65);
|
||||||
// Read(); //odczyt trzeba zrobiæ inaczej - w tym miejscu bêdzie za szybko i nic siê nie odczyta
|
// Read(); //odczyt trzeba zrobić inaczej - w tym miejscu będzie za szybko i nic się nie odczyta
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
@@ -246,18 +246,18 @@ bool TPoKeys55::Read()
|
|||||||
}
|
}
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
bool TPoKeys55::ReadLoop(int i)
|
bool TPoKeys55::ReadLoop(int i)
|
||||||
{ // próbuje odczytaæ (i) razy
|
{ // próbuje odczytać (i) razy
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
if (Read())
|
if (Read())
|
||||||
return true;
|
return true;
|
||||||
Sleep(1); // trochê poczekaæ, a¿ odpowie
|
Sleep(1); // trochę poczekać, aż odpowie
|
||||||
} while (--i);
|
} while (--i);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
std::string TPoKeys55::Version()
|
std::string TPoKeys55::Version()
|
||||||
{ // zwraca numer wersji, funkcja nieoptymalna czasowo (czeka na odpowiedŸ)
|
{ // zwraca numer wersji, funkcja nieoptymalna czasowo (czeka na odpowiedź)
|
||||||
if (!WriteHandle)
|
if (!WriteHandle)
|
||||||
return "";
|
return "";
|
||||||
Write(0x00, 0); // 0x00 - Read serial number, version
|
Write(0x00, 0); // 0x00 - Read serial number, version
|
||||||
@@ -266,17 +266,17 @@ std::string TPoKeys55::Version()
|
|||||||
std::string s = "PoKeys55 #" + std::to_string((InputBuffer[3] << 8) + InputBuffer[4]);
|
std::string s = "PoKeys55 #" + std::to_string((InputBuffer[3] << 8) + InputBuffer[4]);
|
||||||
s += " v" + std::to_string(1 + (InputBuffer[5] >> 4)) + "." + std::to_string(InputBuffer[5] & 15) +
|
s += " v" + std::to_string(1 + (InputBuffer[5] >> 4)) + "." + std::to_string(InputBuffer[5] & 15) +
|
||||||
"." + std::to_string(InputBuffer[6]);
|
"." + std::to_string(InputBuffer[6]);
|
||||||
/* //Ra: pozyskiwanie daty mo¿na sobie darowaæ, jest poniek¹d bez sensu
|
/* //Ra: pozyskiwanie daty można sobie darować, jest poniekąd bez sensu
|
||||||
Write(0x04,0); //0x04 - Read build date: drugi argument zmieniaæ od 0 do 2, uzyskuj¹c
|
Write(0x04,0); //0x04 - Read build date: drugi argument zmieniać od 0 do 2, uzyskując
|
||||||
kolejno po 4 znaki
|
kolejno po 4 znaki
|
||||||
if (ReadLoop(5))
|
if (ReadLoop(5))
|
||||||
{//2: 0x04; 3-6: char 1-4, 5-8, 9-11; (83-65-112-32-32-49-32-50-48-49-49-0=="Sep 1 2011")
|
{//2: 0x04; 3-6: char 1-4, 5-8, 9-11; (83-65-112-32-32-49-32-50-48-49-49-0=="Sep 1 2011")
|
||||||
s+=" ("+AnsiString((char*)InputBuffer+3,4);
|
s+=" ("+AnsiString((char*)InputBuffer+3,4);
|
||||||
Write(0x04,1); //0x04 - Read build date: drugi argument zmieniaæ od 0 do 2, uzyskuj¹c
|
Write(0x04,1); //0x04 - Read build date: drugi argument zmieniać od 0 do 2, uzyskując
|
||||||
kolejno po 4 znaki
|
kolejno po 4 znaki
|
||||||
if (ReadLoop(5))
|
if (ReadLoop(5))
|
||||||
{s+=AnsiString((char*)InputBuffer+3,4);
|
{s+=AnsiString((char*)InputBuffer+3,4);
|
||||||
Write(0x04,2); //0x04 - Read build date: drugi argument zmieniaæ od 0 do 2, uzyskuj¹c
|
Write(0x04,2); //0x04 - Read build date: drugi argument zmieniać od 0 do 2, uzyskując
|
||||||
kolejno po 4 znaki
|
kolejno po 4 znaki
|
||||||
if (ReadLoop(5))
|
if (ReadLoop(5))
|
||||||
s+=AnsiString((char*)InputBuffer+3,3);
|
s+=AnsiString((char*)InputBuffer+3,3);
|
||||||
@@ -297,16 +297,16 @@ bool TPoKeys55::PWM(int x, float y)
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool TPoKeys55::Update(bool pause)
|
bool TPoKeys55::Update(bool pause)
|
||||||
{ // funkcja powinna byæ wywo³ywana regularnie, np. raz w ka¿dej ramce ekranowej
|
{ // funkcja powinna być wywoływana regularnie, np. raz w każdej ramce ekranowej
|
||||||
if (pause)
|
if (pause)
|
||||||
{ // specjalna procedura, jeœli utracone po³¹czenie spowodowa³o pauzê
|
{ // specjalna procedura, jeśli utracone połączenie spowodowało pauzę
|
||||||
iLastCommand = 0; // po³¹czenie zosta³o na nowo otwarte
|
iLastCommand = 0; // połączenie zostało na nowo otwarte
|
||||||
// iFaza=0; //jeden b³¹d i podtrzymanie pauzy jest kontynuowane
|
// iFaza=0; //jeden błąd i podtrzymanie pauzy jest kontynuowane
|
||||||
}
|
}
|
||||||
switch (iFaza)
|
switch (iFaza)
|
||||||
{
|
{
|
||||||
case 0: // uaktualnienie PWM raz na jakiœ czas
|
case 0: // uaktualnienie PWM raz na jakiś czas
|
||||||
OutputBuffer[9] = 0x3F; // maska u¿ytych PWM
|
OutputBuffer[9] = 0x3F; // maska użytych PWM
|
||||||
*((int *)(OutputBuffer + 10)) = iPWM[0]; // PWM1 (pin 22)
|
*((int *)(OutputBuffer + 10)) = iPWM[0]; // PWM1 (pin 22)
|
||||||
*((int *)(OutputBuffer + 14)) = iPWM[1]; // PWM2 (pin 21)
|
*((int *)(OutputBuffer + 14)) = iPWM[1]; // PWM2 (pin 21)
|
||||||
*((int *)(OutputBuffer + 18)) = iPWM[2]; // PWM3 (pin 20)
|
*((int *)(OutputBuffer + 18)) = iPWM[2]; // PWM3 (pin 20)
|
||||||
@@ -314,16 +314,16 @@ bool TPoKeys55::Update(bool pause)
|
|||||||
*((int *)(OutputBuffer + 26)) = iPWM[4]; // PWM5 (pin 18)
|
*((int *)(OutputBuffer + 26)) = iPWM[4]; // PWM5 (pin 18)
|
||||||
*((int *)(OutputBuffer + 30)) = iPWM[5]; // PWM6 (pin 17)
|
*((int *)(OutputBuffer + 30)) = iPWM[5]; // PWM6 (pin 17)
|
||||||
*((int *)(OutputBuffer + 34)) = iPWM[7]; // PWM period
|
*((int *)(OutputBuffer + 34)) = iPWM[7]; // PWM period
|
||||||
if (Write(0xCB, 1)) // wys³anie ustawieñ (1-ustaw, 0-odczyt)
|
if (Write(0xCB, 1)) // wysłanie ustawień (1-ustaw, 0-odczyt)
|
||||||
iRepeats = 0; // informacja, ¿e posz³o dobrze
|
iRepeats = 0; // informacja, że poszło dobrze
|
||||||
++iFaza; // ta faza zosta³a zakoñczona
|
++iFaza; // ta faza została zakończona
|
||||||
// iRepeats=0;
|
// iRepeats=0;
|
||||||
break;
|
break;
|
||||||
case 1: // odczyt wejϾ analogowych - komenda i przetwarzanie
|
case 1: // odczyt wejść analogowych - komenda i przetwarzanie
|
||||||
if (iLastCommand != 0x3A) // asynchroniczne ustawienie kontrolki mo¿e namieszaæ
|
if (iLastCommand != 0x3A) // asynchroniczne ustawienie kontrolki może namieszać
|
||||||
Write(0x3A, 0); // 0x3A - Analog inputs reading – all analog inputs in one command
|
Write(0x3A, 0); // 0x3A - Analog inputs reading – all analog inputs in one command
|
||||||
else if (Read())
|
else if (Read())
|
||||||
{ // jest odebrana ramka i zgodnoœæ numeru ¿¹dania
|
{ // jest odebrana ramka i zgodność numeru żądania
|
||||||
fAnalog[0] = ((InputBuffer[21] << 8) + InputBuffer[22]) / 4095.0f; // pin 47
|
fAnalog[0] = ((InputBuffer[21] << 8) + InputBuffer[22]) / 4095.0f; // pin 47
|
||||||
fAnalog[1] = ((InputBuffer[19] << 8) + InputBuffer[20]) / 4095.0f; // pin 46
|
fAnalog[1] = ((InputBuffer[19] << 8) + InputBuffer[20]) / 4095.0f; // pin 46
|
||||||
fAnalog[2] = ((InputBuffer[17] << 8) + InputBuffer[18]) / 4095.0f; // pin 45
|
fAnalog[2] = ((InputBuffer[17] << 8) + InputBuffer[18]) / 4095.0f; // pin 45
|
||||||
@@ -331,44 +331,44 @@ bool TPoKeys55::Update(bool pause)
|
|||||||
fAnalog[4] = ((InputBuffer[13] << 8) + InputBuffer[14]) / 4095.0f; // pin 43
|
fAnalog[4] = ((InputBuffer[13] << 8) + InputBuffer[14]) / 4095.0f; // pin 43
|
||||||
fAnalog[5] = ((InputBuffer[11] << 8) + InputBuffer[12]) / 4095.0f; // pin 42
|
fAnalog[5] = ((InputBuffer[11] << 8) + InputBuffer[12]) / 4095.0f; // pin 42
|
||||||
fAnalog[6] = ((InputBuffer[9] << 8) + InputBuffer[10]) / 4095.0f; // pin 41
|
fAnalog[6] = ((InputBuffer[9] << 8) + InputBuffer[10]) / 4095.0f; // pin 41
|
||||||
++iFaza; // skoro odczytano, mo¿na przejœæ do kolejnej fazy
|
++iFaza; // skoro odczytano, można przejść do kolejnej fazy
|
||||||
iRepeats = 0; // zerowanie licznika prób
|
iRepeats = 0; // zerowanie licznika prób
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
++iRepeats; // licznik nieudanych prób
|
++iRepeats; // licznik nieudanych prób
|
||||||
break;
|
break;
|
||||||
case 2: // odczyt wejϾ cyfrowych - komenda i przetwarzanie
|
case 2: // odczyt wejść cyfrowych - komenda i przetwarzanie
|
||||||
if (iLastCommand != 0x31) // asynchroniczne ustawienie kontrolki mo¿e namieszaæ
|
if (iLastCommand != 0x31) // asynchroniczne ustawienie kontrolki może namieszać
|
||||||
Write(0x31, 0); // 0x31: blokowy odczyt wejϾ
|
Write(0x31, 0); // 0x31: blokowy odczyt wejść
|
||||||
else if (Read())
|
else if (Read())
|
||||||
{ // jest odebrana ramka i zgodnoœæ numeru ¿¹dania
|
{ // jest odebrana ramka i zgodność numeru żądania
|
||||||
iInputs[0] = *((int *)(InputBuffer + 3)); // odczyt 32 bitów
|
iInputs[0] = *((int *)(InputBuffer + 3)); // odczyt 32 bitów
|
||||||
iFaza = 3; // skoro odczytano, mo¿na kolejny cykl
|
iFaza = 3; // skoro odczytano, można kolejny cykl
|
||||||
iRepeats = 0; // zerowanie licznika prób
|
iRepeats = 0; // zerowanie licznika prób
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
++iRepeats; // licznik nieudanych prób
|
++iRepeats; // licznik nieudanych prób
|
||||||
break;
|
break;
|
||||||
case 3: // ustawienie wyjœæ analogowych, 0..4095 mapowaæ na 0..65520 (<<4)
|
case 3: // ustawienie wyjść analogowych, 0..4095 mapować na 0..65520 (<<4)
|
||||||
if (Write(0x41, 43 - 1, (iPWM[6] >> 4), (iPWM[6] << 4))) // wys³anie ustawieñ
|
if (Write(0x41, 43 - 1, (iPWM[6] >> 4), (iPWM[6] << 4))) // wysłanie ustawień
|
||||||
iRepeats = 0; // informacja, ¿e posz³o dobrze
|
iRepeats = 0; // informacja, że poszło dobrze
|
||||||
iFaza = 0; //++iFaza; //ta faza zosta³a zakoñczona
|
iFaza = 0; //++iFaza; //ta faza została zakończona
|
||||||
// powinno jeszcze przyjϾ potwierdzenie o kodzie 0x41
|
// powinno jeszcze przyjść potwierdzenie o kodzie 0x41
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
iFaza = 0; // na wypadek, gdyby zb³¹dzi³o po jakichœ zmianach w kodzie
|
iFaza = 0; // na wypadek, gdyby zbłądziło po jakichś zmianach w kodzie
|
||||||
// iRepeats=0;
|
// iRepeats=0;
|
||||||
}
|
}
|
||||||
if (!iRepeats)
|
if (!iRepeats)
|
||||||
bNoError = true; // jest OK
|
bNoError = true; // jest OK
|
||||||
else if (iRepeats >= 10) // youBy 2014-07: przy 5 powtórzeniach sieje mi pauz¹ po 2 razy na
|
else if (iRepeats >= 10) // youBy 2014-07: przy 5 powtórzeniach sieje mi pauzą po 2 razy na
|
||||||
// sekundê, a przy 10 jest ok
|
// sekundę, a przy 10 jest ok
|
||||||
{ // przekroczenie liczby prób wymusza kolejn¹ fazê
|
{ // przekroczenie liczby prób wymusza kolejną fazę
|
||||||
++iFaza;
|
++iFaza;
|
||||||
iRepeats = 1; // w nowej fazie nowe szanse, ale nie od 0!
|
iRepeats = 1; // w nowej fazie nowe szanse, ale nie od 0!
|
||||||
bNoError = false; // zg³osiæ b³¹d
|
bNoError = false; // zgłosić błąd
|
||||||
}
|
}
|
||||||
return (bNoError); // true oznacza prawid³owe dzia³anie
|
return (bNoError); // true oznacza prawidłowe działanie
|
||||||
// czy w przypadku b³êdu komunikacji z PoKeys w³¹czaæ pauzê?
|
// czy w przypadku błędu komunikacji z PoKeys włączać pauzę?
|
||||||
// dopiero poprawne pod³¹czenie zeruje licznik prób
|
// dopiero poprawne podłączenie zeruje licznik prób
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -11,18 +11,18 @@ http://mozilla.org/MPL/2.0/.
|
|||||||
#include <string>
|
#include <string>
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
class TPoKeys55
|
class TPoKeys55
|
||||||
{ // komunikacja z PoKeys bez okreœlania przeznaczenia pinów
|
{ // komunikacja z PoKeys bez określania przeznaczenia pinów
|
||||||
unsigned char cRequest; // numer ¿¹dania do sprawdzania odpowiedzi
|
unsigned char cRequest; // numer żądania do sprawdzania odpowiedzi
|
||||||
unsigned char OutputBuffer[65]; // Allocate a memory buffer equal to our endpoint size + 1
|
unsigned char OutputBuffer[65]; // Allocate a memory buffer equal to our endpoint size + 1
|
||||||
unsigned char InputBuffer[65]; // Allocate a memory buffer equal to our endpoint size + 1
|
unsigned char InputBuffer[65]; // Allocate a memory buffer equal to our endpoint size + 1
|
||||||
int iPWM[8]; // 0-5:wyjœcia PWM,6:analogowe,7:czêstotliwoœc PWM
|
int iPWM[8]; // 0-5:wyjścia PWM,6:analogowe,7:częstotliwośc PWM
|
||||||
int iPWMbits;
|
int iPWMbits;
|
||||||
int iLastCommand;
|
int iLastCommand;
|
||||||
int iFaza;
|
int iFaza;
|
||||||
int iRepeats; // liczba powtórzeñ
|
int iRepeats; // liczba powtórzeń
|
||||||
bool bNoError; // zerowany po przepe³nieniu licznika powtórzeñ, ustawiany po udanej operacji
|
bool bNoError; // zerowany po przepełnieniu licznika powtórzeń, ustawiany po udanej operacji
|
||||||
public:
|
public:
|
||||||
float fAnalog[7]; // wejœcia analogowe, stan <0.0,1.0>
|
float fAnalog[7]; // wejścia analogowe, stan <0.0,1.0>
|
||||||
int iInputs[8];
|
int iInputs[8];
|
||||||
TPoKeys55();
|
TPoKeys55();
|
||||||
~TPoKeys55();
|
~TPoKeys55();
|
||||||
|
|||||||
2227
DynObj.cpp
2227
DynObj.cpp
File diff suppressed because it is too large
Load Diff
73
EU07.cpp
73
EU07.cpp
@@ -69,8 +69,8 @@ int InitGL(GLvoid) // All Setup For OpenGL Goes Here
|
|||||||
glEnableClientState(GL_VERTEX_ARRAY);
|
glEnableClientState(GL_VERTEX_ARRAY);
|
||||||
glEnableClientState(GL_NORMAL_ARRAY);
|
glEnableClientState(GL_NORMAL_ARRAY);
|
||||||
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
|
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||||
Global::pWorld = &World; // Ra: wska<EFBFBD>nik potrzebny do usuwania pojazd<EFBFBD>w
|
Global::pWorld = &World; // Ra: wskaźnik potrzebny do usuwania pojazdów
|
||||||
return World.Init(hWnd, hDC); // true je<EFBFBD>li wszystko p<EFBFBD>jdzie dobrze
|
return World.Init(hWnd, hDC); // true jeśli wszystko pójdzie dobrze
|
||||||
}
|
}
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -403,22 +403,22 @@ LRESULT CALLBACK WndProc(HWND hWnd, // handle for this window
|
|||||||
RECT rect;
|
RECT rect;
|
||||||
switch (uMsg) // check for windows messages
|
switch (uMsg) // check for windows messages
|
||||||
{
|
{
|
||||||
case WM_PASTE: //[Ctrl]+[V] potrzebujemy do innych cel<EFBFBD>w
|
case WM_PASTE: //[Ctrl]+[V] potrzebujemy do innych celów
|
||||||
return 0;
|
return 0;
|
||||||
case WM_COPYDATA: // obs<EFBFBD>uga danych przes<EFBFBD>anych przez program steruj<EFBFBD>cy
|
case WM_COPYDATA: // obsługa danych przesłanych przez program sterujący
|
||||||
pDane = (PCOPYDATASTRUCT)lParam;
|
pDane = (PCOPYDATASTRUCT)lParam;
|
||||||
if (pDane->dwData == 'EU07') // sygnatura danych
|
if (pDane->dwData == 'EU07') // sygnatura danych
|
||||||
World.OnCommandGet((DaneRozkaz *)(pDane->lpData));
|
World.OnCommandGet((DaneRozkaz *)(pDane->lpData));
|
||||||
break;
|
break;
|
||||||
case WM_ACTIVATE: // watch for window activate message
|
case WM_ACTIVATE: // watch for window activate message
|
||||||
// case WM_ACTIVATEAPP:
|
// case WM_ACTIVATEAPP:
|
||||||
{ // Ra: uzale<EFBFBD>nienie aktywno<EFBFBD>ci od bycia na wierzchu
|
{ // Ra: uzależnienie aktywności od bycia na wierzchu
|
||||||
Global::bActive = (LOWORD(wParam) != WA_INACTIVE);
|
Global::bActive = (LOWORD(wParam) != WA_INACTIVE);
|
||||||
if (Global::bInactivePause) // je<EFBFBD>li ma by<EFBFBD> pauzowanie okna w tle
|
if (Global::bInactivePause) // jeśli ma być pauzowanie okna w tle
|
||||||
if (Global::bActive)
|
if (Global::bActive)
|
||||||
Global::iPause &= ~4; // odpauzowanie, gdy jest na pierwszym planie
|
Global::iPause &= ~4; // odpauzowanie, gdy jest na pierwszym planie
|
||||||
else
|
else
|
||||||
Global::iPause |= 4; // w<EFBFBD><EFBFBD>czenie pauzy, gdy nieaktywy
|
Global::iPause |= 4; // włączenie pauzy, gdy nieaktywy
|
||||||
if (Global::bActive)
|
if (Global::bActive)
|
||||||
SetCursorPos(mx, my);
|
SetCursorPos(mx, my);
|
||||||
ShowCursor(!Global::bActive);
|
ShowCursor(!Global::bActive);
|
||||||
@@ -472,8 +472,8 @@ LRESULT CALLBACK WndProc(HWND hWnd, // handle for this window
|
|||||||
case WM_KEYDOWN:
|
case WM_KEYDOWN:
|
||||||
if (Global::bActive)
|
if (Global::bActive)
|
||||||
{
|
{
|
||||||
if (wParam != 17) // bo naci<EFBFBD>ni<EFBFBD>cia [Ctrl] nie ma po co przekazywa<EFBFBD>
|
if (wParam != 17) // bo naciśnięcia [Ctrl] nie ma po co przekazywać
|
||||||
if (wParam != 145) //[Scroll Lock] te<EFBFBD> nie
|
if (wParam != 145) //[Scroll Lock] też nie
|
||||||
World.OnKeyDown(wParam);
|
World.OnKeyDown(wParam);
|
||||||
switch (wParam)
|
switch (wParam)
|
||||||
{
|
{
|
||||||
@@ -481,27 +481,27 @@ LRESULT CALLBACK WndProc(HWND hWnd, // handle for this window
|
|||||||
if (DebugModeFlag)
|
if (DebugModeFlag)
|
||||||
break;
|
break;
|
||||||
case 19: //[Pause]
|
case 19: //[Pause]
|
||||||
if (Global::iPause & 1) // je<EFBFBD>li pauza startowa
|
if (Global::iPause & 1) // jeśli pauza startowa
|
||||||
Global::iPause &= ~1; // odpauzowanie, gdy po wczytaniu mia<EFBFBD>o nie startowa<EFBFBD>
|
Global::iPause &= ~1; // odpauzowanie, gdy po wczytaniu miało nie startować
|
||||||
else if (!(Global::iMultiplayer & 2)) // w multiplayerze pauza nie ma sensu
|
else if (!(Global::iMultiplayer & 2)) // w multiplayerze pauza nie ma sensu
|
||||||
if (!Console::Pressed(VK_CONTROL)) // z [Ctrl] to radiostop jest
|
if (!Console::Pressed(VK_CONTROL)) // z [Ctrl] to radiostop jest
|
||||||
// Ra: poni<EFBFBD>sze nie ma sensu, bo brak komunikacji natychmiast zapauzuje
|
// Ra: poniższe nie ma sensu, bo brak komunikacji natychmiast zapauzuje
|
||||||
// ponownie
|
// ponownie
|
||||||
// if (Global::iPause&8) //je<EFBFBD>li pauza zwi<EFBFBD>zana z brakiem komunikacji z
|
// if (Global::iPause&8) //jeśli pauza związana z brakiem komunikacji z
|
||||||
// PoKeys
|
// PoKeys
|
||||||
// Global::iPause&=~10; //odpauzowanie pauzy PoKeys (chyba nic nie da) i
|
// Global::iPause&=~10; //odpauzowanie pauzy PoKeys (chyba nic nie da) i
|
||||||
// ewentualnie klawiszowej r<EFBFBD>wnie<EFBFBD>
|
// ewentualnie klawiszowej również
|
||||||
// else
|
// else
|
||||||
Global::iPause ^= 2; // zmiana stanu zapauzowania
|
Global::iPause ^= 2; // zmiana stanu zapauzowania
|
||||||
if (Global::iPause) // jak pauza
|
if (Global::iPause) // jak pauza
|
||||||
Global::iTextMode = VK_F1; // to wy<EFBFBD>wietli<EFBFBD> zegar i informacj<EFBFBD>
|
Global::iTextMode = VK_F1; // to wyświetlić zegar i informację
|
||||||
break;
|
break;
|
||||||
case VK_F7:
|
case VK_F7:
|
||||||
if (DebugModeFlag)
|
if (DebugModeFlag)
|
||||||
{ // siatki wy<EFBFBD>wietlane tyko w trybie testowym
|
{ // siatki wyświetlane tyko w trybie testowym
|
||||||
Global::bWireFrame = !Global::bWireFrame;
|
Global::bWireFrame = !Global::bWireFrame;
|
||||||
++Global::iReCompile; // od<EFBFBD>wie<EFBFBD>y<EFBFBD> siatki
|
++Global::iReCompile; // odświeżyć siatki
|
||||||
// Ra: jeszcze usun<EFBFBD><EFBFBD> siatki ze skompilowanych obiekt<EFBFBD>w!
|
// Ra: jeszcze usunąć siatki ze skompilowanych obiektów!
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -578,9 +578,9 @@ int WINAPI WinMain(HINSTANCE hInstance, // instance
|
|||||||
MSG msg; // windows message structure
|
MSG msg; // windows message structure
|
||||||
BOOL done = FALSE; // bool variable to exit loop
|
BOOL done = FALSE; // bool variable to exit loop
|
||||||
fullscreen = true;
|
fullscreen = true;
|
||||||
DeleteFile("errors.txt"); // usuni<EFBFBD>cie starego
|
DeleteFile("errors.txt"); // usunięcie starego
|
||||||
Global::LoadIniFile("eu07.ini"); // teraz dopiero mo<EFBFBD>na przejrze<EFBFBD> plik z ustawieniami
|
Global::LoadIniFile("eu07.ini"); // teraz dopiero można przejrzeć plik z ustawieniami
|
||||||
Global::InitKeys("keys.ini"); // wczytanie mapowania klawiszy - jest na sta<EFBFBD>e
|
Global::InitKeys("keys.ini"); // wczytanie mapowania klawiszy - jest na stałe
|
||||||
|
|
||||||
// hunter-271211: ukrywanie konsoli
|
// hunter-271211: ukrywanie konsoli
|
||||||
if (Global::iWriteLogEnabled & 2)
|
if (Global::iWriteLogEnabled & 2)
|
||||||
@@ -590,7 +590,7 @@ int WINAPI WinMain(HINSTANCE hInstance, // instance
|
|||||||
}
|
}
|
||||||
std::string commandline( lpCmdLine ); // parametry uruchomienia
|
std::string commandline( lpCmdLine ); // parametry uruchomienia
|
||||||
if( false == commandline.empty() )
|
if( false == commandline.empty() )
|
||||||
{ // analizowanie parametr<EFBFBD>w
|
{ // analizowanie parametr�w
|
||||||
cParser parser( commandline );
|
cParser parser( commandline );
|
||||||
std::string token;
|
std::string token;
|
||||||
do {
|
do {
|
||||||
@@ -609,15 +609,15 @@ int WINAPI WinMain(HINSTANCE hInstance, // instance
|
|||||||
parser >> Global::asHumanCtrlVehicle;
|
parser >> Global::asHumanCtrlVehicle;
|
||||||
}
|
}
|
||||||
else if( token == "-modifytga" )
|
else if( token == "-modifytga" )
|
||||||
{ // wykonanie modyfikacji wszystkich plik<EFBFBD>w TGA
|
{ // wykonanie modyfikacji wszystkich plików TGA
|
||||||
Global::iModifyTGA = -1; // specjalny tryb wykonania totalnej modyfikacji
|
Global::iModifyTGA = -1; // specjalny tryb wykonania totalnej modyfikacji
|
||||||
}
|
}
|
||||||
else if( token == "-e3d" )
|
else if( token == "-e3d" )
|
||||||
{ // wygenerowanie wszystkich plik<EFBFBD>w E3D
|
{ // wygenerowanie wszystkich plików E3D
|
||||||
if (Global::iConvertModels > 0)
|
if (Global::iConvertModels > 0)
|
||||||
Global::iConvertModels = -Global::iConvertModels; // specjalny tryb
|
Global::iConvertModels = -Global::iConvertModels; // specjalny tryb
|
||||||
else
|
else
|
||||||
Global::iConvertModels = -7; // z optymalizacj<EFBFBD>, bananami i prawid<EFBFBD>owym Opacity
|
Global::iConvertModels = -7; // z optymalizacją, bananami i prawidłowym Opacity
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
Error(
|
Error(
|
||||||
@@ -644,9 +644,9 @@ int WINAPI WinMain(HINSTANCE hInstance, // instance
|
|||||||
return 0; // quit if window was not created
|
return 0; // quit if window was not created
|
||||||
SetForegroundWindow(hWnd);
|
SetForegroundWindow(hWnd);
|
||||||
// McZapkie: proba przeplukania klawiatury
|
// McZapkie: proba przeplukania klawiatury
|
||||||
Console *pConsole = new Console(); // Ra: nie wiem, czy ma to sens, ale jako<EFBFBD> zainicjowac trzeba
|
Console *pConsole = new Console(); // Ra: nie wiem, czy ma to sens, ale jakoś zainicjowac trzeba
|
||||||
while (Console::Pressed(VK_F10))
|
while (Console::Pressed(VK_F10))
|
||||||
Error("Keyboard buffer problem - press F10"); // na Windows 98 lubi si<EFBFBD> to pojawia<EFBFBD>
|
Error("Keyboard buffer problem - press F10"); // na Windows 98 lubi się to pojawiać
|
||||||
int iOldSpeed, iOldDelay;
|
int iOldSpeed, iOldDelay;
|
||||||
SystemParametersInfo(SPI_GETKEYBOARDSPEED, 0, &iOldSpeed, 0);
|
SystemParametersInfo(SPI_GETKEYBOARDSPEED, 0, &iOldSpeed, 0);
|
||||||
SystemParametersInfo(SPI_GETKEYBOARDDELAY, 0, &iOldDelay, 0);
|
SystemParametersInfo(SPI_GETKEYBOARDDELAY, 0, &iOldDelay, 0);
|
||||||
@@ -656,20 +656,20 @@ int WINAPI WinMain(HINSTANCE hInstance, // instance
|
|||||||
WriteLog("No joystick");
|
WriteLog("No joystick");
|
||||||
if (Global::iModifyTGA < 0)
|
if (Global::iModifyTGA < 0)
|
||||||
{ // tylko modyfikacja TGA, bez uruchamiania symulacji
|
{ // tylko modyfikacja TGA, bez uruchamiania symulacji
|
||||||
Global::iMaxTextureSize = 64; //<EFBFBD>eby nie zamula<EFBFBD> pami<EFBFBD>ci
|
Global::iMaxTextureSize = 64; //żeby nie zamulać pamięci
|
||||||
World.ModifyTGA(); // rekurencyjne przegl<EFBFBD>danie katalog<EFBFBD>w
|
World.ModifyTGA(); // rekurencyjne przeglądanie katalogów
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (Global::iConvertModels < 0)
|
if (Global::iConvertModels < 0)
|
||||||
{
|
{
|
||||||
Global::iConvertModels = -Global::iConvertModels;
|
Global::iConvertModels = -Global::iConvertModels;
|
||||||
World.CreateE3D("models\\"); // rekurencyjne przegl<EFBFBD>danie katalog<EFBFBD>w
|
World.CreateE3D("models\\"); // rekurencyjne przeglądanie katalogów
|
||||||
World.CreateE3D("dynamic\\", true);
|
World.CreateE3D("dynamic\\", true);
|
||||||
} // po zrobieniu E3D odpalamy normalnie sceneri<EFBFBD>, by j<EFBFBD> zobaczy<EFBFBD>
|
} // po zrobieniu E3D odpalamy normalnie scenerię, by ją zobaczyć
|
||||||
// else
|
// else
|
||||||
//{//g<EFBFBD><EFBFBD>wna p<EFBFBD>tla programu
|
//{//główna pętla programu
|
||||||
Console::On(); // w<EFBFBD><EFBFBD>czenie konsoli
|
Console::On(); // włączenie konsoli
|
||||||
while (!done) // loop that runs while done=FALSE
|
while (!done) // loop that runs while done=FALSE
|
||||||
{
|
{
|
||||||
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) // is there a message waiting?
|
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) // is there a message waiting?
|
||||||
@@ -689,14 +689,14 @@ int WINAPI WinMain(HINSTANCE hInstance, // instance
|
|||||||
// draw the scene, watch for quit messages
|
// draw the scene, watch for quit messages
|
||||||
// DrawGLScene()
|
// DrawGLScene()
|
||||||
// if (!pause)
|
// if (!pause)
|
||||||
// if (Global::bInactivePause?Global::bActive:true) //tak nie, bo spada z g<EFBFBD>ry
|
// if (Global::bInactivePause?Global::bActive:true) //tak nie, bo spada z góry
|
||||||
if (World.Update()) // Was There A Quit Received?
|
if (World.Update()) // Was There A Quit Received?
|
||||||
SwapBuffers(hDC); // Swap Buffers (Double Buffering)
|
SwapBuffers(hDC); // Swap Buffers (Double Buffering)
|
||||||
else
|
else
|
||||||
done = true; //[F10] or DrawGLScene signalled a quit
|
done = true; //[F10] or DrawGLScene signalled a quit
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Console::Off(); // wy<EFBFBD><EFBFBD>czenie konsoli (komunikacji zwrotnej)
|
Console::Off(); // wyłączenie konsoli (komunikacji zwrotnej)
|
||||||
}
|
}
|
||||||
SystemParametersInfo(SPI_SETKEYBOARDSPEED, iOldSpeed, NULL, 0);
|
SystemParametersInfo(SPI_SETKEYBOARDSPEED, iOldSpeed, NULL, 0);
|
||||||
SystemParametersInfo(SPI_SETKEYBOARDDELAY, iOldDelay, NULL, 0);
|
SystemParametersInfo(SPI_SETKEYBOARDDELAY, iOldDelay, NULL, 0);
|
||||||
@@ -705,6 +705,3 @@ int WINAPI WinMain(HINSTANCE hInstance, // instance
|
|||||||
KillGLWindow(); // kill the window
|
KillGLWindow(); // kill the window
|
||||||
return (msg.wParam); // exit the program
|
return (msg.wParam); // exit the program
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user