#pragma once
#include "QtGuiApplication3.h"
#include<QMessagebox>
#include<Windows.h>
#include<CString>
#include<synchapi.h>
#include <QCloseEvent>
using namespace std;
QtGuiApplication3::QtGuiApplication3(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
groupBox = new QButtonGroup();
groupBox1 = new QButtonGroup();
groupBox->addButton(ui.radioButton_2, 1);
groupBox->addButton(ui.radioButton_3, 2);
groupBox1->addButton(ui.radioButton, 1);
groupBox1->addButton(ui.radioButton_4, 2);
groupBox1->addButton(ui.radioButton_5, 3);
//connect(groupBox, SIGNAL(idClicked(int)), this, SLOT(p_group(int)));
ui.radioButton_2->setChecked(true);
ui.radioButton_4->setChecked(true);
ui.IPedit->setText("127.0.0.1");
/*connect(ui.leftButton, SIGNAL(clicked()), &m_core, SLOT(&NCCore:moveClick));
connect(ui.connectButton, SIGNAL(clicked()), &m_core, SLOT(&NCCore:connectClick));*/
//connect(ui.connectButton, &QPushButton::clicked, this, &QtGuiApplication3::connectClick);
connect(ui.leftButton, &QPushButton::released, this, &QtGuiApplication3::stopmoveClick);
connect(ui.leftButton, &QPushButton::pressed, this, &QtGuiApplication3::moveClick);
connect(ui.rightButton, &QPushButton::released, this, &QtGuiApplication3::stopmoveClick);
connect(ui.rightButton, &QPushButton::pressed, this, &QtGuiApplication3::moveRightClick);
connect(ui.ParamsButton, &QPushButton::clicked, this, &QtGuiApplication3::openParamsWindow);
connect(&t, &TThread::getP, this, &QtGuiApplication3::showDistance);
}
int QtGuiApplication3::getgroupId() {
return groupBox->checkedId();
}
void QtGuiApplication3::connectClick() {
if (m_pBoard)
{
DestroyKWZBoard(m_pBoard);
}
m_pBoard = CreateKWZBoard();
m_axisNum = 0;
for (int i = 0; i < 6; i++)
{
if (GetAxisIndex(i) >= 0)
{
m_axisNum = max(m_axisNum, GetAxisIndex(i) + 1);
}
}
// 初始化控制卡
string str; // "127.0.0.1","192.168.0.11";
QMessageBox msgBox;
m_boardIP =ui.IPedit->text();
msgBox.setIcon(QMessageBox::Information);
str = m_boardIP.toStdString();
char* ipaddr = new char[str.length() + 1];
strcpy(ipaddr, str.c_str());
int res = m_pBoard->BoardInit(ipaddr, 0, m_axisNum);
int failedTimes = 2;
while (res != 0 && failedTimes > 0)
{
Sleep(1000);
failedTimes--;
res = m_pBoard->BoardInit(ipaddr, 0, m_axisNum);
}
if (res != 0)
{
msgBox.setWindowTitle("Connection");
msgBox.setText("Connection failed");
msgBox.exec();
}
else {
msgBox.setWindowTitle("Connection");
msgBox.setText("Connection successful");
//m_pBoard->SetAType(0, 7);
//m_pBoard->SetPulseOutmode(0, 0);
t.m_pBoard = m_pBoard;
t.start();
msgBox.exec();
int nRatio = m_pBoard->AxisIOStatus(0);
/*int x = m_pBoard->ReadInport2(0, 15, (unsigned int*)&nRatio);
ui.inlabel->setText(QString::number(x, 'd', 1));*/
}
}
void QtGuiApplication3::showDistance(double p) {
QString x = QString::number(p, 'f', 4);
ui.distance_label->setText(QString::number(p, 'f', 4));
}
void QtGuiApplication3::moveClick() {
QString distance;
if (groupBox->checkedId() == 2) {
if (groupBox1->checkedId() < 3) {
distance = groupBox1->checkedButton()->text();
m_pBoard->Pmove(0, distance.toDouble(), 1);
}
else {
distance = ui.lineEdit->text();
float x = distance.toDouble();
m_pBoard->Pmove(0, x, 1);
}
}
else{
m_pBoard->Vmove(0,0, 100);
}
}
void QtGuiApplication3::stopmoveClick() {
if (groupBox->checkedId() == 1) {
m_pBoard->StopAxis(0);
}
}
void QtGuiApplication3::moveRightClick() {
QString distance;
if (groupBox->checkedId() == 2) {
if (groupBox1->checkedId() < 3) {
distance = groupBox1->checkedButton()->text();
m_pBoard->Pmove(0, -distance.toDouble(), 1);
}
else {
distance = ui.lineEdit->text();
double x= -distance.toDouble();
m_pBoard->Pmove(0, x, 1);
}
}
else {
m_pBoard->Vmove(0, 1, 100);
}
}
void QtGuiApplication3::closeEvent(QCloseEvent *event) {
t.stopThread();
if (!t.wait(1000)) {
t.terminate();
}
event->accept();
}
int QtGuiApplication3::GetAxisIndex(int axisType)
{
/*if (m_axisDefine[axisType] == AXIS_DEFINE_NOT_EXIST)
{
return -1;
}*/
return m_axisIndex[axisType];
}
void QtGuiApplication3::openParamsWindow() {
if (!ParamsWindow) {
ParamsWindow = new setParams(this);
}
ParamsWindow->show();
ParamsWindow->raise();
ParamsWindow->activateWindow();
}为什么新窗口不显示
最新发布