add copy and move sub card config

This commit is contained in:
zhangsheng 2026-01-12 19:31:14 +08:00
parent 3bcd3c9c9b
commit a4a8007913
4 changed files with 101 additions and 12 deletions

View File

@ -32,18 +32,18 @@ MyTcpClient* MyTcpClient::instance()
}
return m_instance;
}
void MyTcpClient::connectToServer(const QString &host, quint16 port) {
int MyTcpClient::connectToServer(const QString &host, quint16 port) {
serverHost = host;
serverPort = port;
if (socket->state() == QAbstractSocket::ConnectedState) {
qDebug() << "Already connected!";
return;
return 0;
}
qDebug() << "Connecting to" << host << ":" << port;
socket->connectToHost(host, port);
if (!socket->waitForConnected()) {
qDebug() << "Connection failed!";
return;
return -1;
}
}

View File

@ -14,7 +14,7 @@ public:
explicit MyTcpClient(QObject *parent = nullptr);
~MyTcpClient();
void connectToServer(const QString &host, quint16 port);
int connectToServer(const QString &host, quint16 port);
int sendData(char* data,qint64 len);
void waitForRead();
void disconnectFromServer();

View File

@ -4,6 +4,7 @@
#include <QRegularExpressionValidator>
#include "data_config.h"
#include <QSettings>
#include <QMessageBox>
Connect::Connect(QWidget *parent) :
QWidget(parent),
@ -30,7 +31,6 @@ void Connect::on_pushButton_connect_clicked()
m_tcpClient->connectToServer(g_strServerIp, 10000);
QSettings *settings = new QSettings(QCoreApplication::applicationDirPath() + "/config/config.ini", QSettings::IniFormat);
settings->setValue("Server/IP", ui->lineEdit_IP->text());
this->close();
}

View File

@ -116,7 +116,7 @@ MainWindow::MainWindow(QWidget *parent)
//qInstallMessageHandler(messageHandler);
#endif
QDate buildDate = QLocale( QLocale::English ).toDate( QString(__DATE__).replace(" ", " 0"), "MMM dd yyyy");
QString Version = "V1.0_" + buildDate.toString("yyyyMMdd") + "_24f3";
QString Version = "V1.0_" + buildDate.toString("yyyyMMdd") + "_3bcd";
ui->label_version->setText(Version);
}
@ -438,9 +438,9 @@ void MainWindow::onMenuActionTriggered() {
}else if(action->text() == "获取进程号"){
GetCardProcessID(button_id);
}else if(action->text() == "复制板卡配置"){
GetCardProcessID(button_id);
CopySubCard(button_id);
}else if(action->text() == "移动板卡配置"){
GetCardProcessID(button_id);
MoveSubCard(button_id);
}
break; // 找到按钮后,跳出循环
}
@ -922,6 +922,13 @@ void MainWindow::CopySubCard(int slot){
QMessageBox::information(this, QStringLiteral("提示"), QStringLiteral("请输入正确的板卡号!"));
return ;
}
QMessageBox *box = new QMessageBox(QMessageBox::Question, "提示", "是否进行板卡配置复制?", QMessageBox::Yes | QMessageBox::No, this);
box->button(QMessageBox::Yes)->setText("确认");
box->button(QMessageBox::No)->setText("取消");
int res = box->exec();
if(QMessageBox::No == res){
return;
}
int card_type_old = -1, card_type_new = -1;
std::shared_ptr<CardBase> base_ptr_old = ConfigMgr::Instance()->GetSlotPtr(slot_no);
if(base_ptr_old != nullptr){
@ -934,17 +941,99 @@ void MainWindow::CopySubCard(int slot){
QMessageBox::warning(this, QStringLiteral("警告"), QStringLiteral("请选择相同的板卡类型!"));
return ;
}
}else{
QMessageBox::warning(this, QStringLiteral("警告"), QStringLiteral("目标板卡无配置,请使用“移动板卡配置”!"));
return ;
}
std::shared_ptr<VibrationData> vib_data = std::make_shared<VibrationData>();
std::shared_ptr<VibrationData> vib_data = std::dynamic_pointer_cast<VibrationData>(base_ptr_old);
vib_data->slot_ = value;
vib_data->relative_number = value;
ConfigMgr::Instance()->AddCard(vib_data);
QList<QAbstractButton *> buttonList = btnGroup_slot->buttons();
for (int i = 1; i < buttonList.count(); i++) {
if(i == value){
switch (base_ptr_old->card_type_) {
case kCardVibSingle :{
buttonList[i]->setText("振动");
break;
}
case kCardKeyphaseSingle:{
buttonList[i]->setText("键相");
break;
}
case kCardSpeedSingle:{
buttonList[i]->setText("转速");
break;
}
case kCardRelaySingle:
case kCardRelaySingleNOK:
case kCardRelayTMRBackup:
case kCardRelayTMRPrimary:{
buttonList[i]->setText("继电器");
break;
}
default:
break;
}
}
}
}
void MainWindow::MoveSubCard(int slot){
slot_no = slot;
QString strTips = QString("请输入1到15之间的数值");
bool ok = false;
int value = QInputDialog::getInt(this, tr("输入整数对话框"), strTips, 0, 1, 15, 1, &ok);
if(!ok) return;
if(value < 1){
QMessageBox::information(this, QStringLiteral("提示"), QStringLiteral("请输入正确的板卡号!"));
return ;
}
QMessageBox *box = new QMessageBox(QMessageBox::Question, "提示", "是否进行板卡配置移动?", QMessageBox::Yes | QMessageBox::No, this);
box->button(QMessageBox::Yes)->setText("确认");
box->button(QMessageBox::No)->setText("取消");
int res = box->exec();
if(QMessageBox::No == res){
return;
}
std::shared_ptr<CardBase> base_ptr_old = ConfigMgr::Instance()->GetSlotPtr(slot_no);
std::shared_ptr<CardBase> base_ptr_new = ConfigMgr::Instance()->GetSlotPtr(value);
if(base_ptr_new != nullptr){
QMessageBox::warning(this, QStringLiteral("警告"), QStringLiteral("目标板卡非空!"));
return ;
}
std::shared_ptr<VibrationData> vib_data = std::dynamic_pointer_cast<VibrationData>(base_ptr_old);
vib_data->slot_ = value;
ConfigMgr::Instance()->AddCard(vib_data);
ConfigMgr::Instance()->RemoveCard(base_ptr_old);
QList<QAbstractButton *> buttonList = btnGroup_slot->buttons();
for (int i = 1; i < buttonList.count(); i++) {
if(i == value){
switch (base_ptr_old->card_type_) {
case kCardVibSingle :{
buttonList[i]->setText("振动");
break;
}
case kCardKeyphaseSingle:{
buttonList[i]->setText("键相");
break;
}
case kCardSpeedSingle:{
buttonList[i]->setText("转速");
break;
}
case kCardRelaySingle:
case kCardRelaySingleNOK:
case kCardRelayTMRBackup:
case kCardRelayTMRPrimary:{
buttonList[i]->setText("继电器");
break;
}
default:
break;
}
}else if(i == slot){
buttonList[i]->setText("");
}
}
}
void MainWindow::readData(const QByteArray &data) {
qDebug() << "Received from server:" << data;