|
- /******************************addpar.cpp文件说明**********************************
- * Descript :源文件,包含C运动参数配置窗口的函数实现
- * Author :caitiancheng
- * Date :2021_12_19
- *******************************************************************************/
-
-
- /***********************************头文件****************************************/
- #include "addpar.h"
- #include "ui_addpar.h"
- #include <QCloseEvent>
- #include <QMessageBox>
-
-
- /***********************************类的声明和继承****************************************/
- AddPar::AddPar(QWidget *parent) :
- QWidget(parent),
- ui(new Ui::AddPar)
- {
- ui->setupUi(this);
- //初始化配置
- InitTree();
- //设置窗口标题
- setWindowTitle("C运动参数配置");
- }
-
-
- /****************************closeEvent函数*********************************
- Function :窗口关闭事件函数
- Output :
- *********************************************************************/
- void AddPar::closeEvent(QCloseEvent *event)
- {
- QMessageBox::StandardButton Value=QMessageBox::question(this,QStringLiteral("退出提示"),QStringLiteral("确认数据已经同步到设备?"));
- if(Value==QMessageBox::Yes)
- {
- emit CloseWin();
- event->accept();
- }else
- {
- event->ignore();
- }
- }
-
- /****************************showEvent函数*********************************
- Function :如果从站连接上,更新数据
- Output :
- *********************************************************************/
- void AddPar::showEvent(QShowEvent *event)
- {
- if(ConStatus())
- {
- event->accept();
- Updata();
- }
- }
-
- /****************************ReadArgRunCrl函数*********************************
- Function :读取从站数据
- Output :
- *********************************************************************/
- void AddPar::ReadArgRunCrl(QStandardItem *Item,int Addr,int Row)
- {
- int Value;
- Value=ReadSFDInt(Addr);
- Item->child(Row,2)->setText(QString::number(Value));
- }
-
-
- /****************************FreeQList函数*********************************
- Function :删除列表参数
- Output :
- *********************************************************************/
- void AddPar::FreeQList(QList<QStandardItem *> *Item)
- {
- for(int i=0;i<Item->length();i++)
- {
- delete Item->at(i);
- }
- }
-
- /****************************InitTree函数*********************************
- Function :初始化函数
- Output :
- *********************************************************************/
- void AddPar::InitTree()
- {
- //定义数据行对象
- QStringList QStrListTemp;
- //初始化模型
- Model=new QStandardItemModel();
- //配置分类选择信号
- connect(Model,SIGNAL(itemChanged(QStandardItem*)),this,SLOT(TreeItemChanged(QStandardItem*)));
- //建立列名
- TreeHead.push_back(QStringLiteral("名称"));
- TreeHead.push_back(QStringLiteral("离线值"));
- TreeHead.push_back(QStringLiteral("在线值"));
- TreeHead.push_back(QStringLiteral("单位"));
- TreeHead.push_back(QStringLiteral("备注"));
- Model->setHorizontalHeaderLabels(TreeHead);
- //建立行分类
- BaseClass=new QStandardItem(QStringLiteral("基础参数"));
- RunCtrlClass=new QStandardItem(QStringLiteral("运动限制"));
- //建立分类可选择
- BaseClass->setCheckable(true);
- BaseClass->setEditable(false);
- RunCtrlClass->setCheckable(true);
- RunCtrlClass->setEditable(false);
-
- //分类加入模型
- Model->appendRow(BaseClass);
- Model->appendRow(RunCtrlClass);
-
-
- //建立数据行
- //编码器的旋转计数
- QStrListTemp.clear();
- QStrListTemp.push_back(QStringLiteral("单圈脉冲"));
- QStrListTemp.push_back("0");
- QStrListTemp.push_back("0");
- QStrListTemp.push_back("");
- QStrListTemp.push_back("编码器旋转一圈的计数值,根据电机编码器设定,如果17位,设置成131072");
- NewChildLine(BaseClass,&BaseOtp,QStrListTemp);
-
- //每圈移动量
- QStrListTemp.clear();
- QStrListTemp.push_back(QStringLiteral("移动量"));
- QStrListTemp.push_back("0");
- QStrListTemp.push_back("0");
- QStrListTemp.push_back("脉冲");
- QStrListTemp.push_back("每圈移动需要的脉冲");
- NewChildLine(BaseClass,&BaseMnum,QStrListTemp);
-
- //最高速度
- QStrListTemp.clear();
- QStrListTemp.push_back(QStringLiteral("最大速度"));
- QStrListTemp.push_back("0");
- QStrListTemp.push_back("0");
- QStrListTemp.push_back("脉冲/秒");
- QStrListTemp.push_back("电机可以运行的最大速度");
- NewChildLine(RunCtrlClass,&RunSpeed,QStrListTemp);
-
- //最快加速度
- QStrListTemp.clear();
- QStrListTemp.push_back(QStringLiteral("最快加速度时间"));
- QStrListTemp.push_back("0");
- QStrListTemp.push_back("0");
- QStrListTemp.push_back("毫秒");
- QStrListTemp.push_back("最快加速时间,根据该时间,系统自动计算对应加速相关参数");
- NewChildLine(RunCtrlClass,&RunAddSpeed,QStrListTemp);
-
- //最快减速度
- QStrListTemp.clear();
- QStrListTemp.push_back(QStringLiteral("最快减速度时间"));
- QStrListTemp.push_back("0");
- QStrListTemp.push_back("0");
- QStrListTemp.push_back("毫秒");
- QStrListTemp.push_back("最快减速时间,根据该时间,系统自动计算对应减速相关参数");
- NewChildLine(RunCtrlClass,&RunSubSpeed,QStrListTemp);
-
- //加载模型到树
- ui->ArgDataTreeView->setModel(Model);
- ui->ArgDataTreeView->expandAll();
- }
-
-
-
- /****************************TreeItemChanged函数*********************************
- Function :模型数参数改变
- Output :
- *********************************************************************/
- void AddPar::TreeItemChanged(QStandardItem *Item)
- {
- if (Item->isCheckable()&&Item->hasChildren())
- {
- Qt::CheckState status = Item->checkState ();
- for(int i = 0;i<Item->rowCount();++i)
- {
- QStandardItem* ItemChild = Item->child(i);
- ItemChild->setCheckState(status);
- }
- }
- }
-
-
- /****************************NewChildLine函数*********************************
- Function :新子行建立
- Output :
- *********************************************************************/
- void AddPar::NewChildLine(QStandardItem *Item,QList<QStandardItem *> *ItemList,QStringList Data)
- {
- int RowCount;
- ItemList->clear();
- for(int i=0;i<Data.length();i++)
- {
- ItemList->push_back(new QStandardItem(Data.at(i)));
- if(i!=1)
- {
- ItemList->at(i)->setEditable(false);
- }
- }
-
- RowCount=Item->rowCount();
- ItemList->at(0)->setCheckable(true);
- Item->appendRow(ItemList->at(0));
- for(int i=1;i<Data.length();i++)
- {
- Item->setChild(RowCount,i,ItemList->at(i));
- }
- }
-
-
- /****************************DownLoadData函数*********************************
- Function :下载从站数据
- Output :
- *********************************************************************/
- int AddPar::DownLoadData(QStandardItem *Item,QString Name,int Addr,int Row)
- {
- bool ok=true;
- int Value=0;
- if(Item->child(Row)->checkState()==Qt::Checked)
- {
- Value=Item->child(Row,1)->text().toInt(&ok);
- if(!ok)
- {
- QMessageBox::information(this,Name,QStringLiteral("写入失败"));
- return ReFild;
- }
- WriteSFDInt(Addr,Value);
- return ReSuess;
- }
- return ReUncheck;
- }
-
-
- /****************************下载按钮槽函数*********************************
- Function :点击下载按钮,会触发该槽函数
- Output :
- *********************************************************************/
- void AddPar::on_DownloadBtn_clicked()
- {
- int count=0;
- int value=0;
- if(!ConStatus())
- {
- QMessageBox::information(this,QStringLiteral("连接提示"),QStringLiteral("当前处于未连接状态"));
- }
- else
- {
- value=DownLoadData(BaseClass,"单圈脉冲",3002,0);
- count+=value==1?1:0;
- value=DownLoadData(BaseClass,"移动量",3004,1);
- count+=value==1?1:0;
- value=DownLoadData(RunCtrlClass,"最大速度",3018,0);
- count+=value==1?1:0;
- value=DownLoadData(RunCtrlClass,"最快加速度时间",3020,1);
- count+=value==1?1:0;
- value=DownLoadData(RunCtrlClass,"最快减速度时间",3022,2);
- count+=value==1?1:0;
- QMessageBox::information(this,QStringLiteral("下载提示"),QStringLiteral("写入成功:")+QString::number(count));
- }
- }
-
- /****************************Updata函数*********************************
- Function :更新数据的函数
- Output :
- *********************************************************************/
- void AddPar::Updata()
- {
- ReadArgRunCrl(BaseClass,3002,0);
- ReadArgRunCrl(BaseClass,3004,1);
- ReadArgRunCrl(RunCtrlClass,3018,0);
- ReadArgRunCrl(RunCtrlClass,3020,1);
- ReadArgRunCrl(RunCtrlClass,3022,2);
- }
-
-
-
-
- /****************************上载参数按钮槽函数*********************************
- Function :点击上载参数按钮,会触发该槽函数
- Output :
- *********************************************************************/
- void AddPar::on_UploadBtn_clicked()
- {
- if(!ConStatus())
- {
- QMessageBox::information(this,QStringLiteral("连接提示"),QStringLiteral("当前处于未连接状态"));
- }
- else
- {
- Updata();
- }
- }
-
-
-
- /******************************************************析构函数*****************************************************/
- AddPar::~AddPar()
- {
- delete Model;
- delete BaseClass;
- FreeQList(&BaseOtp);
- FreeQList(&BaseMnum);
- delete RunCtrlClass;
- FreeQList(&RunSpeed);
- FreeQList(&RunAddSpeed);
- FreeQList(&RunSubSpeed);
- delete ui;
- }
-
|