#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 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 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() { }