fixed bc mode v2
This commit is contained in:
153
mainwindow.cpp
153
mainwindow.cpp
@@ -3,19 +3,17 @@
|
||||
//#include "WDMTMKv2.cpp"
|
||||
#include "bcmil.cpp"
|
||||
|
||||
TTmkEventData tmkEvD;
|
||||
extern HANDLE hBcEvent;
|
||||
extern TTmkEventData tmkEvD;
|
||||
extern HANDLE hEvent;
|
||||
|
||||
//#define RT_ADDR 10
|
||||
|
||||
//const int fInstMode = 1;
|
||||
#define RT_ADDR 0x1
|
||||
|
||||
unsigned short awBuf[32];
|
||||
|
||||
TMK_DATA wBase, wMaxBase, wLen;
|
||||
extern TMK_DATA wSubAddr, wState;
|
||||
|
||||
unsigned char HexBinFlag = 1; //1 - hex, 0 - bin
|
||||
int HexBinFlag = 1;
|
||||
|
||||
MainWindow::MainWindow()
|
||||
{
|
||||
@@ -31,20 +29,19 @@ void MainWindow::init_mainwindowobj()
|
||||
Window_1 = new QWidget;
|
||||
Window_2 = new QWidget;
|
||||
|
||||
HexBinButton = new QPushButton("Hex/Bin");
|
||||
HexBinLabel = new QLabel("Hex");
|
||||
RtModeLabel = new QLabel("RT mode");
|
||||
StartRtModeButton = new QPushButton("Start RT mode");
|
||||
|
||||
BcModeLabel = new QLabel("BC mode");
|
||||
StartBcModeButton = new QPushButton("Start BC mode");
|
||||
|
||||
CmdWordLabel = new QLabel("Enter the command word:");
|
||||
CmdWordLineEdit = new QLineEdit;
|
||||
EnterCmdWordButton = new QPushButton("Start");
|
||||
DataTable = 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(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);
|
||||
@@ -63,28 +60,14 @@ void MainWindow::init_connections()
|
||||
SIGNAL(clicked()),
|
||||
this,
|
||||
SLOT(getlineedit()));*/
|
||||
/*connect(EnterCmdWordButton,
|
||||
/*connect(StartBcModeButton,
|
||||
SIGNAL(clicked()),
|
||||
this,
|
||||
SLOT(sendcmdwrd()));*/
|
||||
connect(EnterCmdWordButton,
|
||||
SLOT(bchandler()));*/
|
||||
connect(StartRtModeButton,
|
||||
SIGNAL(clicked()),
|
||||
this,
|
||||
SLOT(rthandler()));
|
||||
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()
|
||||
@@ -149,22 +132,6 @@ QString intToDecString(int number)
|
||||
}
|
||||
}*/
|
||||
|
||||
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;
|
||||
@@ -189,8 +156,6 @@ void MainWindow::init_table()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void MainWindow::set_item(QTableWidget *pTable, int indRow,
|
||||
int indCol, QString data, bool editFlag)
|
||||
{
|
||||
@@ -210,7 +175,7 @@ void MainWindow::set_item(QTableWidget *pTable, int indRow,
|
||||
pTable->item(indRow, indCol)->setTextColor(color);
|
||||
}
|
||||
|
||||
/*void MainWindow::sendcmdwrd()
|
||||
/*void MainWindow::bchandler()
|
||||
{
|
||||
qDebug() << "send1";
|
||||
QScopedPointer<BC_MIL> NewBC(new BC_MIL(0));
|
||||
@@ -254,66 +219,44 @@ void MainWindow::set_item(QTableWidget *pTable, int indRow,
|
||||
|
||||
void MainWindow::rthandler()
|
||||
{
|
||||
qDebug() << "rt1";
|
||||
QScopedPointer<RT_MIL> NewRT(new RT_MIL(0, 1));
|
||||
qDebug() << "rt2";
|
||||
QScopedPointer<RT_MIL> NewRT(new RT_MIL(0x0, RT_ADDR));
|
||||
|
||||
int i = 0;
|
||||
while (i != 1000)
|
||||
while (i != 100)
|
||||
{
|
||||
i++;
|
||||
if (tmkselect(0))
|
||||
{
|
||||
qDebug() << "tmk select error";
|
||||
NewRT->closeAllrt();
|
||||
}
|
||||
//Wait for an interrupt
|
||||
switch (WaitForSingleObject(hBcEvent, 1000))
|
||||
{
|
||||
case WAIT_OBJECT_0:
|
||||
qDebug() << "Interrupt";
|
||||
//New message has arrived
|
||||
ResetEvent(hBcEvent);
|
||||
do
|
||||
{
|
||||
//Get interrupt data
|
||||
tmkgetevd(&tmkEvD);
|
||||
//Check interrupt type
|
||||
if (tmkEvD.nInt == 3)
|
||||
{
|
||||
wSubAddr = (tmkEvD.rt.wStatus >> 5) &0x1F;
|
||||
wLen = tmkEvD.rt.wStatus & 0x1F;
|
||||
if (wLen == 0)
|
||||
wLen = 32;
|
||||
if ((tmkEvD.rt.wStatus & RT_DIR_MASK) == RT_RECEIVE)
|
||||
{
|
||||
//If we received some data then copy the data from Rx subaddres to
|
||||
//Tx subaddress and process flags
|
||||
if ((rtgetflag(RT_RECEIVE, wSubAddr) & RT_FLAG_MASK) == 0)
|
||||
{
|
||||
//qDebug() << "Flag read error";
|
||||
NewRT->closeAllrt();
|
||||
}
|
||||
rtdefsubaddr(RT_RECEIVE, wSubAddr);
|
||||
rtgetblk(0, awBuf, wLen);
|
||||
rtclrflag();
|
||||
rtdefsubaddr(RT_TRANSMIT, wSubAddr);
|
||||
rtputblk(0, awBuf, wLen);
|
||||
rtsetflag();
|
||||
}
|
||||
}
|
||||
} while (tmkEvD.nInt != 0); //Loop while we have not processed all interrupts
|
||||
|
||||
break;
|
||||
|
||||
case WAIT_TIMEOUT:
|
||||
// No new messages
|
||||
qDebug() << "No new messages";
|
||||
if(NewRT->GetEvent(1000))
|
||||
{
|
||||
switch (tmkEvD.nInt)
|
||||
{
|
||||
case 1:
|
||||
qDebug() << "Cmd word arrived " << tmkEvD.rt.wCmd << " " <<tmkEvD.rt.wStatus;
|
||||
break;
|
||||
|
||||
default:
|
||||
qDebug() << "Interrupt wait error";
|
||||
NewRT->closeAllrt();
|
||||
case 2:
|
||||
qDebug() << "Case 2";
|
||||
break;
|
||||
|
||||
case 3:
|
||||
qDebug() << "Data arrived";
|
||||
wSubAddr = (tmkEvD.rt.wStatus >> 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;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user