#include "mainwindow.h" //#include "windows.h" //#include "WDMTMKv2.cpp" #include "bcmil.cpp" extern TTmkEventData tmkEvD; extern HANDLE hEvent; #define RT_ADDR 0x1 unsigned short awBuf[32]; TMK_DATA wBase, wMaxBase, wLen; extern TMK_DATA wSubAddr, wState; int HexBinFlag = 1; MainWindow::MainWindow() { init_mainwindowobj(); init_table(); init_connections(); } void MainWindow::init_mainwindowobj() { qDebug() << "Startyem"; Window_1 = new QWidget; Window_2 = new QWidget; RtModeLabel = new QLabel("RT mode"); StartRtModeButton = new QPushButton("Start RT mode"); BcModeLabel = new QLabel("BC mode"); StartBcModeButton = new QPushButton("Start BC mode"); DataTable = new QTableWidget; QGridLayout *layout_g = new QGridLayout(Window_2); layout_g->addWidget(RtModeLabel, 0, 0); // Row 0, Column 0 layout_g->addWidget(StartRtModeButton, 1, 0); layout_g->addWidget(BcModeLabel, 0, 1); layout_g->addWidget(StartBcModeButton, 1, 1); Window_2->setLayout(layout_g); setCentralWidget(Window_2); QVBoxLayout *layout = new QVBoxLayout(Window_1); layout->addWidget(Window_2); layout->addWidget(DataTable); Window_1->setLayout(layout); setCentralWidget(Window_1); } void MainWindow::init_connections() { /*connect(EnterCmdWordButton, SIGNAL(clicked()), this, SLOT(getlineedit()));*/ /*connect(StartBcModeButton, SIGNAL(clicked()), this, SLOT(bchandler()));*/ connect(StartRtModeButton, SIGNAL(clicked()), this, SLOT(rthandler())); } /*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->addrRTf), false); set_item(DataTable, 0, 2, intToDecString(NewCmdWord->addrRTf), false); if(NewCmdWord->Kf) { set_item(DataTable, 1, 0, "Передача", false); set_item(DataTable, 1, 1, intToBinaryString(NewCmdWord->Kf), false); set_item(DataTable, 1, 2, intToDecString(NewCmdWord->Kf), false); } else { set_item(DataTable, 1, 0, "Прием", false); set_item(DataTable, 1, 1, intToBinaryString(NewCmdWord->Kf), false); set_item(DataTable, 1, 2, intToDecString(NewCmdWord->Kf), false); } if((NewCmdWord->subAddrf == 0) || (NewCmdWord->subAddrf == 31)) { set_item(DataTable, 2, 0, "Режим управления", false); set_item(DataTable, 2, 1, intToBinaryString(NewCmdWord->subAddrf), false); set_item(DataTable, 2, 2, intToDecString(NewCmdWord->subAddrf), false); } else { set_item(DataTable, 2, 0, "Подадрес", false); set_item(DataTable, 2, 1, intToBinaryString(NewCmdWord->subAddrf), false); set_item(DataTable, 2, 2, intToDecString(NewCmdWord->subAddrf), false); } if((NewCmdWord->subAddrf == 0) || (NewCmdWord->subAddrf == 31)) { set_item(DataTable, 3, 0, NewCmdWord->cmdCode.value(NewCmdWord->numDWf), false); set_item(DataTable, 3, 1, intToBinaryString(NewCmdWord->numDWf), false); set_item(DataTable, 3, 2, intToDecString(NewCmdWord->numDWf), false); } else { if(NewCmdWord->numDWf == 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->numDWf), false); set_item(DataTable, 3, 2, intToDecString(NewCmdWord->numDWf), false); } } }*/ 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,200); 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::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); } /*void MainWindow::bchandler() { qDebug() << "send1"; QScopedPointer NewBC(new BC_MIL(0)); qDebug() << "send2"; wBase = 0; wMaxBase = bcgetmaxbase(); srand(1); //Select base if (wBase > wMaxBase) wBase = 0; bcdefbase(wBase); qDebug() << "send3"; //Prepare data to RT //wSubAddr = rand() & 0x1F; wSubAddr = 0x1F;; //if (fInstMode) // wSubAddr |= 0x10; //wLen = rand() & 0x1F; wLen = 0x1; if (wLen == 0) wLen = 32; for (int i = 0; i < wLen; ++i) awBuf[i] = (wSubAddr<<8) | i; qDebug() << "send4"; //Try to send data to RT until it answers with Clear Status bcputw(0, CW(RT_ADDR, RT_RECEIVE, wSubAddr, wLen)); bcputblk(1, awBuf, wLen); do { //bcstartx(wBase, DATA_BC_RT | CX_STOP | CX_BUS_A | CX_NOSIG); bcstartx(wBase, DATA_BC_RT | CX_STOP | CX_BUS_B | CX_NOSIG); if (NewBC->WaitInt(DATA_BC_RT)) NewBC->closeAll(); } while ((tmkEvD.bcx.wResultX & (SX_ERR_MASK | SX_IB_MASK)) != 0); qDebug() << "send5"; NewBC->closeAll(); }*/ void MainWindow::rthandler() { QScopedPointer NewRT(new RT_MIL(0x0, RT_ADDR)); int i = 0; while (i != 100) { i++; if(NewRT->GetEvent(1000)) { switch (tmkEvD.nInt) { case 1: qDebug() << "Cmd word arrived " << tmkEvD.rt.wCmd << " " <> 5) & 0x1F; wLen = tmkEvD.rt.wStatus & 0x1F; if (wLen == 0) wLen = 32; if (RT_RECEIVE == (tmkEvD.rt.wStatus & RT_DIR_MASK)) { if (tmkselect(NewRT->m_TmkIndex)) { qDebug() << "tmkselect() error"; } rtdefsubaddr(RT_RECEIVE, wSubAddr); rtgetblk(0, awBuf, wLen); } break; } break; } } NewRT->closeAllrt(); } MainWindow::~MainWindow() { }