diff --git a/Sh3.pro b/Sh3.pro
index 762cf49..98a8237 100644
--- a/Sh3.pro
+++ b/Sh3.pro
@@ -45,7 +45,8 @@ SOURCES += main.cpp\
checkboxmod.cpp \
grairobject.cpp \
vvod2z.cpp \
- table2z.cpp
+ table2z.cpp \
+ graphicscrossitem.cpp
HEADERS += widget.h \
zerkus.h \
@@ -82,7 +83,8 @@ HEADERS += widget.h \
checkboxmod.h \
grairobject.h \
vvod2z.h \
- table2z.h
+ table2z.h \
+ graphicscrossitem.h
FORMS += widget.ui \
zerkus.ui \
diff --git a/pics.qrc b/pics.qrc
index 800cc85..9a75cf9 100644
--- a/pics.qrc
+++ b/pics.qrc
@@ -17,5 +17,6 @@
pics/loading.png
+ pics/shutdown.png
diff --git a/pics/dead_end.png b/pics/dead_end.png
new file mode 100644
index 0000000..9f92612
Binary files /dev/null and b/pics/dead_end.png differ
diff --git a/pics/shutdown.png b/pics/shutdown.png
new file mode 100644
index 0000000..35a93f1
Binary files /dev/null and b/pics/shutdown.png differ
diff --git a/widget.cpp b/widget.cpp
index 5027423..964e119 100644
--- a/widget.cpp
+++ b/widget.cpp
@@ -7,11 +7,10 @@
Widget::Widget(QWidget *parent) :
QWidget(parent),
- ui(new Ui::Widget)
-{
+ ui(new Ui::Widget) {
ui->setupUi(this);
-// connect(qApp, SIGNAL(focusChanged(QWidget*, QWidget*)), this, SLOT(focusSS(QWidget*, QWidget*)));
+ // connect(qApp, SIGNAL(focusChanged(QWidget*, QWidget*)), this, SLOT(focusSS(QWidget*, QWidget*)));
ui->btnZone->setStyleSheet("background-color: green");
@@ -70,35 +69,38 @@ Widget::Widget(QWidget *parent) :
connect(tmrReport, SIGNAL(timeout()), this, SLOT(sendReport()));
tmrReport->start(55);
-
-
-
+ tmrFocus = new QTimer();
+ connect(tmrFocus, SIGNAL(timeout()), this, SLOT(getFocus()));
showSplash(3);
-// addTargets();
-// ASnumTarget = 1;
+ // addTargets();
+ // ASnumTarget = 1;
}
-Widget::~Widget()
-{
+Widget::~Widget() {
delete ui;
}
-
-void Widget::getFocus()
-{
- // -- платформозависимый кусок. Нужен для гарантированного получения фокуса в основное окно.
- HWND id = GetForegroundWindow();
+void Widget::setGrabFocus(int d) {
+ if (d)
+ tmrFocus->start(1000);
+ else
+ tmrFocus->stop();
+}
+void Widget::getFocus() {
+ if (!openWidget) {
+ // -- платформозависимый кусок. Нужен для гарантированного получения фокуса в основное окно.
+ HWND fgW = GetForegroundWindow();
int iMyTID = GetCurrentThreadId();
- int iCurrTID = GetWindowThreadProcessId(id,0);
+ int iCurrTID = GetWindowThreadProcessId(fgW, 0);
AttachThreadInput(iMyTID, iCurrTID, TRUE);
SetForegroundWindow(winId());
AttachThreadInput(iMyTID, iCurrTID, FALSE);
- // --
-
+ // --
+ }
}
void Widget::activateWindow(int c)
@@ -168,19 +170,18 @@ void Widget::process_CU_KRU_KDG() {
}
if (sizeOfPkg == 63) { // KRU
- d >> i16 >> i16;
- Q_ASSERT(i16 == 8);
- d >> i16;
- Q_ASSERT(i16 == 1);
- d >> i32 >> i16;
- d >> zoneType;
- d >> anglStart >> anglEnd;
- anglStart -= anglEnd/2;
- anglEnd = anglStart+anglEnd;
- setSector(zoneType, anglStart, anglEnd);
+ d >> i16 >> i16;
+ Q_ASSERT(i16 == 8);
+ d >> i16;
+ Q_ASSERT(i16 == 1);
+ d >> i32 >> i16;
+ d >> zoneType;
+ d >> anglStart >> anglEnd;
+ anglStart -= anglEnd/2;
+ anglEnd = anglStart+anglEnd;
+ setSector(zoneType, anglStart, anglEnd);
}
}
-
}
void Widget::setSector(qint8 zoneType, float anglStart, float anglEnd) {
@@ -188,7 +189,7 @@ void Widget::setSector(qint8 zoneType, float anglStart, float anglEnd) {
p.left = anglStart;
p.right = anglEnd;
- switch (zoneType) {
+ switch (zoneType) {
case 1:
ownSect = p;
break;
@@ -212,9 +213,9 @@ void Widget::newOptServerData()
d.setByteOrder(QDataStream::LittleEndian);
qint16 len;
qint8 tByte;
-// qint16 tWord;
+ // qint16 tWord;
bool tBool;
-// qreal tReal;
+ // qreal tReal;
float tFloat;
QString dbgStr;
@@ -236,17 +237,17 @@ void Widget::newOptServerData()
d >> tFloat;
ugolGUN = tFloat*180/M_PI;
-// dbgStr = QString("ugolGUN = ")+QString::number(tFloat, 'f', 4);
-// dbgBuf = dbgStr.toLocal8Bit();
-// processSendingDatagrams(dbgBuf, 45011);
+ // dbgStr = QString("ugolGUN = ")+QString::number(tFloat, 'f', 4);
+ // dbgBuf = dbgStr.toLocal8Bit();
+ // processSendingDatagrams(dbgBuf, 45011);
d >> tFloat;
azimutGUN = azimutKurs + tFloat*180/M_PI;
-// dbgStr = QString("azimutGUN = ")+QString::number(tFloat, 'f', 4);
-// dbgBuf = dbgStr.toLocal8Bit();
-// processSendingDatagrams(dbgBuf, 45011);
+ // dbgStr = QString("azimutGUN = ")+QString::number(tFloat, 'f', 4);
+ // dbgBuf = dbgStr.toLocal8Bit();
+ // processSendingDatagrams(dbgBuf, 45011);
d >> tFloat; // azAntRLS
d >> tFloat; // umAntRLS
d >> tBool; // Poxod
@@ -266,7 +267,7 @@ void Widget::newOptServerData()
umMissTur = -162;
else
umMissTur = int (tFloat*3000/M_PI);
-// qDebug("%d umMissTur = %d", basePoxod, umMissTur);
+ // qDebug("%d umMissTur = %d", basePoxod, umMissTur);
}
}
}
@@ -277,10 +278,10 @@ void Widget::newOptServerData2()
QDataStream d(&datagram, QIODevice::ReadOnly);
d.setByteOrder(QDataStream::LittleEndian);
qint16 len;
-// qint8 tByte;
-// qint16 tWord;
-// bool tBool;
-// qreal tReal;
+ // qint8 tByte;
+ // qint16 tWord;
+ // bool tBool;
+ // qreal tReal;
float tFloat;
QString dbgStr;
@@ -324,19 +325,19 @@ void Widget::sendReport()
- QByteArray buf;
+ QByteArray buf;
QDataStream d(&buf, QIODevice::WriteOnly);
d.setByteOrder(QDataStream::LittleEndian);
-// квитанция
+ // квитанция
d << (qint8)currentTaskNum;
-// метео автоном
+ // метео автоном
d << (qint16)metAv.temp << (qint8)metAv.wind << (qint16)metAv.azim << (qint16)metAv.pressure;
-//режим метео
+ //режим метео
if (meteoSred) tByte=1; else tByte = 0;
d << tByte;
-// метеосреднее
+ // метеосреднее
QByteArray tmpMetSr = metSr.toLocal8Bit();
tmpMetSr.resize(182);
@@ -346,9 +347,9 @@ void Widget::sendReport()
d << tByte;
}
-// настрел
+ // настрел
d << (qint16)ZAnastrel << (qint16)ZAtempZar;
-// ошибки гор, верт и дБ
+ // ошибки гор, верт и дБ
for (i=0; i<9; i++)
{
@@ -360,41 +361,41 @@ void Widget::sendReport()
d << (qint16)errZAver[i];
}
- d << (qint16)errZAdB;
+ d << (qint16)errZAdB;
-// зеркальная стрельба
+ // зеркальная стрельба
d << (qint8)rezhimZerk;
-// положение
+ // положение
- tReal = ts.x; d << tReal;
- tReal = ts.y; d << tReal;
- tReal = ts.h; d << tReal;
- tReal = azimutKurs; d << tReal;
+ tReal = ts.x; d << tReal;
+ tReal = ts.y; d << tReal;
+ tReal = ts.h; d << tReal;
+ tReal = azimutKurs; d << tReal;
- d.setFloatingPointPrecision(QDataStream::SinglePrecision);
- tFloat = ugolGUN; d << tFloat;
- tFloat = azimutGUN; d << tFloat;
- d.setFloatingPointPrecision(QDataStream::DoublePrecision);
+ d.setFloatingPointPrecision(QDataStream::SinglePrecision);
+ tFloat = ugolGUN; d << tFloat;
+ tFloat = azimutGUN; d << tFloat;
+ d.setFloatingPointPrecision(QDataStream::DoublePrecision);
- for (i=0; i<4; i++)
- {
- tByte=0;
- d << tByte;
- }
+ for (i=0; i<4; i++)
+ {
+ tByte=0;
+ d << tByte;
+ }
- tBool = true;
- d << tBool;
+ tBool = true;
+ d << tBool;
-// d<radioButton_set5->isChecked())||(ui->radioButton_set6->isChecked()));
d << tBool;
@@ -418,9 +419,19 @@ void Widget::sendReport()
tWord = 0;
d << tWord;
-// резерв 4x байт и 9 х реал
+ // вставка режима работы ИСХ, БР, ФК или ТРУ
+ if ((cvsRezhim>0)&&(cvsRezhim<5))
+ tByte = cvsRezhim;
+ else tByte = -1;
- for (i=0; i<4; i++)
+ d << tByte;
+
+ tBool = systemHalt;
+ d << tBool;
+
+ // резерв 2x байт и 9 х реал
+
+ for (i=0; i<2; i++)
{
tByte = i*10+i;
d << tByte;
@@ -432,8 +443,8 @@ void Widget::sendReport()
d << tReal;
}
- if (!silentMode)
- udpSend->writeDatagram(buf.data(), buf.size(), QHostAddress("192.168.0.255"), 6617);
+ if (!silentMode)
+ udpSend->writeDatagram(buf.data(), buf.size(), QHostAddress("192.168.0.255"), 6617);
}
@@ -443,80 +454,75 @@ void Widget::synhrTimeout()
buf.resize(2);
buf[0] = 35;
buf[1] = currentTaskNum;
-
-
-//QString dbgStr;
-//QByteArray dbgBuf;
-//dbgStr = QString(" +++++++++++++ writed to udp = ")+QString::number(currentTaskNum);
-//dbgBuf = dbgStr.toLocal8Bit();
-//processSendingDatagrams(dbgBuf, 45011);
-
-
- // udpSend->writeDatagram(buf.data(), buf.size(), QHostAddress("127.0.0.1"), 6600);
- if (!silentMode)
- udpSend->writeDatagram(buf.data(), buf.size(), QHostAddress("192.168.0.255"), 6600);
+ if (!silentMode)
+ udpSend->writeDatagram(buf.data(), buf.size(), QHostAddress("192.168.0.255"), 6600);
}
void Widget::newTaskReadDatagrams()
{
- int len;
- QByteArray datagram;
- QByteArray tmpMetSr;
+ int len;
+ QByteArray datagram;
+ QByteArray tmpMetSr;
- QDataStream d(&datagram, QIODevice::ReadOnly);
- d.setByteOrder(QDataStream::LittleEndian);
+ QDataStream d(&datagram, QIODevice::ReadOnly);
+ d.setByteOrder(QDataStream::LittleEndian);
- qint8 tByte;
- qint16 tWord;
- bool tBool, flAutoFill;
- qreal tReal;
- float tFloat;
- int i;
+ qint8 tByte;
+ qint16 tWord;
+ bool tBool, flAutoFill;
+ qreal tReal;
+ float tFloat;
+ int i;
- QString dbgStr;
- QByteArray dbgBuf;
+ QString dbgStr;
+ QByteArray dbgBuf;
- tmpMetSr.resize(182);
- tmpMetSr.fill(0, 182);
+ tmpMetSr.resize(182);
+ tmpMetSr.fill(0, 182);
- while (udpNewTask->hasPendingDatagrams())
+ while (udpNewTask->hasPendingDatagrams())
+ {
+ datagram.clear();
+ len = udpNewTask->pendingDatagramSize();
+ datagram.resize(len);
+ udpNewTask->readDatagram(datagram.data(), datagram.size());
+ if (len == 2)
{
- datagram.clear();
- len = udpNewTask->pendingDatagramSize();
- datagram.resize(len);
- udpNewTask->readDatagram(datagram.data(), datagram.size());
- if (len == 2)
+ d >> tByte;
+ if (tByte==2)
{
d >> tByte;
+ if (tByte==0) {QTimer::singleShot(100, this, SLOT(close()));}
+ if (tByte==1) // выключение
+ {
+ writeFile();
+ QString program = "c:/Shilka_exe/shutdown.exe";
+ QStringList arguments;
+ QProcess *myProcess = new QProcess(this);
+ myProcess->startDetached(program, arguments);
+ QTimer::singleShot(100, this, SLOT(close()));
+ }
+ if (tByte==2) // перезагрузка
+ {
+ writeFile();
+ QString program = "c:/Shilka_exe/reboot.exe";
+ QStringList arguments;
+ QProcess *myProcess = new QProcess(this);
+ myProcess->startDetached(program, arguments);
+ QTimer::singleShot(100, this, SLOT(close()));
+ }
+ }
+ if (tByte==1)
+ {
+ // qDebug("-1");
+ d >> tByte;
+ // qDebug("---%d", tByte);
if (tByte==2)
{
- d >> tByte;
- if (tByte==0) {QTimer::singleShot(100, this, SLOT(close()));}
- if (tByte==1) // выключение
+ if (splashIsOn==13)
+ rebootSlot();
+ else
{
- QString program = "c:/Shilka_exe/shutdown.exe";
- QStringList arguments;
- QProcess *myProcess = new QProcess(this);
- myProcess->startDetached(program, arguments);
- QTimer::singleShot(100, this, SLOT(close()));
- }
- if (tByte==2) // перезагрузка
- {
- QString program = "c:/Shilka_exe/reboot.exe";
- QStringList arguments;
- QProcess *myProcess = new QProcess(this);
- myProcess->startDetached(program, arguments);
- QTimer::singleShot(100, this, SLOT(close()));
- }
- }
- if (tByte==1)
- {
- // qDebug("-1");
- d >> tByte;
- // qDebug("---%d", tByte);
- if (tByte==2)
- {
-
currentNum = 0;
VCUnumTarget=-1;
ASnumTarget=-1;
@@ -524,137 +530,127 @@ void Widget::newTaskReadDatagrams()
{
targetsIds[i]=0;
grAir[i]->setNull();
-
}
}
}
}
-
- if (len==308)
- {
- d >> tByte;
- currentTaskNum = tByte;
-
-//dbgStr = QString("read from udp = ")+QString::number(tByte)+QString(" ---- curTaskNum = ")+QString::number(currentTaskNum);
-//dbgBuf = dbgStr.toLocal8Bit();
-//processSendingDatagrams(dbgBuf, 45011);
-
- d >> tWord >> tByte >> tByte;
-
- d >> flAutoFill; // autoFill !!!!!!!
-
- if (flAutoFill)
- {
-
-
- d >> tWord; // temp Vozduh
- metAv.temp = tWord;
- d >> tByte; // skor Vetra
- metAv.wind = tByte;
- d >> tWord; // azim Vetra v DU
- metAv.azim = tWord;
- d >> tWord; // davl vozduh v mm.rt.st.
- metAv.pressure = tWord;
- d >> tByte; // 0 - meteoAvtonom
-
- setMeteo(!tByte, tByte);
-
-
- for (i=0; i<182; i++) // meteoSred
- {
- d >> tByte;
- tmpMetSr[i] = tByte;
- }
- metSr = QString(tmpMetSr);
-
- d >> tWord; // Nastrel stvolov
- ZAnastrel = tWord;
- d >> tWord; // temp zaryad
- ZAtempZar = tWord;
-
-
- for (i=0; i<9; i++) // oshibki ZU goriz
- {
- d >> tWord;
- errZAgor[i]=tWord;
- }
-
- for (i=0; i<7; i++) // oshibki ZU vert
- {
- d >> tWord;
- errZAver[i]=tWord;
- }
-
- d >> tWord; // поправка в ДУ
- errZAdB = tWord;
-
- d >> tByte; // byte - zerk strelba [0 - vikl, 1 - x, 2 - y]
- rezhimZerk = tByte;
-
-
- for (i=0; i<5; i++) d>>tByte;
-
-// pos начался
- d >> tReal; // x
- ts.x = (int)tReal;
- d >> tReal; // y
- ts.y = (int)tReal;
- d >> tReal; // h
- ts.h = (int)tReal;
- d >> tReal; // Azim kurs
- azimutKurs = tReal;
-
- d.setFloatingPointPrecision(QDataStream::SinglePrecision);
- d >> tFloat; // UgolM Gun
-// if (fabs(tFloat-ugolGUNprev)<1)
- ugolGUN = tFloat;
-// ugolGUNprev = tFloat;
-// dbgStr = QString("ugolGUN = ")+QString::number(tFloat, 'f', 4);
-// dbgBuf = dbgStr.toLocal8Bit();
-// processSendingDatagrams(dbgBuf, 45011);
-
- d >> tFloat; // Azim Gun
-// if (fabs(tFloat-azimutGUNprev)<1)
- azimutGUN = tFloat;
-// azimutGUNprev = tFloat;
-// dbgStr = QString("azimutGUN = ")+QString::number(tFloat, 'f', 4);
-// dbgBuf = dbgStr.toLocal8Bit();
-// processSendingDatagrams(dbgBuf, 45011);
-
-
- d.setFloatingPointPrecision(QDataStream::DoublePrecision);
-
- // Ракеты состояние (0 - нет, 1 - есть, 2 - улетела)
- for (i=0; i<4; i++)
- {
- d>>tByte;
- }
- d>>tBool;
-
-
- d>>tBool; // <<-- костыль, что то не так с укладкой структуры из Дельфи
- d>>tWord;// <<-- костыль, что то не так с укладкой структуры из Дельфи
-// pos закончился
-
- d >> tWord; // общий боезапас ЗА
- for (i=0; i<4; i++) // боезапас ЗА по стволам
- {
- d >> tWord;
- BK[i] = tWord;
- }
-
- d >> tByte;
- BK[4] = tByte; // кол-во ракет
-
- // Работаем с МРУ или одиночно
- d >> tBool;
- MRUmode = tBool;
-
- } // if flAutoFill
-
- }
}
+ if (len==308)
+ {
+ d >> tByte;
+ currentTaskNum = tByte;
+
+ //dbgStr = QString("read from udp = ")+QString::number(tByte)+QString(" ---- curTaskNum = ")+QString::number(currentTaskNum);
+ //dbgBuf = dbgStr.toLocal8Bit();
+ //processSendingDatagrams(dbgBuf, 45011);
+
+ d >> tWord >> tByte >> tByte;
+
+ d >> flAutoFill; // autoFill !!!!!!!
+
+ if (flAutoFill)
+ {
+
+
+ d >> tWord; // temp Vozduh
+ metAv.temp = tWord;
+ d >> tByte; // skor Vetra
+ metAv.wind = tByte;
+ d >> tWord; // azim Vetra v DU
+ metAv.azim = tWord;
+ d >> tWord; // davl vozduh v mm.rt.st.
+ metAv.pressure = tWord;
+ d >> tByte; // 0 - meteoAvtonom
+
+ setMeteo(!tByte, tByte);
+
+
+ for (i=0; i<182; i++) // meteoSred
+ {
+ d >> tByte;
+ tmpMetSr[i] = tByte;
+ }
+ metSr = QString(tmpMetSr);
+
+ d >> tWord; // Nastrel stvolov
+ ZAnastrel = tWord;
+ d >> tWord; // temp zaryad
+ ZAtempZar = tWord;
+
+
+ for (i=0; i<9; i++) // oshibki ZU goriz
+ {
+ d >> tWord;
+ errZAgor[i]=tWord;
+ }
+
+ for (i=0; i<7; i++) // oshibki ZU vert
+ {
+ d >> tWord;
+ errZAver[i]=tWord;
+ }
+
+ d >> tWord; // поправка в ДУ
+ errZAdB = tWord;
+
+ d >> tByte; // byte - zerk strelba [0 - vikl, 1 - x, 2 - y]
+ rezhimZerk = tByte;
+
+
+ for (i=0; i<5; i++) d>>tByte;
+
+ // pos начался
+ d >> tReal; // x
+ ts.x = (int)tReal;
+ d >> tReal; // y
+ ts.y = (int)tReal;
+ d >> tReal; // h
+ ts.h = (int)tReal;
+ d >> tReal; // Azim kurs
+ azimutKurs = tReal;
+
+ d.setFloatingPointPrecision(QDataStream::SinglePrecision);
+ d >> tFloat; // UgolM Gun
+ ugolGUN = tFloat;
+
+ d >> tFloat; // Azim Gun
+
+ azimutGUN = tFloat;
+
+ d.setFloatingPointPrecision(QDataStream::DoublePrecision);
+
+ // Ракеты состояние (0 - нет, 1 - есть, 2 - улетела)
+ for (i=0; i<4; i++)
+ {
+ d>>tByte;
+ }
+ d>>tBool;
+
+
+ d>>tBool; // <<-- костыль, что то не так с укладкой структуры из Дельфи
+ d>>tWord;// <<-- костыль, что то не так с укладкой структуры из Дельфи
+ // pos закончился
+
+ d >> tWord; // общий боезапас ЗА
+ for (i=0; i<4; i++) // боезапас ЗА по стволам
+ {
+ d >> tWord;
+ BK[i] = tWord;
+ }
+
+ d >> tByte;
+ BK[4] = tByte; // кол-во ракет
+
+ // Работаем с МРУ или одиночно
+ d >> tBool;
+ MRUmode = tBool;
+
+ } // if flAutoFill
+
+ }
+ }
+
}
void Widget::keybReadDatagrams(int d1, int d2, int d3, int d4, int d5)
@@ -665,9 +661,9 @@ void Widget::keybReadDatagrams(int d1, int d2, int d3, int d4, int d5)
int i;
int winCode[29]={0, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
- VK_DIVIDE, VK_ADD, VK_SUBTRACT, VK_MULTIPLY, VK_DECIMAL,
- VK_RETURN, VK_F11, VK_F12, VK_CONTROL, VK_MENU, VK_DELETE,
- VK_BACK, VK_ESCAPE, VK_TAB, VK_RIGHT, VK_LEFT, VK_DOWN, VK_UP};
+ VK_DIVIDE, VK_ADD, VK_SUBTRACT, VK_MULTIPLY, VK_DECIMAL,
+ VK_RETURN, VK_F11, VK_F12, VK_CONTROL, VK_MENU, VK_DELETE,
+ VK_BACK, VK_ESCAPE, VK_TAB, VK_RIGHT, VK_LEFT, VK_DOWN, VK_UP};
static int pressedKey[29] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
@@ -678,126 +674,86 @@ void Widget::keybReadDatagrams(int d1, int d2, int d3, int d4, int d5)
- int buf1[4];
- buf1[0]=d2; buf1[1]=d3; buf1[2]=d4; buf1[3]=d5;
-// Проверка NumLock
- key = d1;
- if (((key==0)&&(flNum))||((key==1)&&(!flNum)))
+ int buf1[4];
+ buf1[0]=d2; buf1[1]=d3; buf1[2]=d4; buf1[3]=d5;
+ // Проверка NumLock
+ key = d1;
+ if (((key==0)&&(flNum))||((key==1)&&(!flNum)))
+ {
+ flNum = (key==1);
+ keybd_event(VK_NUMLOCK, 0,0,0);
+ keybd_event(VK_NUMLOCK, 0, KEYEVENTF_KEYUP, 0);
+
+
+ key=0;
+ //
+ }
+
+
+ //
+ for (i=0; i<4; i++)
+ {
+ if ( (buf1[i]<0) || (buf1[i]>29) ) buf1[i]=0;
+
+ }
+
+
+ // Если в комбинации нет Alt или Ctrl их надо отжать
+ // Если в комбинации есть Alt или Ctrl 1й раз нажимаем, дальше игнорируем до пропажи
+
+
+ int s=0;
+ for (i=0; i<4; i++) {if (buf1[i]!=19) {s++;}}
+ if (s==4)
+ {
+ if (flCtrl) keybd_event(VK_CONTROL, 0,KEYEVENTF_KEYUP,0);
+ flCtrl = false;
+ }
+
+ s=0;
+ for (i=0; i<4; i++) {if (buf1[i]!=20) { s++;}}
+ if (s==4)
+ {
+
+ if (flAlt) keybd_event(VK_MENU, 0,KEYEVENTF_KEYUP,0);
+ flAlt = false;
+ }
+
+
+ for (i=0; i<4; i++)
+ {
+ if (buf1[i]==19)
{
- flNum = (key==1);
- keybd_event(VK_NUMLOCK, 0,0,0);
- keybd_event(VK_NUMLOCK, 0, KEYEVENTF_KEYUP, 0);
-
-
- key=0;
- //
+ if (!flCtrl) keybd_event(VK_CONTROL, 0,0,0);
+ flCtrl = true;
+ buf1[i]=0;
}
-
-
-//
- for (i=0; i<4; i++)
+ if (buf1[i]==20)
{
- if ( (buf1[i]<0) || (buf1[i]>29) ) buf1[i]=0;
-
+ if (!flAlt) keybd_event(VK_MENU, 0,0,0);
+ flAlt = true;
+ buf1[i]=0;
}
-
-
-// Если в комбинации нет Alt или Ctrl их надо отжать
-// Если в комбинации есть Alt или Ctrl 1й раз нажимаем, дальше игнорируем до пропажи
-
-
- int s=0;
- for (i=0; i<4; i++) {if (buf1[i]!=19) {s++;}}
- if (s==4)
- {
- if (flCtrl) keybd_event(VK_CONTROL, 0,KEYEVENTF_KEYUP,0);
- flCtrl = false;
- }
-
- s=0;
- for (i=0; i<4; i++) {if (buf1[i]!=20) { s++;}}
- if (s==4)
- {
-
- if (flAlt) keybd_event(VK_MENU, 0,KEYEVENTF_KEYUP,0);
- flAlt = false;
- }
-
-
- for (i=0; i<4; i++)
- {
- if (buf1[i]==19)
- {
- if (!flCtrl) keybd_event(VK_CONTROL, 0,0,0);
- flCtrl = true;
- buf1[i]=0;
- }
- if (buf1[i]==20)
- {
- if (!flAlt) keybd_event(VK_MENU, 0,0,0);
- flAlt = true;
- buf1[i]=0;
- }
-
-
- }
-
-
-// если есть код отличный от 0
- if (buf1[0]+buf1[1]+buf1[2]+buf1[3])
- {
- // if (splashIsOn==0)
- {
- for (i=0; i<4; i++)
- {
- if (buf1[i]!=0)
- {
-//qDebug("----- %d [17]=%d [18]=%d ", buf1[0], pressedKey[17], pressedKey[18]);
- if ((pressedKey[buf1[i]]==0)||(pressedKey[buf1[i]]>keybMaxDelay))
- keybd_event(winCode[buf1[i]],0,0,0);
- }
- }
-//qDebug("[][][] %d %d %d %d ", buf1[0], buf1[1], buf1[2], buf1[3]);
- for (i=1; i<29; i++)
- {
- if ((buf1[0]!=i)&&(buf1[1]!=i)&&(buf1[2]!=i)&&(buf1[3]!=i))
- {
- pressedKey[i]=0;
- }
- else
- {
- pressedKey[i]++;
- }
-
- }
-
-
-// for (i=0; i<4; i++)
-// if (buf1[i]!=0) keybd_event(winCode[buf1[i]],0,KEYEVENTF_KEYUP,0);
-
- // if (flCtrl) keybd_event(VK_CONTROL, 0,KEYEVENTF_KEYUP,0);
- // if (flAlt) keybd_event(VK_MENU, 0,KEYEVENTF_KEYUP,0);
- }
-
-// if (splashIsOn==4)
-// for (i=0; i<4; i++)
-// if (buf1[i]==16)
-// {
-// hideSplash();
-// ui->graphicsView->centerOn(0,0);
-// }
+ }
+ // если работаем в режиме интерфейса или ввода даты или ввода логина или пароля
+ if ((splashIsOn==0)||(splashIsOn==4)||(splashIsOn==7)||(splashIsOn==8)) {
+ // если есть код отличный от 0
+ if (buf1[0]+buf1[1]+buf1[2]+buf1[3]) {
+ for (i=0; i<4; i++)
+ if (buf1[i]!=0)
+ if ((pressedKey[buf1[i]]==0)||(pressedKey[buf1[i]]>keybMaxDelay))
+ keybd_event(winCode[buf1[i]],0,0,0);
+ //qDebug("[][][] %d %d %d %d ", buf1[0], buf1[1], buf1[2], buf1[3]);
+ for (i=1; i<29; i++)
+ if ((buf1[0]!=i)&&(buf1[1]!=i)&&(buf1[2]!=i)&&(buf1[3]!=i))
+ pressedKey[i]=0;
+ else
+ pressedKey[i]++;
} // if (buf1[0]+buf1[1]+buf1[2]+buf1[3])
else
- {
for (i=0; i<29; i++) pressedKey[i]=0;
- }
-
-// ----- платформозависимый кусок - реализация для Вин
-// keybd_event(keyWin, 0,0,0);
-// keybd_event(keyWin, 0, KEYEVENTF_KEYUP, 0);
-
-// }
+ }
}
void Widget::processPendingDatagrams() // сообщение о целях
@@ -821,7 +777,7 @@ void Widget::processPendingDatagrams() //
datagram.resize(udpSocket->pendingDatagramSize());
udpSocket->readDatagram(datagram.data(), datagram.size());
- // qDebug("size=%d", datagram.size());
+ // qDebug("size=%d", datagram.size());
if (datagram.size()==1460)
{
// Анализ и действие
@@ -894,7 +850,10 @@ void Widget::processPendingDatagrams() //
//qDebug(" ugolRLS: %f", tFloat);
d.setFloatingPointPrecision(QDataStream::DoublePrecision);
- d>>tByte>>tByte>>tByte;
+ d>>tByte>>tByte;
+ // if (tByte==36)
+ // showSplash(13);
+ d>>tByte;
d >> tReal; // эквивалент 2 сингл azMetkaCURLS и dalnMetkaCURLS
@@ -930,17 +889,19 @@ void Widget::processPendingDatagrams() //
if (pwrCVS[0]==1)
{
if (openWidget) openWidget->close();
+ if (splashIsOn==15)
+ {
+ loadScreenTmr->stop();
+ tmpGS->clear();
+ tmpGS->addPixmap(QPixmap(":/fon/pics/loading.png"));
+ }
showSplash(1);
}
else
{
if ((pwrCVS[0]==2)&&(splashIsOn==1))
{
-
- showSplash(3);
- tmpGS->clear();
- tmpGS->addPixmap(QPixmap(":/fon/pics/loading.png"));
-
+ rebootSlot();
// qDebug("power");
}
}
@@ -958,10 +919,7 @@ void Widget::processPendingDatagrams() //
//--
if (tByte==2)
{
- showSplash(3);
- tmpGS->clear();
- tmpGS->addPixmap(QPixmap(":/fon/pics/loading.png"));
-
+ rebootSlot();
// qDebug("reboot");
}
@@ -989,7 +947,7 @@ void Widget::processPendingDatagrams() //
d >> tWord; // АС цель
if (tWord==0) ASnumTarget=-1; else ASnumTarget = findTargetFromId(tWord);
-// if (tWord!=8) qDebug("-- %d", tWord);
+ // if (tWord!=8) qDebug("-- %d", tWord);
d >> tByte; // inZone
if (tByte==2)
@@ -1053,8 +1011,8 @@ void Widget::processPendingDatagrams() //
ui->radioButton_Z1->setChecked(0);
ui->btnZone->hide();
-// ui->lineEdit_6->setText("0");
-// ui->lineEdit_7->setText("0");
+ // ui->lineEdit_6->setText("0");
+ // ui->lineEdit_7->setText("0");
basePoxod = 2;
break;
case 2:
@@ -1063,18 +1021,21 @@ void Widget::processPendingDatagrams() //
break;
default:
basePoxod = 0;
-// qDebug("%d", tByte);
+ // qDebug("%d", tByte);
break;
}
+ qreal crossD, crossAn;
+
d.setFloatingPointPrecision(QDataStream::SinglePrecision);
d >> AS_t1 >> AS_t2 >> VCU_t1 >> VCU_t2;
d >> R_N_t1 >> R_N_t2 >> R_V_t1 >> R_V_t2;
- d >> tFloat >> tFloat;
- d >> AS_par;
+ d >> crossD >> crossAn;
+ d >> AS_par; // Param
ui->lineEdit_5->setText(QString::number(AS_par));
d >> tFloat;
d.setFloatingPointPrecision(QDataStream::DoublePrecision);
+ grCross->setPosPolar(crossD/100, crossAn);
d >> tByte; // резерв
d >> tWord; // резерв
@@ -1128,10 +1089,9 @@ void Widget::processPendingDatagrams() //
d.setFloatingPointPrecision(QDataStream::DoublePrecision);
- if (fl_target)
- {
- if (!MRUmode) addTarget(id, aType, gType, cX, cY, cH, vX, vY);
- if (!MRUmode) subAr[findTargetFromId(id)]=true;
+ if (fl_target && !MRUmode) {
+ addTarget(id, aType, gType, cX, cY, cH, vX, vY);
+ subAr[findTargetFromId(id)]=true;
}
}
if (!MRUmode) clearOldTarget(subAr);
@@ -1230,36 +1190,36 @@ void Widget::process_TargetKDG() { //
// CustomDataSize: byte;
d >> tByte;
switch (CDType) {
- case 1:
- d >> tByte;
- d >> tWord;
- if (tByte==0) gType = targetEnemy;
- else if (tByte==1) gType = targetOwn;
- else gType = targetUnknown;
- // обновляем данные по цели id, если её еще не было, то создается новая с выделением внутреннего номера
- if (MRUmode) {
- addTarget(id, aType, gType, cX, cY, cH, vX, vY);
- seenTargets[findTargetFromId(id)]=true;
- }
+ case 1:
+ d >> tByte;
+ d >> tWord;
+ if (tByte==0) gType = targetEnemy;
+ else if (tByte==1) gType = targetOwn;
+ else gType = targetUnknown;
+ // обновляем данные по цели id, если её еще не было, то создается новая с выделением внутреннего номера
+ if (MRUmode) {
+ addTarget(id, aType, gType, cX, cY, cH, vX, vY);
+ seenTargets[findTargetFromId(id)]=true;
+ }
break;
- case 2:
- d >> tFloat;
- d >> tWord;
- d >> tByte;
- d >> tByte;
- break;
- case 3:
- d >> tFloat;
- d >> tFloat;
- d >> tWord ;
- d >> tWord;
- d >> tWord ;
- d >> tWord;
- d >> tByte;
- d >> tByte;
+ case 2:
+ d >> tFloat;
+ d >> tWord;
+ d >> tByte;
+ d >> tByte;
+ break;
+ case 3:
+ d >> tFloat;
+ d >> tFloat;
+ d >> tWord ;
+ d >> tWord;
+ d >> tWord ;
+ d >> tWord;
+ d >> tByte;
+ d >> tByte;
- d >> tWord ;
- d >> tWord; // выравнивание
+ d >> tWord ;
+ d >> tWord; // выравнивание
break;
case 0:
break;
@@ -1268,7 +1228,7 @@ void Widget::process_TargetKDG() { //
}
}
-// Q_ASSERT(d.atEnd());
+ // Q_ASSERT(d.atEnd());
} // while hasPendingDatagram
}
@@ -1315,7 +1275,10 @@ void Widget::msTickGraph()
grAzimutGUN->setText(str);
- aRLSmdu = int((ugolGUN)*6000/360) % 6000;
+ if ((ugolGUN<90)&&(ugolGUN>-90))
+ aRLSmdu = int((ugolGUN)*50/3) % 6000;
+ else
+ aRLSmdu=0;
str.clear();
if (ugolGUN<0) { str = QString("-"); aRLSmdu = -aRLSmdu;}
@@ -1329,7 +1292,7 @@ void Widget::msTickGraph()
grAzimutGUN->setText(str,1);
qreal tDU = (qreal((GAGdu-GAGdu0)*100+(GAGmdu-GAGmdu0))) *6/100;
-// qDebug("%f ", tDU);
+ // qDebug("%f ", tDU);
grAzimutKurs->setGlobalAngle(90-azimutKurs-tDU);
grAzimutKurs->setTextPos(QPointF((185*sin((azimutKurs+tDU)*M_PI/180)-10)/zoom, -185*cos((azimutKurs+tDU)*M_PI/180)/zoom));
@@ -1344,18 +1307,18 @@ void Widget::msTickGraph()
str.append(QString::number(aRLSmdu));
grAzimutKurs->setText(str);
-//qDebug("azimRLS: %f", azimutRLS);
+ //qDebug("azimRLS: %f", azimutRLS);
grAzimutRLS->setAngle(-azimutRLS+90);
grOwnSect->setAngles(-ownSect.left+90, -ownSect.right+90);
grKzsSect->setAngles(-kzsSect.left+90, -kzsSect.right+90);
-// grAir[0]->setCoord(grAir[0]->cX+0.20, grAir[0]->cY+0.15);
-// grAir[2]->setCoord(grAir[2]->cX-0.30, grAir[2]->cY+0.15);
-// for (int i=0; i<100; i++)
-// if (grAir[i]->exist)
-// grAir[i]->moveByTime(1);
+ // grAir[0]->setCoord(grAir[0]->cX+0.20, grAir[0]->cY+0.15);
+ // grAir[2]->setCoord(grAir[2]->cX-0.30, grAir[2]->cY+0.15);
+ // for (int i=0; i<100; i++)
+ // if (grAir[i]->exist)
+ // grAir[i]->moveByTime(1);
if (VCUnumTarget!=-1)
{
@@ -1370,7 +1333,7 @@ void Widget::msTickGraph()
if (ASnumTarget!=-1)
{
-// grVCU->setPos1(grAir[ASnumTarget]->coordsL());
+ // grVCU->setPos1(grAir[ASnumTarget]->coordsL());
QPointF p1 = grAzimutRLS->pos1();
@@ -1395,12 +1358,12 @@ void Widget::msTickGraph()
}
else
{
-// grVCU->setPos1(0,0);
+ // grVCU->setPos1(0,0);
grAzimutRLSnormal->setPos0(0,0);
grAzimutRLSnormal->setLength(0);
}
-// reCalculate();
+ // reCalculate();
}
@@ -1412,25 +1375,25 @@ void Widget::setGraph()
gsc = new QGraphicsScene(this);
gsc->setSceneRect(-11310,-11310,22610, 22610); // в гектаметрах
-// QGraphicsRectItem *ri;
-// ri = gsc->addRect(-8000,-8185,16000,16370);
-// ri->setPen(QPen(Qt::white));
-// ri = gsc->addRect(-4000,-4090,8000,8180);
-// ri->setPen(QPen(Qt::white));
-// ri = gsc->addRect(-2000,-2045,4000,4090);
-// ri->setPen(QPen(Qt::white));
-// ri = gsc->addRect(-900,-920,1800,1840);
-// ri->setPen(QPen(Qt::white));
-// ri = gsc->addRect(-450,-460,900,920);
-// ri->setPen(QPen(Qt::white));
-// ri = gsc->addRect(-350,-360,700,720);
-// ri->setPen(QPen(Qt::white));
-// ri = gsc->addRect(-250,-255,500,510);
-// ri->setPen(QPen(Qt::white));
-// ri = gsc->addRect(-120,-125,240,250);
-// ri->setPen(QPen(Qt::white));
-// ri = gsc->addRect(-60,-60,120,120);
-// ri->setPen(QPen(Qt::white));
+ // QGraphicsRectItem *ri;
+ // ri = gsc->addRect(-8000,-8185,16000,16370);
+ // ri->setPen(QPen(Qt::white));
+ // ri = gsc->addRect(-4000,-4090,8000,8180);
+ // ri->setPen(QPen(Qt::white));
+ // ri = gsc->addRect(-2000,-2045,4000,4090);
+ // ri->setPen(QPen(Qt::white));
+ // ri = gsc->addRect(-900,-920,1800,1840);
+ // ri->setPen(QPen(Qt::white));
+ // ri = gsc->addRect(-450,-460,900,920);
+ // ri->setPen(QPen(Qt::white));
+ // ri = gsc->addRect(-350,-360,700,720);
+ // ri->setPen(QPen(Qt::white));
+ // ri = gsc->addRect(-250,-255,500,510);
+ // ri->setPen(QPen(Qt::white));
+ // ri = gsc->addRect(-120,-125,240,250);
+ // ri->setPen(QPen(Qt::white));
+ // ri = gsc->addRect(-60,-60,120,120);
+ // ri->setPen(QPen(Qt::white));
grOwnSect = new graphicsArcItem(0,0, 1, ownSect.left, ownSect.right);
@@ -1457,7 +1420,7 @@ void Widget::setGraph()
gsc->addItem((QGraphicsItem*)grAzimutGUN);
-// qreal tDU = ((GAGdu-GAGdu0)*100+(GAGmdu-GAGmdu0)) *6/100;
+ // qreal tDU = ((GAGdu-GAGdu0)*100+(GAGmdu-GAGmdu0)) *6/100;
grAzimutKurs = new graphicsLineItem();
grAzimutKurs->setPos0(QPointF(0,0));
@@ -1478,12 +1441,8 @@ void Widget::setGraph()
grAzimutRLS->setColor(Qt::blue);
gsc->addItem((QGraphicsItem*)grAzimutRLS);
-
-
-
-
-
-
+ grCross = new graphicsCrossItem(grCrossX, grCrossY);
+ gsc->addItem((QGraphicsItem*)grCross);
gV = new GraphicsViewMod(ui->lupa);
gV->setFocusPolicy(Qt::NoFocus);
@@ -1509,7 +1468,7 @@ void Widget::setGraph()
grAzimutRLSnormal->setZValue(1500);
gsc->addItem((QGraphicsItem*)grAzimutRLSnormal);
-// slider
+ // slider
gscRckt = new QGraphicsScene(this);
gscRckt->setSceneRect(-10000, -10000, 20000, 20000);
@@ -1538,8 +1497,8 @@ void Widget::setGraph()
grRckt2->setPen(QPen(Qt::white));
grRckt2->setBrush(QBrush(Qt::SolidPattern));
grRckt2->setBrush(QBrush(QColor(0,0,200)));
-// --! slider
-// addTargets();
+ // --! slider
+ // addTargets();
tmpGS = new QGraphicsScene(this);
ui->graphicsView->setScene(tmpGS);
@@ -1550,6 +1509,11 @@ void Widget::setGraph()
ui->graphicsView->hide();
curPosition = 3012;
+ blackRect = new QGraphicsRectItem();
+ blackRect->setRect(-1, -1, 801, 601);
+ blackRect->setPen(QPen(Qt::black));
+ blackRect->setBrush(QBrush(Qt::SolidPattern));
+ blackRect->setBrush(QBrush(QColor(0,0,0)));
QGraphicsScene *tmpGS1 = new QGraphicsScene(this);
@@ -1564,6 +1528,7 @@ void Widget::putDate()
{
QFont font("Consolas", 11, QFont::DemiBold);
+ keyPressEnabled = true;
grLoadDate = new QGraphicsTextItem();
tmpGS->addItem(grLoadDate);
grLoadDate->setDefaultTextColor(QColor(193, 193, 193));
@@ -1603,6 +1568,7 @@ void Widget::putLogin()
grLoadLogin->setZValue(1000);
grLoadLogin->setFont(font);
strLoadLogin = "login: ";
+ keyPressEnabled = true;
grLoadLogin->setPlainText(strLoadLogin);
grLoadLogin->setPos(-3, curPosition);
getFocus();
@@ -1643,8 +1609,8 @@ int Widget::findNextNum(int n)
currentNum=i;
return i;
};
-// экстр. случай: нет свободных номеров, удаляем самую старую цель
-// delete grAir[currentNum];
+ // экстр. случай: нет свободных номеров, удаляем самую старую цель
+ // delete grAir[currentNum];
i=currentNum;
grAir[i]->setNull();
grAir[i]->exist=true;
@@ -1689,7 +1655,7 @@ void Widget::addTarget(int id, int aType, int gType, qreal cX, qreal cY, qreal c
void Widget::addTargets()
{
- int num;
+ int num;
num = findNextNum(currentNum);
grAir[num]->exist = true;
@@ -1713,7 +1679,7 @@ void Widget::addTargets()
grAir[num]->setGraphicsEffect((QGraphicsEffect*)grAir[num]->coler);
gsc->addItem((QGraphicsItem*)grAir[num]);
-// targetsCount = 2;
+ // targetsCount = 2;
}
bool Widget::readFile()
@@ -1891,9 +1857,11 @@ void Widget::writeFile()
void Widget::initParams()
{
+ systemHalt=false;
+ keyPressEnabled = false;
int i;
-// quickLoad = true;
+ // quickLoad = true;
for (i=0; i<100; i++)
{
@@ -1909,6 +1877,9 @@ void Widget::initParams()
basePoxod = 0;
targetsCount = 0;
+ GAGmdu = GAGdu = GAGmdu0 = GAGdu0 = 0;
+ cvsRezhim = 2;
+
AS_t1 = AS_t2 = VCU_t1 = VCU_t2 = R_N_t1 = R_N_t2 = R_V_t1 = R_V_t2 = 0;
rezhimGAGtxt[0] = QString::fromLocal8Bit("ГАГдв");
@@ -1922,8 +1893,8 @@ void Widget::initParams()
-// splashIsOn=1;
-// исходные данные по ракетам
+ // splashIsOn=1;
+ // исходные данные по ракетам
openWidget = 0;
rckV0 = 0;
@@ -1939,7 +1910,7 @@ void Widget::initParams()
rckAngle = 80; // 80 градусов - предельный угол вертикальной стрельбы
-//
+ //
zoomKoef[8] = 4.16;
zoomKoef[7] = 2.06;
zoomKoef[6] = 1.00;
@@ -1956,7 +1927,7 @@ void Widget::initParams()
for (i=0; i<100; i++) targetsIds[i]=0;
-//
+ //
if (!readFile())
{
@@ -2029,13 +2000,14 @@ void Widget::initParams()
}
azimutKurs = 0;
-
+ ugolGUN = 0;
+ grCrossX = grCrossY = 0;
}
void Widget::initBtnUIDs()
{
ui->pushButton->uid = 0x11;
-// ui->pushButton_2->uid = 0x12;
+ // ui->pushButton_2->uid = 0x12;
ui->pushButton_3->uid = 0x13;
ui->pushButton_4->uid = 0x14;
ui->pushButton_5->uid = 0x15;
@@ -2065,15 +2037,15 @@ void Widget::switchWidget(int c)
{
switch (c)
{
- case 0x31:
- ui->pushButton_4->setFocus();
- break;
- case 0x32:
- ui->lupa->setFocus();
- ui->pushButton->setFocus();
- break;
- default:
- break;
+ case 0x31:
+ ui->pushButton_4->setFocus();
+ break;
+ case 0x32:
+ ui->lupa->setFocus();
+ ui->pushButton->setFocus();
+ break;
+ default:
+ break;
}
}
@@ -2086,175 +2058,182 @@ void Widget::keyPressEvent ( QKeyEvent *e )
bool fl;
fl = true;
-
- if (e->modifiers() & Qt::ControlModifier)
+ if (!keyPressEnabled)
+ return;
+ if ((splashIsOn==0)||(splashIsOn==4)||(splashIsOn==7)||(splashIsOn==8))
{
- if ((c>=0x30) && (c<=0x39))
+
+ if (e->modifiers() & Qt::ControlModifier)
{
-// обрабатываем быстрый вызов Crtl+1x, Crtl+2x, Crtl+5x и Crtl+9x
- if ((cOld==0x31)||(cOld==0x32)||(cOld==0x35)||(cOld==0x39))
+ if ((c>=0x30) && (c<=0x39))
{
- res = (cOld-0x30)*10+c-0x30;
-// ui->lineEdit->setText(QString::number(res, 10));
-
- switch (res)
+ // обрабатываем быстрый вызов Crtl+1x, Crtl+2x, Crtl+5x и Crtl+9x
+ if ((cOld==0x31)||(cOld==0x32)||(cOld==0x35)||(cOld==0x39))
{
- case 21:
- msVvodReper();
- break;
- case 22:
- msVvodTS();
- break;
- case 23:
- msGeoToGK();
- break;
- case 24:
- msGKToGeo();
- break;
- case 25:
- msGKToGK();
- break;
- default:
- break;
+ res = (cOld-0x30)*10+c-0x30;
+ // ui->lineEdit->setText(QString::number(res, 10));
+
+ switch (res)
+ {
+ case 21:
+ msVvodReper();
+ break;
+ case 22:
+ msVvodTS();
+ break;
+ case 23:
+ msGeoToGK();
+ break;
+ case 24:
+ msGKToGeo();
+ break;
+ case 25:
+ msGKToGK();
+ break;
+ case 91:
+ rebootSlot();
+ break;
+ default:
+ break;
+ }
+
+
}
-
-
+ cOld = c;
}
- cOld = c;
+ else
+ cOld = 0;
+
+
+
+
+
}
- else
- cOld = 0;
-
-
-
-
- }
-
- if (e->modifiers() & Qt::AltModifier)
- {
- switch (c) {
+ if (e->modifiers() & Qt::AltModifier)
+ {
+ switch (c) {
case 0x31:
- // ui->lineEdit->setText("Alt+1");
+ // ui->lineEdit->setText("Alt+1");
ui->pushButton_3->setFocus();
releaseKeyboard();
break;
case 0x32:
- // ui->lineEdit->setText("Alt+2");
+ // ui->lineEdit->setText("Alt+2");
ui->pushButton->setFocus();
releaseKeyboard();
break;
default:
break;
+ }
}
- }
- if (splashIsOn==4)
- {
- if ((c == Qt::Key_Backspace)&&(strLoadDate.length()>0))
- strLoadDate = strLoadDate.left(strLoadDate.length()-1);
- if ((c>=Qt::Key_0)&&(c<=Qt::Key_9))
- strLoadDate.append(QChar(c));
- if (c==Qt::Key_F11)
- strLoadDate.append(" ");
-
- grLoadDate->setPlainText(strLoadDate);
-
- if ((c==Qt::Key_Enter)||(c==Qt::Key_Return))
+ if (splashIsOn==4)
{
- QDateTime dt = QDateTime::fromString(strLoadDate, "ddMMyy HHmmss");
- if (dt.isValid())
+ if ((c == Qt::Key_Backspace)&&(strLoadDate.length()>0))
+ strLoadDate = strLoadDate.left(strLoadDate.length()-1);
+ if ((c>=Qt::Key_0)&&(c<=Qt::Key_9))
+ strLoadDate.append(QChar(c));
+ if (c==Qt::Key_F11)
+ strLoadDate.append(" ");
+
+ grLoadDate->setPlainText(strLoadDate);
+
+ if ((c==Qt::Key_Enter)||(c==Qt::Key_Return))
{
- QGraphicsTextItem *ti = tmpGS->addText(dt.toString("ddd d MMM yyyy h:mm:ss"), QFont("Consolas", 11));
- ti->setDefaultTextColor(QColor(193, 193, 193));
+ QDateTime dt = QDateTime::fromString(strLoadDate, "ddMMyy HHmmss");
+ if (dt.isValid())
+ {
+ QGraphicsTextItem *ti = tmpGS->addText(dt.toString("ddd d MMM yyyy h:mm:ss"), QFont("Consolas", 11));
+ ti->setDefaultTextColor(QColor(193, 193, 193));
+ curPosition+=12;
+
+ ti->setPos(-3, curPosition);
+ ui->graphicsView->centerOn(0, curPosition-12-113);
+
+
+ ti = tmpGS->addText(QString::fromLocal8Bit("ПРОВЕРКА РАБОТОСПОСОБНОСТИ ЭВМ"), QFont("Consolas", 11));
+ ti->setDefaultTextColor(QColor(193, 193, 193));
+ curPosition+=24;
+ ti->setPos(-3, curPosition);
+ ui->graphicsView->centerOn(0, curPosition-24-113);
+
+ splashIsOn = 5;
+ QTimer::singleShot(1000, this, SLOT(loadScreenTick()));
+
+
+ }
+ else
+ {
+ putDate();
+ }
+ }
+
+ fl = false;
+
+ }
+
+
+ if (splashIsOn==7)
+ {
+ if (c == Qt::Key_NumLock || c==Qt::Key_N) strLoadLogin.append("n");
+ if ((c==Qt::Key_Backspace)&&(strLoadLogin.length()>7))
+ strLoadLogin = strLoadLogin.left(strLoadLogin.length()-1);
+ if ((c>=Qt::Key_0)&&(c<=Qt::Key_9))
+ strLoadLogin.append(QChar(c));
+ if ((c==Qt::Key_Enter)||(c==Qt::Key_Return))
+ {
+ splashIsOn = 8;
+ grLoadPass = new QGraphicsTextItem();
+ tmpGS->addItem(grLoadPass);
+ grLoadPass->setDefaultTextColor(QColor(193, 193, 193));
+ grLoadPass->setZValue(1000);
+ grLoadPass->setFont(QFont("Consolas", 11));
+ grLoadPass->setPlainText("pass: ");
curPosition+=12;
-
- ti->setPos(-3, curPosition);
- ui->graphicsView->centerOn(0, curPosition-12-113);
-
-
- ti = tmpGS->addText(QString::fromLocal8Bit("ПРОВЕРКА РАБОТОСПОСОБНОСТИ ЭВМ"), QFont("Consolas", 11));
- ti->setDefaultTextColor(QColor(193, 193, 193));
- curPosition+=24;
- ti->setPos(-3, curPosition);
- ui->graphicsView->centerOn(0, curPosition-24-113);
-
- splashIsOn = 5;
- QTimer::singleShot(1000, this, SLOT(loadScreenTick()));
-
-
- }
- else
- {
- putDate();
- }
- }
-
- fl = false;
-
- }
-
-
- if (splashIsOn==7)
- {
- if (c == Qt::Key_NumLock) strLoadLogin.append("n");
- if ((c==Qt::Key_Backspace)&&(strLoadLogin.length()>7))
- strLoadLogin = strLoadLogin.left(strLoadLogin.length()-1);
- if ((c>=Qt::Key_0)&&(c<=Qt::Key_9))
- strLoadLogin.append(QChar(c));
- if ((c==Qt::Key_Enter)||(c==Qt::Key_Return))
- {
- splashIsOn = 8;
- grLoadPass = new QGraphicsTextItem();
- tmpGS->addItem(grLoadPass);
- grLoadPass->setDefaultTextColor(QColor(193, 193, 193));
- grLoadPass->setZValue(1000);
- grLoadPass->setFont(QFont("Consolas", 11));
- grLoadPass->setPlainText("pass: ");
- curPosition+=12;
- grLoadPass->setPos(-3, curPosition);
- strLoadPass.clear();
-
- }
- grLoadLogin->setPlainText(strLoadLogin);
- fl = false;
- } else
-
- if (splashIsOn == 8)
- {
- if ((c==Qt::Key_Backspace)&&(strLoadPass.length()>0))
- strLoadPass = strLoadPass.left(strLoadPass.length()-1);
- if ((c>=Qt::Key_0)&&(c<=Qt::Key_9))
- strLoadPass.append(QChar(c));
- if ((c==Qt::Key_Enter)||(c==Qt::Key_Return))
- {
- if ((strLoadLogin==QString("login: n"))&&(strLoadPass==QString("7")))
- {
- hideSplash();
- strLoadLogin.clear();
+ grLoadPass->setPos(-3, curPosition);
strLoadPass.clear();
+
}
- else
+ grLoadLogin->setPlainText(strLoadLogin);
+ fl = false;
+ } else
+
+ if (splashIsOn == 8)
{
- strLoadLogin.clear();
- strLoadPass.clear();
- if (grLoadLogin) delete grLoadLogin;
- if (grLoadPass) delete grLoadPass;
- splashIsOn = 7;
- putLogin();
+ if ((c==Qt::Key_Backspace)&&(strLoadPass.length()>0))
+ strLoadPass = strLoadPass.left(strLoadPass.length()-1);
+ if ((c>=Qt::Key_0)&&(c<=Qt::Key_9))
+ strLoadPass.append(QChar(c));
+ if ((c==Qt::Key_Enter)||(c==Qt::Key_Return))
+ {
+ if ((strLoadLogin==QString("login: n"))&&(strLoadPass==QString("7")))
+ {
+ hideSplash();
+ strLoadLogin.clear();
+ strLoadPass.clear();
+ }
+ else
+ {
+ strLoadLogin.clear();
+ strLoadPass.clear();
+ if (grLoadLogin) delete grLoadLogin;
+ if (grLoadPass) delete grLoadPass;
+ splashIsOn = 7;
+ putLogin();
+ }
+
+ }
+ fl = false;
+
}
- }
- fl = false;
+ if ((c==Qt::Key_Left)&&(ui->pushButton_4->hasFocus())) fl = false;
+ if ((c==Qt::Key_Right)&&(ui->pushButton_14->hasFocus())) fl = false;
+
+ if (fl) QWidget::keyPressEvent(e);
}
-
-
- if ((c==Qt::Key_Left)&&(ui->pushButton_4->hasFocus())) fl = false;
- if ((c==Qt::Key_Right)&&(ui->pushButton_14->hasFocus())) fl = false;
-
- if (fl) QWidget::keyPressEvent(e);
-
}
@@ -2348,9 +2327,13 @@ void Widget::createActions()
connect(m6AutoZA, SIGNAL(triggered()), this, SLOT(msVvodAutoZA()));
m7Default = new QAction(QString::fromLocal8Bit("Исходное сост"), this);
+ connect(m7Default, SIGNAL(triggered()), this, SLOT(on_pushButton_3_clicked()));
m7BR = new QAction(QString::fromLocal8Bit("БР"), this);
+ connect(m7BR, SIGNAL(triggered()), this, SLOT(on_pushButton_4_clicked()));
m7FK = new QAction(QString::fromLocal8Bit("ФК"), this);
+ connect(m7FK, SIGNAL(triggered()), this, SLOT(on_pushButton_5_clicked()));
m7TRU = new QAction(QString::fromLocal8Bit("ТРУ"), this);
+ connect(m7TRU, SIGNAL(triggered()), this, SLOT(on_pushButton_6_clicked()));
m7CU = new QAction(QString::fromLocal8Bit("ЦУ_N/ЦУ_B"), this);
connect(m7CU, SIGNAL(triggered()), this, SLOT(msVvodCU_N()));
m7CUDenied = new QAction(QString::fromLocal8Bit("Отказ от ВЦУ"), this);
@@ -2363,6 +2346,7 @@ void Widget::createActions()
m9View = new QAction(QString::fromLocal8Bit("Просмотр ЦАП/АЦП"), this);
m0Reboot = new QAction(QString::fromLocal8Bit("Перезапуск ПО Ctrl+91"), this);
+ connect(m0Reboot, SIGNAL(triggered()), this, SLOT(rebootSlot()));
m0Shutdown = new QAction(QString::fromLocal8Bit("Выключение Ctrl+92"), this);
connect(m0Shutdown, SIGNAL(triggered()), this, SLOT(closeSlot()));
}
@@ -2399,10 +2383,10 @@ void Widget::createMenu()
m1OperatorTren = mTrenag->addMenu(QString::fromLocal8Bit("Тренировка оператора"));
la.clear();
la << m1Rezhim
-// << m1ShowMark
+ // << m1ShowMark
<< m1ResetCourse
-// << m1ResetMark
-// << m1Timer
+ // << m1ResetMark
+ // << m1Timer
;
m1OperatorTren->addActions(la);
@@ -2499,26 +2483,26 @@ void Widget::catcher(int p)
QMenu *m;
switch (p) {
- case 1:
+ case 1:
- la = menu1->actions();
- menu1->setActiveAction(la.at(0));
- m = la.at(0)->menu();
- la = m->actions();
- m->setActiveAction(la.at(0));
- m->setFocus();
+ la = menu1->actions();
+ menu1->setActiveAction(la.at(0));
+ m = la.at(0)->menu();
+ la = m->actions();
+ m->setActiveAction(la.at(0));
+ m->setFocus();
- break;
- case 2:
- la = menu->actions();
- menu->setActiveAction(la.at(0));
- m = la.at(0)->menu();
- la = m->actions();
- m->setActiveAction(la.at(0));
- m->setFocus();
- break;
- default:
- break;
+ break;
+ case 2:
+ la = menu->actions();
+ menu->setActiveAction(la.at(0));
+ m = la.at(0)->menu();
+ la = m->actions();
+ m->setActiveAction(la.at(0));
+ m->setFocus();
+ break;
+ default:
+ break;
}
}
@@ -2529,26 +2513,26 @@ void Widget::catchel(int p)
switch (p) {
- case 1:
+ case 1:
- la = menu1->actions();
- menu1->setActiveAction(la.last());
+ la = menu1->actions();
+ menu1->setActiveAction(la.last());
- m = la.last()->menu();
- la = m->actions();
- m->setActiveAction(la.at(0));
- m->setFocus();
- break;
- case 2:
- la = menu->actions();
- menu->setActiveAction(la.last());
- m = la.last()->menu();
- la = m->actions();
- m->setActiveAction(la.at(0));
- m->setFocus();
- break;
- default:
- break;
+ m = la.last()->menu();
+ la = m->actions();
+ m->setActiveAction(la.at(0));
+ m->setFocus();
+ break;
+ case 2:
+ la = menu->actions();
+ menu->setActiveAction(la.last());
+ m = la.last()->menu();
+ la = m->actions();
+ m->setActiveAction(la.at(0));
+ m->setFocus();
+ break;
+ default:
+ break;
}
}
@@ -2704,7 +2688,7 @@ void Widget::msVvod2z()
void Widget::msVvodKCancel()
{
- // send Otkaz
+ // send Otkaz
VCUnumTarget = -1;
@@ -2717,7 +2701,7 @@ void Widget::msVvodKCancel()
void Widget::msVvodKZapret()
{
- // send Zapret
+ // send Zapret
ui->lineEdit_27->setText(QString::fromLocal8Bit("ДКЗС"));
ui->lineEdit_26->setText(QString::fromLocal8Bit("ДКЗС"));
@@ -2727,7 +2711,7 @@ void Widget::msVvodKZapret()
void Widget::msVvodKKill()
{
-// send Kill
+ // send Kill
ui->lineEdit_27->setText(QString::fromLocal8Bit("Убил"));
ui->lineEdit_26->setText(QString::fromLocal8Bit("Убил"));
QTimer::singleShot(500, ui->lineEdit_27, SLOT(clear()));
@@ -2771,10 +2755,10 @@ void Widget::msVvodCU_N2(int NC, int z2Z) //
VCUnumTarget = abs(NC)-1;
ui->lineEdit_8->setText(QString::number(NC));
if (NC>0) ui->lineEdit_16->setText(QString::fromLocal8Bit("ЦУ"));
- else ui->lineEdit_16->setText(QString::fromLocal8Bit("КЗС"));
+ else ui->lineEdit_16->setText(QString::fromLocal8Bit("КЗС"));
-// reCalculate();
+ // reCalculate();
// и соотв. характеристики цели
}
@@ -2848,7 +2832,7 @@ void Widget::reCalculate()
-// ASnumTarget = 0;
+ // ASnumTarget = 0;
if (ASnumTarget!=-1)
{
@@ -2918,15 +2902,15 @@ void Widget::reCalculate()
grRckt1->setRect(R_N_t1*40, 0, R_N_t2*40, 30);
grRckt2->setRect(R_V_t1*40, 0, R_V_t2*40, 30);
-// ui->lineEdit_5->setText(QString::number(AS_par));
+ // ui->lineEdit_5->setText(QString::number(AS_par));
-// if (basePoxod==2)
-// {
-// ui->lineEdit_7->setText("0");
-// ui->lineEdit_6->setText("0");
-// }
-// else
-// if (basePoxod==1)
+ // if (basePoxod==2)
+ // {
+ // ui->lineEdit_7->setText("0");
+ // ui->lineEdit_6->setText("0");
+ // }
+ // else
+ // if (basePoxod==1)
{
ui->lineEdit_7->setText(QString::number(AS_t1, 'f', 1));
ui->lineEdit_6->setText(QString::number(AS_t2, 'f', 1));
@@ -2936,7 +2920,7 @@ void Widget::reCalculate()
else
{
ui->lineEdit_4->setText("0");
- // ui->lineEdit_5->setText("0");
+ // ui->lineEdit_5->setText("0");
ui->lineEdit_6->setText("0");
ui->lineEdit_7->setText("0");
@@ -2983,7 +2967,8 @@ void Widget::reCalculate()
mdu = int((angle)*3000) % 6000;
if (mdu<0) mdu+=6000;
du = mdu / 100; mdu %= 100;
- ui->lineEdit_24->setText(QString::number(du));
+ if (du>30) {du=du-59;mdu=100-mdu; str = "-";} else str="";
+ ui->lineEdit_24->setText(str+QString::number(du));
ui->lineEdit_25->setText(QString::number(mdu));
ui->lineEdit_18->setText(QString::number(VCU_t1, 'f', 1));
@@ -3003,12 +2988,7 @@ void Widget::reCalculate()
ui->lineEdit_17->setText("0");
ui->lineEdit_18->setText("0");
-
}
-
-
-
-
}
@@ -3049,15 +3029,37 @@ void Widget::on_pushButton_11_clicked()
msVvod2z();
}
-
-void Widget::on_pushButton_4_clicked()
+void Widget::on_pushButton_3_clicked()
{
+ ui->lineEdit->setText(QString::fromLocal8Bit("ИСХ"));
+ cvsRezhim = 1;
}
+void Widget::on_pushButton_4_clicked()
+{
+ ui->lineEdit->setText(QString::fromLocal8Bit("БР"));
+ cvsRezhim = 2;
+}
+
+
+void Widget::on_pushButton_5_clicked()
+{
+ ui->lineEdit->setText(QString::fromLocal8Bit("ФК"));
+ cvsRezhim = 3;
+}
+
+void Widget::on_pushButton_6_clicked()
+{
+ ui->lineEdit->setText(QString::fromLocal8Bit("ТРУ"));
+ cvsRezhim = 4;
+ // showSplash(15);
+}
+
+
void Widget::on_comboBox_2_currentIndexChanged(int index)
{
-// смена Zoom
+ // смена Zoom
QString str;
switch(index)
{
@@ -3093,46 +3095,49 @@ void Widget::on_comboBox_2_currentIndexChanged(int index)
}
ui->label->setText(str);
- qreal t = 1/(gV->scMeter)*zoomKoef[index];
- globalScale = t;
+ qreal t = zoomKoef[index]/(gV->scMeter);
+ qreal t_1 = 1/t;
+
gV->scale(t, t);
gV->scMeter = zoomKoef[index];
+ qreal z1 = 1/zoomKoef[index];
- grOwnSect->setRadius(223/zoomKoef[index]);
+ grOwnSect->setRadius(223*z1);
- grKzsSect->setRadius(223/zoomKoef[index]);
+ grKzsSect->setRadius(223*z1);
- grAzimutGUN->setLength(28/zoomKoef[index]);
- grAzimutGUN->setWidth(5/zoomKoef[index]);
- grAzimutGUN->setTextSize(10/zoomKoef[index]);
- grAzimutGUN->setTextSize(10/zoomKoef[index], 1);
- grAzimutGUN->setTextPos(QPointF(-10/zoomKoef[index], -20/zoomKoef[index]));
- grAzimutGUN->setTextPos(QPointF(-10/zoomKoef[index], -9/zoomKoef[index]), 1);
+ grAzimutGUN->setLength(28*z1);
+ grAzimutGUN->setWidth(5*z1);
+ grAzimutGUN->setTextSize(10*z1);
+ grAzimutGUN->setTextSize(10*z1, 1);
+ grAzimutGUN->setTextPos(QPointF(-10*z1, -20*z1));
+ grAzimutGUN->setTextPos(QPointF(-10*z1, -9*z1), 1);
qreal tDU = (qreal((GAGdu-GAGdu0)*100+(GAGmdu-GAGmdu0))) *6/100;
- grAzimutKurs->setPos0(QPointF(-200*sin((azimutKurs+tDU)*M_PI/180)/zoomKoef[index], -200*cos((azimutKurs+tDU)*M_PI/180)/zoomKoef[index]));
+ grAzimutKurs->setPos0(QPointF(-200*sin((azimutKurs+tDU)*M_PI/180)*z1, -200*cos((azimutKurs+tDU)*M_PI/180)*z1));
grAzimutKurs->setAngle(-azimutKurs-tDU+90);
- grAzimutKurs->setWidth(3/zoomKoef[index]);
- grAzimutKurs->setLength(20/zoomKoef[index]);
- grAzimutKurs->setTextPos(QPointF((-185*sin((azimutKurs+tDU)*M_PI/180)+10)/zoomKoef[index], -185*cos((azimutKurs+tDU)*M_PI/180)/zoomKoef[index]));
- grAzimutKurs->setTextSize(10/zoomKoef[index]);
+ grAzimutKurs->setWidth(3*z1);
+ grAzimutKurs->setLength(20*z1);
+ grAzimutKurs->setTextPos(QPointF((-185*sin((azimutKurs+tDU)*M_PI/180)+10)*z1, -185*cos((azimutKurs+tDU)*M_PI/180)*z1));
+ grAzimutKurs->setTextSize(10*z1);
- grAzimutRLS->setLength(219/zoomKoef[index]);
- grAzimutRLS->setWidth(2/zoomKoef[index]);
+ grAzimutRLS->setLength(219*z1);
+ grAzimutRLS->setWidth(2*z1);
for (int i=0; i<100; i++)
{
-// if (grAir[i]->exist)
+ // if (grAir[i]->exist)
{
- grAir[i]->setScaleIndex(1/zoomKoef[index]);
- grAir[i]->scale(1/t,1/t);
+ grAir[i]->setScaleIndex(z1);
+ grAir[i]->scale(t_1,t_1);
}
}
- grVCU->setWidth(1/zoomKoef[index]);
- grAzimutRLSnormal->setWidth(1/zoomKoef[index]);
+ grVCU->setWidth(z1);
+ grAzimutRLSnormal->setWidth(z1);
+ grCross->setScaleIndex(z1);
}
@@ -3140,22 +3145,20 @@ void Widget::on_comboBox_currentIndexChanged(int index)
{
for (int i=0; i<100; i++)
{
- grAir[i]->setViewSettings(index);
+ grAir[i]->setViewSettings(index);
}
}
void Widget::showSplash(int d)
{
-
-
-
- if (d==1)
+ // qDebug("show splash%d", d);
+ if (d==1) // выключена
{
loadingPos = 0;
ui->graphicsView->centerOn(0,loadingPos);
ui->graphicsView->show();
}
- if (d==0)
+ if (d==0) // Работа с ЦВС
{
if (loadScreenTmr->isActive()) loadScreenTmr->stop();
loadingPos=0;
@@ -3171,8 +3174,85 @@ void Widget::showSplash(int d)
ui->graphicsView->show();
loadingPos = 1100;
loadScreenTmr->start(300);
-// d=0;
-// ui->graphicsView->hide();
+ // d=0;
+ // ui->graphicsView->hide();
+ }
+ if (d == 13) // убили ЦВС
+ {
+ // qDebug("code 13");
+ udpOptServer->abort();
+ udpSocket->abort();
+ udpOptServer2->abort();
+ tmpGS->clear();
+ tmpGS->addPixmap(QPixmap(":/fon/pics/dead_end.png"));
+ ui->graphicsView->show();
+ ui->graphicsView->centerOn(0,0);
+
+ }
+ if (d == 15) // штатное выключение - выгрузка ОС
+ {
+
+ if (openWidget)
+ openWidget->close();
+ udpOptServer->abort();
+ // udpSocket->abort();
+ udpOptServer2->abort();
+ tmpGS->clear();
+ tmpGS->addPixmap(QPixmap(":/fon/pics/shutdown.png"));
+ tmpGS->addItem((QGraphicsItem*)blackRect);
+
+ QRectF rF = blackRect->rect();
+ rF.moveTop(92);
+ blackRect->setRect(rF);
+ ui->graphicsView->show();
+ ui->graphicsView->centerOn(0,0);
+ loadScreenTmr->start(1000);
+ }
+
+ if (d==0)
+ {
+
+ ui->pushButton->show();
+ ui->comboBox->show();
+ ui->comboBox_2->show();
+
+ ui->pushButton_3->show();
+ ui->pushButton_4->show();
+ ui->pushButton_5->show();
+ ui->pushButton_6->show();
+ ui->pushButton_7->show();
+ ui->pushButton_8->show();
+ ui->pushButton_9->show();
+ ui->pushButton_10->show();
+ ui->pushButton_11->show();
+ ui->pushButton_12->show();
+ ui->pushButton_13->show();
+ ui->pushButton_14->show();
+
+ menu->show();
+ menu1->show();
+ }
+ else
+ {
+ ui->pushButton->hide();
+ ui->comboBox->hide();
+ ui->comboBox_2->hide();
+
+ menu->hide();
+ menu1->hide();
+
+ ui->pushButton_3->hide();
+ ui->pushButton_4->hide();
+ ui->pushButton_5->hide();
+ ui->pushButton_6->hide();
+ ui->pushButton_7->hide();
+ ui->pushButton_8->hide();
+ ui->pushButton_9->hide();
+ ui->pushButton_10->hide();
+ ui->pushButton_11->hide();
+ ui->pushButton_12->hide();
+ ui->pushButton_13->hide();
+ ui->pushButton_14->hide();
}
splashIsOn = d;
@@ -3182,14 +3262,29 @@ void Widget::loadScreenTick()
{
QString strTab;
QGraphicsTextItem *ti;
+ QRectF rF;
+ static int shDwn = 0;
+ int shDwn_coords[30] = { 123, 141, 158, 173, 190, 221, 238, 254, 271, 287,
+ 302, 317, 334, 351, 366, 383, 399, 415, 431, 447,
+ 463, 479, 495, 510, 526, 541, 560, 580, 580, 580 };
- if (quickLoad)
- {
+ if (quickLoad && splashIsOn!=15)
showSplash(0);
+ if (splashIsOn==15)
+ {
+ if (quickLoad)
+ shDwn=27;
+ keyPressEnabled=false;
+ rF = blackRect->rect();
+ rF.moveTop(shDwn_coords[shDwn]);
+ blackRect->setRect(rF);
+ shDwn++;
+ if (shDwn>=27) { loadScreenTmr->stop(); systemHalt=true;}
}
if (splashIsOn==3)
{
+ keyPressEnabled=false;
ui->graphicsView->centerOn(0, loadingPos);
loadingPos+=loadingShift;
// qDebug("%d\n", loadingPos);
@@ -3204,6 +3299,7 @@ void Widget::loadScreenTick()
}
if (splashIsOn==5)
{
+ keyPressEnabled=false;
ti = tmpGS->addText(QString::fromLocal8Bit(" БТ23-206 исправен"), QFont("Consolas", 11));
ti->setDefaultTextColor(QColor(193, 193, 193));
curPosition+=12;
@@ -3257,10 +3353,10 @@ void Widget::loadScreenTick()
splashIsOn = 6;
QTimer::singleShot(1000, this, SLOT(loadScreenTick()));
- } else
- if (splashIsOn==6)
- {
-// if (loadScreenTmr->isActive()) loadScreenTmr->stop();
+ }
+ if (splashIsOn==6) {
+ // if (loadScreenTmr->isActive()) loadScreenTmr->stop();
+ keyPressEnabled=false;
curPosition+=36;
ti = tmpGS->addText(QString::fromLocal8Bit("ЦЕЛОСТНОСТЬ ПО НЕ НАРУШЕНА"), QFont("Consolas", 11));
@@ -3277,17 +3373,14 @@ void Widget::loadScreenTick()
QTimer::singleShot(5000, this, SLOT(loadScreenTick()));
- } else
- if (splashIsOn==7)
- {
-
- putLogin();
}
-
+ if (splashIsOn==7)
+ putLogin();
}
void Widget::changeOpenWidget(QObject *p)
{
+ if (openWidget) openWidget->close();
openWidget = (QWidget*)p;
}
@@ -3304,6 +3397,43 @@ void Widget::focusSS(QWidget *old, QWidget *now)
void Widget::on_pushButton_9_clicked()
{
- ui->radioButton_set1->setChecked(ui->pushButton_9->isChecked());
+ ui->radioButton_set1->setChecked(ui->pushButton_9->isChecked());
+ grCross->setVisible(ui->pushButton_9->isChecked());
}
+
+void Widget::MyClose() {
+ showSplash(15);
+}
+
+void Widget::rebootSlot()
+{
+
+ static int flag = 1;
+
+ flag++;
+
+
+ if (flag==2)
+ {
+ udpSocket->abort();
+ udpNewTask->abort();
+ udpOptServer->abort();
+ udpOptServer2->abort();
+ udpSend->abort();
+ udpCU->abort();
+ udpTarget->abort();
+
+ tmrReport->stop();
+ tmrSyncr->stop();
+
+ writeFile();
+
+
+ QString program = "c:/Shilka_exe/sh3.exe";
+ QStringList arguments = (QStringList() << QString::number(currentTaskNum));
+ QProcess *myProcess = new QProcess(this);
+ myProcess->startDetached(program, arguments);
+ QTimer::singleShot(1000, this, SLOT(close()));
+ }
+}
diff --git a/widget.h b/widget.h
index 5aab25e..87cf2e6 100644
--- a/widget.h
+++ b/widget.h
@@ -16,6 +16,7 @@
#include "graphicsviewmod.h"
#include "graphicsarcitem.h"
#include "graphicslineitem.h"
+#include "graphicscrossitem.h"
#include
#include "grairobject.h"
@@ -180,6 +181,10 @@ public:
void initParams();
void setGraph();
+ void setGrabFocus(int d);
+ QTimer *tmrFocus;
+ QTimer *tmrSyncr, *tmrReport;
+
void setVCU(int id);
void clearVCU();
int findTargetFromId(int id);
@@ -216,7 +221,7 @@ public:
bool resetCVS[3];
int splashIsOn;
-
+ bool systemHalt;
bool meteoAvtonom, meteoSred;
void setMeteo(bool m1, bool m2);
@@ -228,6 +233,7 @@ public:
void setRezhimGAG(int pos);
int rezhimZerk;
+ int cvsRezhim;
T_geoPoint ts, reper;
T_metAv metAv;
@@ -264,10 +270,6 @@ public:
qreal AS_t1, AS_t2, VCU_t1, VCU_t2, R_N_t1, R_N_t2, R_V_t1, R_V_t2;
qreal AS_par;
-// qreal grCrossAzim, grCrossDist;
-// QGraphicsItem grCross;
-
-
qreal azimutRLS;
graphicsLineItem *grAzimutRLS;
graphicsLineItem *grAzimutRLSnormal;
@@ -285,6 +287,8 @@ public:
graphicsLineItem *grVCU;
int lastKO;
+ graphicsCrossItem *grCross;
+ qreal grCrossX, grCrossY;
bool autoZAdefault;
@@ -297,6 +301,7 @@ public:
QTimer *loadScreenTmr;
+ QGraphicsRectItem *blackRect;
int loadingPos;
int loadingShift;
@@ -317,7 +322,7 @@ public slots:
void switchWidget(int);
void showSplash(int d=1);
- void hideSplash() {showSplash(0);};
+ void hideSplash() {showSplash(0);}
void msMeteoSredShow(void);
void msVvodMA(void);
@@ -360,6 +365,8 @@ public slots:
void closeSlot();
+ void MyClose();
+ void rebootSlot();
void reCalculate();
void processSendingDatagrams(QByteArray buf, int port=45460);
@@ -398,6 +405,9 @@ private slots:
void on_comboBox_2_currentIndexChanged(int index);
void on_pushButton_4_clicked();
+ void on_pushButton_3_clicked();
+ void on_pushButton_5_clicked();
+ void on_pushButton_6_clicked();
void on_comboBox_currentIndexChanged(int index);
@@ -418,7 +428,7 @@ private slots:
private:
void putDate();
-
+ bool keyPressEnabled;
virtual void keyPressEvent ( QKeyEvent * e );
Ui::Widget *ui;