Files
MIL_RT_MODE/cmdwrd.cpp
2025-08-12 21:51:30 +03:00

88 lines
2.6 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "mainwindow.h"
#include "cmdwrd.h"
extern unsigned char HexBinFlag;
CommandWord::CommandWord()
{
addrRTf = 0;
Kf = 0;
subAddrf = 0;
numDWf = 0;
cmdCode.insert(dynBC, "Принять упр-е интерфейсом");
cmdCode.insert(sync1, "Синхронизация");
cmdCode.insert(transSW, "Передать ОС");
cmdCode.insert(initST, "Начать самоконтроль ОУ");
cmdCode.insert(transS, "Блокировать передатчик");
cmdCode.insert(overrTS, "Разблокировать передатчик");
cmdCode.insert(inhTFB, "Блок-ть признак неиспр-ти ОУ");
cmdCode.insert(overrITF, "Разблок-ть признак неиспр-ти ОУ");
cmdCode.insert(resetRT, "Уст-ть ОУ в исх-е состояние");
cmdCode.insert(transVW, "Передать вект-ое слово");
cmdCode.insert(sync2, "Синхронизация (с СД)");
cmdCode.insert(transLC, "Передать послед-ю команду");
cmdCode.insert(transBW, "Передать слово ВСК ОУ");
cmdCode.insert(selectedSW, "Блок-ть i-й передатчик");
cmdCode.insert(overrSTS, "Разблок-ть i-й передатчик");
for(uint8_t i = 0b01001; i < 0b10000; i++)
cmdCode.insert(i, "Резерв");
for(uint8_t i = 0b10110; i < 0b11111; i++)
cmdCode.insert(i, "Резерв");
}
uint8_t CommandWord::addrRTFind(uint16_t cmdw)
{
CW.all = cmdw;
return CW.addrRT;
}
uint8_t CommandWord::KFind(uint16_t cmdw)
{
CW.all = cmdw;
return CW.K;
}
uint8_t CommandWord::subAddrFind(uint16_t cmdw)
{
CW.all = cmdw;
return CW.subAddr;
}
uint8_t CommandWord::numDWFind(uint16_t cmdw)
{
CW.all = cmdw;
return CW.numDW;
}
void CommandWord::description(QString CmdW)
{
uint16_t cmdw;
bool result;
if(HexBinFlag)
cmdw = CmdW.toInt(&result, 16);
else
cmdw = CmdW.toInt(&result, 2);
if(result == false)
QMessageBox::warning(0, "Ошибка", "Недопустимое значение КС");
else if((HexBinFlag == 0) && (CmdW.length() != 16))
QMessageBox::warning(0, "Ошибка", "Недопустимое значение КС");
else if((HexBinFlag == 1) && (CmdW.length() != 4))
QMessageBox::warning(0, "Ошибка", "Недопустимое значение КС");
else
{
addrRTf = addrRTFind(cmdw);
Kf = KFind(cmdw);
subAddrf = subAddrFind(cmdw);
numDWf = numDWFind(cmdw);
}
}
CommandWord::~CommandWord()
{
}