345 lines
12 KiB
C++
345 lines
12 KiB
C++
#include "mainwindow.h"
|
||
#include "cmdwrd.h"
|
||
#include "reswrd.h"
|
||
|
||
unsigned char HexBinFlag = 1; //1 - hex, 0 - bin
|
||
|
||
MainWindow::MainWindow()
|
||
{
|
||
init_mainwindowobj();
|
||
init_table();
|
||
init_table_res();
|
||
init_connections();
|
||
}
|
||
|
||
void MainWindow::init_mainwindowobj()
|
||
{
|
||
qDebug() << "Startyem";
|
||
|
||
Window_1 = new QWidget;
|
||
Window_2 = new QWidget;
|
||
|
||
HexBinButton = new QPushButton("Hex/Bin");
|
||
HexBinLabel = new QLabel("Hex");
|
||
|
||
CmdWordLabel = new QLabel("Enter the command word:");
|
||
CmdWordLineEdit = new QLineEdit;
|
||
EnterCmdWordButton = new QPushButton("Enter the cmd word");
|
||
|
||
ResWordLabel = new QLabel("Enter the response word:");
|
||
ResWordLineEdit = new QLineEdit;
|
||
EnterResWordButton = new QPushButton("Enter the res word");
|
||
|
||
DataTable = new QTableWidget;
|
||
DataTableRes = new QTableWidget;
|
||
|
||
QGridLayout *layout_g = new QGridLayout(Window_2);
|
||
layout_g->addWidget(HexBinButton, 0, 1);
|
||
layout_g->addWidget(HexBinLabel, 0, 0);
|
||
layout_g->addWidget(CmdWordLabel, 1, 0); // Row 0, Column 0
|
||
layout_g->addWidget(CmdWordLineEdit, 2, 0);
|
||
layout_g->addWidget(EnterCmdWordButton, 3, 0);
|
||
layout_g->addWidget(ResWordLabel, 1, 1);
|
||
layout_g->addWidget(ResWordLineEdit, 2, 1);
|
||
layout_g->addWidget(EnterResWordButton, 3, 1);
|
||
|
||
Window_2->setLayout(layout_g);
|
||
setCentralWidget(Window_2);
|
||
|
||
QVBoxLayout *layout = new QVBoxLayout(Window_1);
|
||
layout->addWidget(Window_2);
|
||
layout->addWidget(DataTable);
|
||
layout->addWidget(DataTableRes);
|
||
|
||
Window_1->setLayout(layout);
|
||
setCentralWidget(Window_1);
|
||
}
|
||
|
||
void MainWindow::init_connections()
|
||
{
|
||
connect(EnterCmdWordButton,
|
||
SIGNAL(clicked()),
|
||
this,
|
||
SLOT(getlineedit()));
|
||
connect(EnterResWordButton,
|
||
SIGNAL(clicked()),
|
||
this,
|
||
SLOT(getlineeditres()));
|
||
connect(HexBinButton,
|
||
SIGNAL(clicked()),
|
||
this,
|
||
SLOT(HexBinChange()));
|
||
}
|
||
|
||
QString intToBinaryString(int number)
|
||
{
|
||
return QString::number(number,2);
|
||
}
|
||
|
||
QString intToDecString(int number)
|
||
{
|
||
return QString::number(number,10);
|
||
}
|
||
|
||
void MainWindow::getlineedit()
|
||
{
|
||
qDebug() << "Entered the button command word";
|
||
QString CmdW = CmdWordLineEdit->text();
|
||
qDebug() << CmdW;
|
||
|
||
QScopedPointer<CommandWord> NewCmdWord(new CommandWord());
|
||
NewCmdWord->description(CmdW);
|
||
|
||
set_item(DataTable, 0, 0, "Адрес устройства", false);
|
||
set_item(DataTable, 0, 1, intToBinaryString(NewCmdWord->DeviceAddress), false);
|
||
set_item(DataTable, 0, 2, intToDecString(NewCmdWord->DeviceAddress), false);
|
||
|
||
if(NewCmdWord->K)
|
||
{
|
||
set_item(DataTable, 1, 0, "Передача", false);
|
||
set_item(DataTable, 1, 1, intToBinaryString(NewCmdWord->K), false);
|
||
set_item(DataTable, 1, 2, intToDecString(NewCmdWord->K), false);
|
||
}
|
||
else
|
||
{
|
||
set_item(DataTable, 1, 0, "Прием", false);
|
||
set_item(DataTable, 1, 1, intToBinaryString(NewCmdWord->K), false);
|
||
set_item(DataTable, 1, 2, intToDecString(NewCmdWord->K), false);
|
||
}
|
||
|
||
if((NewCmdWord->SubAdd_CtrlMode == 0) || (NewCmdWord->SubAdd_CtrlMode == 31))
|
||
{
|
||
set_item(DataTable, 2, 0, "Режим управления", false);
|
||
set_item(DataTable, 2, 1, intToBinaryString(NewCmdWord->SubAdd_CtrlMode), false);
|
||
set_item(DataTable, 2, 2, intToDecString(NewCmdWord->SubAdd_CtrlMode), false);
|
||
}
|
||
else
|
||
{
|
||
set_item(DataTable, 2, 0, "Подадрес", false);
|
||
set_item(DataTable, 2, 1, intToBinaryString(NewCmdWord->SubAdd_CtrlMode), false);
|
||
set_item(DataTable, 2, 2, intToDecString(NewCmdWord->SubAdd_CtrlMode), false);
|
||
}
|
||
|
||
if((NewCmdWord->SubAdd_CtrlMode == 0) || (NewCmdWord->SubAdd_CtrlMode == 31))
|
||
{
|
||
set_item(DataTable, 3, 0, "Код КУ", false);
|
||
set_item(DataTable, 3, 1, intToBinaryString(NewCmdWord->NumData_CmdCode), false);
|
||
set_item(DataTable, 3, 2, intToDecString(NewCmdWord->NumData_CmdCode), false);
|
||
}
|
||
else
|
||
{
|
||
if(NewCmdWord->NumData_CmdCode == 0)
|
||
{
|
||
set_item(DataTable, 3, 0, "Число СД", false);
|
||
set_item(DataTable, 3, 1, intToBinaryString(32), false);
|
||
set_item(DataTable, 3, 2, intToDecString(32), false);
|
||
}
|
||
else
|
||
{
|
||
set_item(DataTable, 3, 0, "Число СД", false);
|
||
set_item(DataTable, 3, 1, intToBinaryString(NewCmdWord->NumData_CmdCode), false);
|
||
set_item(DataTable, 3, 2, intToDecString(NewCmdWord->NumData_CmdCode), false);
|
||
}
|
||
}
|
||
}
|
||
|
||
void MainWindow::getlineeditres()
|
||
{
|
||
qDebug() << "Entered the button response word";
|
||
QString ResW = ResWordLineEdit->text();
|
||
qDebug() << ResW;
|
||
|
||
QScopedPointer<ResponseWord> NewResWord(new ResponseWord());
|
||
NewResWord->description(ResW);
|
||
|
||
set_item(DataTableRes, 0, 0, "Адрес устройства", false);
|
||
set_item(DataTableRes, 0, 1, intToBinaryString(NewResWord->DeviceAddressR), false);
|
||
set_item(DataTableRes, 0, 2, intToDecString(NewResWord->DeviceAddressR), false);
|
||
|
||
if(NewResWord->ErrorInMsg)
|
||
{
|
||
set_item(DataTableRes, 1, 0, "Достоверная инф-я", false);
|
||
set_item(DataTableRes, 1, 1, intToBinaryString(NewResWord->ErrorInMsg), false);
|
||
set_item(DataTableRes, 1, 2, intToDecString(NewResWord->ErrorInMsg), false);
|
||
}
|
||
else
|
||
{
|
||
set_item(DataTableRes, 1, 0, "Недостоверная инф-я", false);
|
||
set_item(DataTableRes, 1, 1, intToBinaryString(NewResWord->ErrorInMsg), false);
|
||
set_item(DataTableRes, 1, 2, intToDecString(NewResWord->ErrorInMsg), false);
|
||
}
|
||
|
||
set_item(DataTableRes, 2, 0, "Передача ОС (всегда 0)", false);
|
||
set_item(DataTableRes, 2, 1, intToBinaryString(NewResWord->TransResW), false);
|
||
set_item(DataTableRes, 2, 2, intToDecString(NewResWord->TransResW), false);
|
||
|
||
if(NewResWord->SerReq)
|
||
{
|
||
set_item(DataTableRes, 3, 0, "Запрос на обслуживание", false);
|
||
set_item(DataTableRes, 3, 1, intToBinaryString(NewResWord->SerReq), false);
|
||
set_item(DataTableRes, 3, 2, intToDecString(NewResWord->SerReq), false);
|
||
}
|
||
else
|
||
{
|
||
set_item(DataTableRes, 3, 0, "Нет запроса на обсл-е", false);
|
||
set_item(DataTableRes, 3, 1, intToBinaryString(NewResWord->SerReq), false);
|
||
set_item(DataTableRes, 3, 2, intToDecString(NewResWord->SerReq), false);
|
||
}
|
||
|
||
set_item(DataTableRes, 4, 0, "Резерв", false);
|
||
set_item(DataTableRes, 4, 1, intToBinaryString(NewResWord->Reserve), false);
|
||
set_item(DataTableRes, 4, 2, intToDecString(NewResWord->Reserve), false);
|
||
|
||
if(NewResWord->GroupCmd)
|
||
{
|
||
set_item(DataTableRes, 5, 0, "Достоверная гр. команда", false);
|
||
set_item(DataTableRes, 5, 1, intToBinaryString(NewResWord->GroupCmd), false);
|
||
set_item(DataTableRes, 5, 2, intToDecString(NewResWord->GroupCmd), false);
|
||
}
|
||
else
|
||
{
|
||
set_item(DataTableRes, 5, 0, "Недостоверная гр. команда", false);
|
||
set_item(DataTableRes, 5, 1, intToBinaryString(NewResWord->GroupCmd), false);
|
||
set_item(DataTableRes, 5, 2, intToDecString(NewResWord->GroupCmd), false);
|
||
}
|
||
|
||
if(NewResWord->SubBusy)
|
||
{
|
||
set_item(DataTableRes, 6, 0, "Абонент занят", false);
|
||
set_item(DataTableRes, 6, 1, intToBinaryString(NewResWord->SubBusy), false);
|
||
set_item(DataTableRes, 6, 2, intToDecString(NewResWord->SubBusy), false);
|
||
}
|
||
else
|
||
{
|
||
set_item(DataTableRes, 6, 0, "Абонент не занят", false);
|
||
set_item(DataTableRes, 6, 1, intToBinaryString(NewResWord->SubBusy), false);
|
||
set_item(DataTableRes, 6, 2, intToDecString(NewResWord->SubBusy), false);
|
||
}
|
||
|
||
if(NewResWord->SubFailure)
|
||
{
|
||
set_item(DataTableRes, 7, 0, "Неисправность абонента", false);
|
||
set_item(DataTableRes, 7, 1, intToBinaryString(NewResWord->SubFailure), false);
|
||
set_item(DataTableRes, 7, 2, intToDecString(NewResWord->SubFailure), false);
|
||
}
|
||
else
|
||
{
|
||
set_item(DataTableRes, 7, 0, "Абонент функционирует", false);
|
||
set_item(DataTableRes, 7, 1, intToBinaryString(NewResWord->SubFailure), false);
|
||
set_item(DataTableRes, 7, 2, intToDecString(NewResWord->SubFailure), false);
|
||
}
|
||
|
||
if(NewResWord->IntCtrlAccepted)
|
||
{
|
||
set_item(DataTableRes, 8, 0, "Принято упр-е интерфейсом", false);
|
||
set_item(DataTableRes, 8, 1, intToBinaryString(NewResWord->IntCtrlAccepted), false);
|
||
set_item(DataTableRes, 8, 2, intToDecString(NewResWord->IntCtrlAccepted), false);
|
||
}
|
||
else
|
||
{
|
||
set_item(DataTableRes, 8, 0, "Не принято упр-е интерфейсом", false);
|
||
set_item(DataTableRes, 8, 1, intToBinaryString(NewResWord->IntCtrlAccepted), false);
|
||
set_item(DataTableRes, 8, 2, intToDecString(NewResWord->IntCtrlAccepted), false);
|
||
}
|
||
|
||
if(NewResWord->DeviceFailure)
|
||
{
|
||
set_item(DataTableRes, 9, 0, "Неправильное функ-е ОУ", false);
|
||
set_item(DataTableRes, 9, 1, intToBinaryString(NewResWord->DeviceFailure), false);
|
||
set_item(DataTableRes, 9, 2, intToDecString(NewResWord->DeviceFailure), false);
|
||
}
|
||
else
|
||
{
|
||
set_item(DataTableRes, 9, 0, "Правильное функ-е ОУ", false);
|
||
set_item(DataTableRes, 9, 1, intToBinaryString(NewResWord->DeviceFailure), false);
|
||
set_item(DataTableRes, 9, 2, intToDecString(NewResWord->DeviceFailure), false);
|
||
}
|
||
}
|
||
|
||
void MainWindow::HexBinChange()
|
||
{
|
||
switch(HexBinFlag)
|
||
{
|
||
case 0: //было bin
|
||
HexBinLabel->setText("Hex");
|
||
HexBinFlag = 1;
|
||
break;
|
||
|
||
case 1: //было hex
|
||
HexBinLabel->setText("Bin");
|
||
HexBinFlag = 0;
|
||
break;
|
||
}
|
||
}
|
||
|
||
void MainWindow::init_table()
|
||
{
|
||
int ColCount = 3;
|
||
int RowCount = 4;
|
||
QStringList header;
|
||
header << "Биты КС" << "Бинарное представление" << "Десятичное представление";
|
||
|
||
DataTable->setColumnCount(ColCount);
|
||
DataTable->setRowCount(RowCount);
|
||
DataTable->setHorizontalHeaderLabels(header);
|
||
DataTable->verticalHeader()->setVisible(true);
|
||
|
||
DataTable->setColumnWidth(0,160);
|
||
DataTable->setColumnWidth(1,160);
|
||
DataTable->setColumnWidth(2,160);
|
||
|
||
for(int i = 0; i < RowCount; i++)
|
||
{
|
||
DataTable->setRowHeight(i,20);
|
||
for(int j = 0; j < ColCount; j++)
|
||
set_item(DataTable, i, j, "%", false);
|
||
}
|
||
}
|
||
|
||
void MainWindow::init_table_res()
|
||
{
|
||
int ColCount = 3;
|
||
int RowCount = 10;
|
||
QStringList header;
|
||
header << "Биты ОС" << "Бинарное представление" << "Десятичное представление";
|
||
|
||
DataTableRes->setColumnCount(ColCount);
|
||
DataTableRes->setRowCount(RowCount);
|
||
DataTableRes->setHorizontalHeaderLabels(header);
|
||
DataTableRes->verticalHeader()->setVisible(true);
|
||
|
||
DataTableRes->setColumnWidth(0,180);
|
||
DataTableRes->setColumnWidth(1,160);
|
||
DataTableRes->setColumnWidth(2,160);
|
||
|
||
for(int i = 0; i < RowCount; i++)
|
||
{
|
||
DataTableRes->setRowHeight(i,20);
|
||
for(int j = 0; j < ColCount; j++)
|
||
set_item(DataTableRes, i, j, "%", false);
|
||
}
|
||
}
|
||
|
||
void MainWindow::set_item(QTableWidget *pTable, int indRow,
|
||
int indCol, QString data, bool editFlag)
|
||
{
|
||
QColor color;
|
||
color.black();
|
||
QTableWidgetItem *itm =
|
||
new QTableWidgetItem(data);
|
||
pTable->setItem(indRow,indCol,itm);
|
||
|
||
if (editFlag) {}
|
||
else
|
||
{
|
||
pTable->item(indRow, indCol)->setFlags(Qt::ItemIsSelectable|
|
||
Qt::ItemIsDragEnabled|
|
||
Qt::ItemIsUserCheckable);
|
||
}
|
||
pTable->item(indRow, indCol)->setTextColor(color);
|
||
}
|
||
|
||
MainWindow::~MainWindow()
|
||
{
|
||
}
|