first version.
This commit is contained in:
35
.gitignore
vendored
Normal file
35
.gitignore
vendored
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
*.a
|
||||||
|
*.o
|
||||||
|
*.md
|
||||||
|
*.exe
|
||||||
|
*.user
|
||||||
|
*.Debug
|
||||||
|
*.Release
|
||||||
|
*.stash
|
||||||
|
MakeFile
|
||||||
|
*.bin
|
||||||
|
*.m
|
||||||
|
*.txt
|
||||||
|
*.mpd
|
||||||
|
*.sens
|
||||||
|
*.kna
|
||||||
|
*.djvu
|
||||||
|
resource/
|
||||||
|
*.qrc
|
||||||
|
resource.h
|
||||||
|
*.png
|
||||||
|
*.jpeg
|
||||||
|
*.mp3
|
||||||
|
*.wav
|
||||||
|
*.db
|
||||||
|
*.dll
|
||||||
|
data/
|
||||||
|
debug/
|
||||||
|
platforms/
|
||||||
|
release/
|
||||||
|
compiler/
|
||||||
|
src_build/
|
||||||
|
html/
|
||||||
|
log/
|
||||||
|
doc/
|
||||||
|
QtXml/
|
61
cmdwrd.cpp
Normal file
61
cmdwrd.cpp
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
#include "mainwindow.h"
|
||||||
|
#include "cmdwrd.h"
|
||||||
|
|
||||||
|
extern unsigned char HexBinFlag;
|
||||||
|
|
||||||
|
CommandWord::CommandWord()
|
||||||
|
{
|
||||||
|
DeviceAddress = 0;
|
||||||
|
K = 0;
|
||||||
|
SubAdd_CtrlMode = 0;
|
||||||
|
NumData_CmdCode = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned char CommandWord::AddressFind(int cmdw)
|
||||||
|
{
|
||||||
|
return (cmdw & 0x0000F800) >> 11;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned char CommandWord::ResTranFind(int cmdw)
|
||||||
|
{
|
||||||
|
return (cmdw >> 10) & 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned char CommandWord::SubadContrlModeFind(int cmdw)
|
||||||
|
{
|
||||||
|
return (cmdw & 0x000003E0) >> 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned char CommandWord::NumDataWCodeCCFind(int cmdw)
|
||||||
|
{
|
||||||
|
return (cmdw & 0x0000001F) >> 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CommandWord::description(QString CmdW)
|
||||||
|
{
|
||||||
|
int 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
|
||||||
|
{
|
||||||
|
DeviceAddress = AddressFind(cmdw);
|
||||||
|
K = ResTranFind(cmdw);
|
||||||
|
SubAdd_CtrlMode = SubadContrlModeFind(cmdw);
|
||||||
|
NumData_CmdCode = NumDataWCodeCCFind(cmdw);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CommandWord::~CommandWord()
|
||||||
|
{
|
||||||
|
}
|
26
cmdwrd.h
Normal file
26
cmdwrd.h
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
#ifndef CMDWRD_H
|
||||||
|
#define CMDWRD_H
|
||||||
|
|
||||||
|
#include "declaration.h"
|
||||||
|
|
||||||
|
class CommandWord:public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
|
||||||
|
unsigned char DeviceAddress;
|
||||||
|
unsigned char K;
|
||||||
|
unsigned char SubAdd_CtrlMode;
|
||||||
|
unsigned char NumData_CmdCode;
|
||||||
|
|
||||||
|
void description(QString CmdW);
|
||||||
|
unsigned char AddressFind(int cmdw);
|
||||||
|
unsigned char ResTranFind(int cmdw);
|
||||||
|
unsigned char SubadContrlModeFind(int cmdw);
|
||||||
|
unsigned char NumDataWCodeCCFind(int cmdw);
|
||||||
|
|
||||||
|
CommandWord();
|
||||||
|
~CommandWord();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // CMDWRD_H
|
21
declaration.h
Normal file
21
declaration.h
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
#ifndef DECLARATION_H
|
||||||
|
#define DECLARATION_H
|
||||||
|
|
||||||
|
#include <QMainWindow>
|
||||||
|
#include <QTableWidget>
|
||||||
|
#include <QTableWidgetItem>
|
||||||
|
#include <QVBoxLayout>
|
||||||
|
#include <QGridLayout>
|
||||||
|
#include <QHeaderView>
|
||||||
|
#include <QLabel>
|
||||||
|
#include <QComboBox>
|
||||||
|
#include <QPushButton>
|
||||||
|
#include <QTextEdit>
|
||||||
|
#include <QDebug>
|
||||||
|
#include <QMessageBox>
|
||||||
|
#include <QTextCodec>
|
||||||
|
#include <QLineEdit>
|
||||||
|
#include <QString>
|
||||||
|
#include <QScopedPointer>
|
||||||
|
|
||||||
|
#endif // DECLARATION_H
|
16
descript.pro
Normal file
16
descript.pro
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
QT += core gui
|
||||||
|
|
||||||
|
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||||
|
|
||||||
|
SOURCES += \
|
||||||
|
cmdwrd.cpp \
|
||||||
|
main.cpp \
|
||||||
|
mainwindow.cpp \
|
||||||
|
reswrd.cpp
|
||||||
|
|
||||||
|
HEADERS += \
|
||||||
|
cmdwrd.h \
|
||||||
|
declaration.h \
|
||||||
|
mainwindow.h \
|
||||||
|
reswrd.h
|
||||||
|
|
11
main.cpp
Normal file
11
main.cpp
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
#include "mainwindow.h"
|
||||||
|
|
||||||
|
#include <QApplication>
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
QApplication a(argc, argv);
|
||||||
|
MainWindow w;
|
||||||
|
w.show();
|
||||||
|
return a.exec();
|
||||||
|
}
|
344
mainwindow.cpp
Normal file
344
mainwindow.cpp
Normal file
@@ -0,0 +1,344 @@
|
|||||||
|
#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()
|
||||||
|
{
|
||||||
|
}
|
41
mainwindow.h
Normal file
41
mainwindow.h
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
#ifndef MAINWINDOW_H
|
||||||
|
#define MAINWINDOW_H
|
||||||
|
|
||||||
|
#include "declaration.h"
|
||||||
|
|
||||||
|
class MainWindow:public QMainWindow
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
void init_mainwindowobj(); //the function of this class
|
||||||
|
void init_connections();
|
||||||
|
explicit MainWindow(); //constructor
|
||||||
|
~MainWindow(); //destructor
|
||||||
|
|
||||||
|
private:
|
||||||
|
void init_table();
|
||||||
|
void init_table_res();
|
||||||
|
void set_item(QTableWidget *pTable, int indRow,
|
||||||
|
int indCol, QString data, bool editFlag);
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void getlineedit();
|
||||||
|
void getlineeditres();
|
||||||
|
void HexBinChange();
|
||||||
|
|
||||||
|
private:
|
||||||
|
QWidget *Window_1 = new QWidget;
|
||||||
|
QWidget *Window_2 = new QWidget;
|
||||||
|
QLabel *HexBinLabel;
|
||||||
|
QPushButton *HexBinButton;
|
||||||
|
QLabel *CmdWordLabel;
|
||||||
|
QLineEdit *CmdWordLineEdit;
|
||||||
|
QPushButton *EnterCmdWordButton;
|
||||||
|
QLabel *ResWordLabel;
|
||||||
|
QLineEdit *ResWordLineEdit;
|
||||||
|
QPushButton *EnterResWordButton;
|
||||||
|
QTableWidget *DataTable;
|
||||||
|
QTableWidget *DataTableRes;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // MAINWINDOW_H
|
104
reswrd.cpp
Normal file
104
reswrd.cpp
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
#include "mainwindow.h"
|
||||||
|
#include "reswrd.h"
|
||||||
|
|
||||||
|
extern unsigned char HexBinFlag;
|
||||||
|
|
||||||
|
ResponseWord::ResponseWord()
|
||||||
|
{
|
||||||
|
DeviceAddressR = 0;
|
||||||
|
ErrorInMsg = 0;
|
||||||
|
TransResW = 0;
|
||||||
|
SerReq = 0;
|
||||||
|
Reserve = 0;
|
||||||
|
GroupCmd = 0;
|
||||||
|
SubBusy = 0;
|
||||||
|
SubFailure = 0;
|
||||||
|
IntCtrlAccepted = 0;
|
||||||
|
DeviceFailure = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned char ResponseWord::DeviceAddressRFind(int resw)
|
||||||
|
{
|
||||||
|
return (resw & 0x0000F800) >> 11;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned char ResponseWord::ErrorInMsgFind(int resw)
|
||||||
|
{
|
||||||
|
return (resw >> 10) & 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned char ResponseWord::TransResWFind(int resw)
|
||||||
|
{
|
||||||
|
return (resw >> 9) & 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned char ResponseWord::SerReqFind(int resw)
|
||||||
|
{
|
||||||
|
return (resw >> 8) & 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned char ResponseWord::ReserveFind(int resw)
|
||||||
|
{
|
||||||
|
return (resw & 0x000000E0) >> 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned char ResponseWord::GroupCmdFind(int resw)
|
||||||
|
{
|
||||||
|
return (resw >> 4) & 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned char ResponseWord::SubBusyFind(int resw)
|
||||||
|
{
|
||||||
|
return (resw >> 3) & 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned char ResponseWord::SubFailureFind(int resw)
|
||||||
|
{
|
||||||
|
return (resw >> 2) & 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned char ResponseWord::IntCtrlAcceptedFind(int resw)
|
||||||
|
{
|
||||||
|
return (resw >> 1) & 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned char ResponseWord::DeviceFailureFind(int resw)
|
||||||
|
{
|
||||||
|
return (resw >> 0) & 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ResponseWord::description(QString ResW)
|
||||||
|
{
|
||||||
|
int resw;
|
||||||
|
bool result;
|
||||||
|
|
||||||
|
if(HexBinFlag)
|
||||||
|
resw = ResW.toInt(&result, 16);
|
||||||
|
else
|
||||||
|
resw = ResW.toInt(&result, 2);
|
||||||
|
|
||||||
|
if(result == false)
|
||||||
|
QMessageBox::warning(0, "Ошибка", "Недопустимое значение ОС");
|
||||||
|
else if((HexBinFlag == 0) && (ResW.length() != 16))
|
||||||
|
QMessageBox::warning(0, "Ошибка", "Недопустимое значение ОС");
|
||||||
|
else if((HexBinFlag == 1) && (ResW.length() != 4))
|
||||||
|
QMessageBox::warning(0, "Ошибка", "Недопустимое значение ОС");
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DeviceAddressR = DeviceAddressRFind(resw);
|
||||||
|
ErrorInMsg = ErrorInMsgFind(resw);
|
||||||
|
TransResW = TransResWFind(resw);
|
||||||
|
SerReq = SerReqFind(resw);
|
||||||
|
Reserve = ReserveFind(resw);
|
||||||
|
GroupCmd = GroupCmdFind(resw);
|
||||||
|
SubBusy = SubBusyFind(resw);
|
||||||
|
SubFailure = SubFailureFind(resw);
|
||||||
|
IntCtrlAccepted = IntCtrlAcceptedFind(resw);
|
||||||
|
DeviceFailure = DeviceFailureFind(resw);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ResponseWord::~ResponseWord()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
38
reswrd.h
Normal file
38
reswrd.h
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
#ifndef RESWRD_H
|
||||||
|
#define RESWRD_H
|
||||||
|
|
||||||
|
#include "declaration.h"
|
||||||
|
|
||||||
|
class ResponseWord:public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
|
||||||
|
unsigned char DeviceAddressR;
|
||||||
|
unsigned char ErrorInMsg;
|
||||||
|
unsigned char TransResW;
|
||||||
|
unsigned char SerReq;
|
||||||
|
unsigned char Reserve;
|
||||||
|
unsigned char GroupCmd;
|
||||||
|
unsigned char SubBusy;
|
||||||
|
unsigned char SubFailure;
|
||||||
|
unsigned char IntCtrlAccepted;
|
||||||
|
unsigned char DeviceFailure;
|
||||||
|
|
||||||
|
void description(QString ResW);
|
||||||
|
unsigned char DeviceAddressRFind(int resw);
|
||||||
|
unsigned char ErrorInMsgFind(int resw);
|
||||||
|
unsigned char TransResWFind(int resw);
|
||||||
|
unsigned char SerReqFind(int resw);
|
||||||
|
unsigned char ReserveFind(int resw);
|
||||||
|
unsigned char GroupCmdFind(int resw);
|
||||||
|
unsigned char SubBusyFind(int resw);
|
||||||
|
unsigned char SubFailureFind(int resw);
|
||||||
|
unsigned char IntCtrlAcceptedFind(int resw);
|
||||||
|
unsigned char DeviceFailureFind(int resw);
|
||||||
|
|
||||||
|
ResponseWord();
|
||||||
|
~ResponseWord();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // RESWRD_H
|
Reference in New Issue
Block a user