2623 lines
87 KiB
C++
2623 lines
87 KiB
C++
#include "parametersetdialog.h"
|
||
#include "ui_parametersetdialog.h"
|
||
|
||
ParameterSetDialog::ParameterSetDialog(QWidget *parent) :
|
||
QDialog(parent),
|
||
ui(new Ui::ParameterSetDialog),
|
||
m_itemPerPage(12)
|
||
{
|
||
ui->setupUi(this);
|
||
setWindowFlags (Qt::Window | Qt::FramelessWindowHint);
|
||
setWindowModality(Qt::ApplicationModal);
|
||
|
||
this->move(0,0);
|
||
m_curPage = 0;
|
||
m_rootCurPage = 0;
|
||
|
||
//获取网卡ID
|
||
m_networkCardID.clear();
|
||
QList<QNetworkInterface> interfaces = QNetworkInterface::allInterfaces();
|
||
if(interfaces.size() == 1)
|
||
{
|
||
QNetworkInterface item = interfaces.at(0);
|
||
m_networkCardID = item.hardwareAddress();
|
||
}
|
||
else
|
||
{
|
||
int nCnt = interfaces.count();
|
||
for(int i = 0; i < nCnt; i++)
|
||
{
|
||
//QNetworkInterface item = interfaces.at(i);
|
||
//m_networkCardID = item.hardwareAddress();
|
||
|
||
// 如果此网络接口被激活并且正在运行并且不是回环地址,则就是我们需要找的Mac地址
|
||
if(interfaces[i].flags().testFlag(QNetworkInterface::IsUp) &&
|
||
interfaces[i].flags().testFlag(QNetworkInterface::IsRunning) &&
|
||
!interfaces[i].flags().testFlag(QNetworkInterface::IsLoopBack))
|
||
{
|
||
m_networkCardID = interfaces[i].hardwareAddress();
|
||
qDebug()<<m_networkCardID;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
initData();
|
||
initControl();
|
||
refreshUi();
|
||
}
|
||
|
||
ParameterSetDialog::~ParameterSetDialog()
|
||
{
|
||
delete ui;
|
||
}
|
||
|
||
//初始化窗体控件,包括位置、尺寸、样式
|
||
void ParameterSetDialog::initControl()
|
||
{
|
||
m_itemBtnList.clear();
|
||
m_itemBtnList.append(ui->button1);
|
||
m_itemBtnList.append(ui->button2);
|
||
m_itemBtnList.append(ui->button3);
|
||
m_itemBtnList.append(ui->button4);
|
||
m_itemBtnList.append(ui->button5);
|
||
ui->button6->setVisible(false);//隐藏
|
||
ui->button7->setVisible(false);
|
||
ui->button8->setVisible(false);
|
||
ui->button9->setVisible(false);
|
||
ui->button10->setVisible(false);
|
||
ui->button11->setVisible(false);
|
||
ui->button12->setVisible(false);
|
||
|
||
if(g_emResolut == resolution1910)//1920x1080的分辨率每页显示12个条目
|
||
{
|
||
ui->button6->setVisible(true);
|
||
ui->button7->setVisible(true);
|
||
ui->button8->setVisible(true);
|
||
ui->button9->setVisible(true);
|
||
ui->button10->setVisible(true);
|
||
ui->button11->setVisible(true);
|
||
ui->button12->setVisible(true);
|
||
m_itemBtnList.append(ui->button6);
|
||
m_itemBtnList.append(ui->button7);
|
||
m_itemBtnList.append(ui->button8);
|
||
m_itemBtnList.append(ui->button9);
|
||
m_itemBtnList.append(ui->button10);
|
||
m_itemBtnList.append(ui->button11);
|
||
m_itemBtnList.append(ui->button12);
|
||
}
|
||
else if(g_emResolut == resolution1006)//1024x600的分辨率每页显示8个条目
|
||
{
|
||
ui->button6->setVisible(true);//显示
|
||
ui->button7->setVisible(true);
|
||
ui->button8->setVisible(true);
|
||
m_itemBtnList.append(ui->button6);
|
||
m_itemBtnList.append(ui->button7);
|
||
m_itemBtnList.append(ui->button8);
|
||
}
|
||
|
||
//根据不同分辨率设置控件的位置和尺寸
|
||
switch (g_emResolut)
|
||
{
|
||
case resolution1910:
|
||
initResolution1910();
|
||
break;
|
||
case resolution1006:
|
||
initResolution1006();
|
||
break;
|
||
default:
|
||
this->resize(1920,1080);
|
||
break;
|
||
}
|
||
|
||
initControlStyle();//初始化窗体控件样式
|
||
}
|
||
|
||
//初始化窗体控件为1920x1080分辨率
|
||
void ParameterSetDialog::initResolution1910()
|
||
{
|
||
this->resize(1920,1080);
|
||
ui->frameBack->setGeometry(0,0,1920,1080);
|
||
ui->buttonTypeLogo->setGeometry(128,66,78,78);
|
||
ui->labelMainTitle->setGeometry(226,60,1000,48);
|
||
ui->labelSubTitle->setGeometry(302,112,1000,36);
|
||
|
||
ui->frameRightUp->setGeometry(1468,92,406,72);
|
||
ui->buttonHeadParaImport->setGeometry(76,0,66,66);
|
||
ui->buttonHeadParaExport->setGeometry(164,0,66,66);
|
||
ui->buttonEXBParaRestore->setGeometry(252,0,66,66);
|
||
ui->buttonReturn->setGeometry(340,0,66,66);
|
||
|
||
QRect rectName(40,0,925,58);
|
||
QRect rectValue(1040,0,272,58);
|
||
for(int i = 0; i < m_itemPerPage; i++)
|
||
{
|
||
m_itemBtnList[i]->setGeometry(295,180 + i * 64,1340,58);
|
||
m_itemBtnList[i]->initLeftNameRightValue(rectName,rectValue,1);
|
||
}
|
||
|
||
ui->framePageBtn->setGeometry(1120,990,800,70);
|
||
ui->labelPage->setGeometry(32,1008,400,40);
|
||
ui->buttonPgUp->setGeometry(0,0,168,70);
|
||
ui->buttonPgDn->setGeometry(200,0,168,70);
|
||
ui->buttonOk->setGeometry(400,0,168,70);
|
||
ui->buttonCancel->setGeometry(600,0,168,70);
|
||
}
|
||
|
||
//初始化窗体控件为1024x600分辨率
|
||
void ParameterSetDialog::initResolution1006()
|
||
{
|
||
m_itemPerPage = m_itemPerPage - 4;
|
||
this->resize(1024,600);
|
||
ui->frameBack->setGeometry(0,0,1024,600);
|
||
ui->buttonTypeLogo->setGeometry(25,30,60,60);
|
||
ui->labelMainTitle->setGeometry(100,30,200,24);
|
||
ui->labelSubTitle->setGeometry(130,64,240,21);
|
||
|
||
ui->frameRightUp->setGeometry(746,40,800,61);
|
||
ui->buttonHeadParaImport->setGeometry(22,0,50,50);
|
||
ui->buttonHeadParaExport->setGeometry(86,0,50,50);
|
||
ui->buttonEXBParaRestore->setGeometry(150,0,50,50);
|
||
ui->buttonReturn->setGeometry(214,0,50,50);
|
||
|
||
//内容的位置
|
||
QRect rectName(40,-1,400,53);
|
||
QRect rectValue(460,-1,220,53);
|
||
for(int i = 0; i < m_itemPerPage; i++)//白色按下的效果
|
||
{
|
||
m_itemBtnList[i]->setGeometry(153,96 + i * 53,718,53);
|
||
m_itemBtnList[i]->initLeftNameRightValue(rectName,rectValue,1);
|
||
}
|
||
|
||
ui->framePageBtn->setGeometry(595,545,600,45);
|
||
ui->labelPage->setGeometry(20,550,102,45);
|
||
ui->buttonPgUp->setGeometry(0,0,96,40);
|
||
ui->buttonPgDn->setGeometry(106,0,96,40);
|
||
ui->buttonOk->setGeometry(212,0,96,40);
|
||
ui->buttonCancel->setGeometry(318,0,96,40);
|
||
}
|
||
|
||
//初始化窗体控件样式
|
||
void ParameterSetDialog::initControlStyle()
|
||
{
|
||
SetControlStyle setControlStyle;
|
||
setControlStyle.setUiName(this->objectName());
|
||
|
||
//背景图
|
||
QString frameBackImgPath = setControlStyle.getSharedStyleSheet();
|
||
ui->frameBack->setStyleSheet(frameBackImgPath);
|
||
ui->labelMainTitle->setFont(fontBold_1);
|
||
ui->labelMainTitle->setStyleSheet(LABELWHITESTYLE);
|
||
ui->labelSubTitle->setFont(fontNormal_1);
|
||
ui->labelSubTitle->setStyleSheet(LABELWHITESTYLE);
|
||
ui->labelPage->setFont(fontNormal_1);
|
||
ui->labelPage->setStyleSheet(LABELWHITESTYLE);
|
||
|
||
//右上方
|
||
ui->frameRightUp->setStyleSheet(TRANSPARENTSTYLE);
|
||
ui->buttonEXBParaRestore->setGreenGradientBottomStyle(BORDER_RADIUS1);
|
||
ui->buttonEXBParaRestore->setTopImage(setControlStyle.getTopStyleSheet(ui->buttonEXBParaRestore->objectName()));
|
||
ui->buttonReturn->setGreenGradientBottomStyle(BORDER_RADIUS1);
|
||
ui->buttonReturn->setTopImage(setControlStyle.getTopStyleSheet(ui->buttonReturn->objectName()));
|
||
ui->buttonHeadParaImport->setGreenGradientBottomStyle(BORDER_RADIUS1);
|
||
ui->buttonHeadParaImport->setTopImage(setControlStyle.getTopStyleSheet(ui->buttonHeadParaImport->objectName()));
|
||
ui->buttonHeadParaExport->setGreenGradientBottomStyle(BORDER_RADIUS1);
|
||
ui->buttonHeadParaExport->setTopImage(setControlStyle.getTopStyleSheet(ui->buttonHeadParaExport->objectName()));
|
||
|
||
//条目
|
||
for(int i = 0; i < m_itemPerPage; i++)
|
||
{
|
||
m_itemBtnList[i]->setLabelFont(fontNormal_1);
|
||
}
|
||
|
||
//四个按钮样式表一样
|
||
ui->buttonPgUp->setOrangeGradientBottomStyle(BORDER_RADIUS2);
|
||
ui->buttonPgUp->setTopImage(setControlStyle.getSharedTopStyleSheet(ui->buttonPgUp->objectName()),12);
|
||
|
||
ui->buttonPgDn->setOrangeGradientBottomStyle(BORDER_RADIUS2);
|
||
ui->buttonPgDn->setTopImage(setControlStyle.getSharedTopStyleSheet(ui->buttonPgDn->objectName()),12);
|
||
|
||
ui->buttonOk->setOrangeGradientBottomStyle(BORDER_RADIUS2);
|
||
ui->buttonOk->setTopImage(setControlStyle.getSharedTopStyleSheet(ui->buttonOk->objectName()),12);
|
||
|
||
ui->buttonCancel->setOrangeGradientBottomStyle(BORDER_RADIUS2);
|
||
ui->buttonCancel->setTopImage(setControlStyle.getSharedTopStyleSheet(ui->buttonCancel->objectName()),12);
|
||
}
|
||
|
||
void ParameterSetDialog::refreshUi()
|
||
{
|
||
ui->buttonOk->setVisible(true);//再进入界面时,刷新界面确认按钮就显示
|
||
|
||
if(m_paraType == PARA_TYPE_HMICONFIGURATION)//等于界面配置
|
||
{
|
||
refreshProductType();//刷新产品类型
|
||
}
|
||
|
||
if (m_itemList.size() <= 0)//参数列表
|
||
{
|
||
for (int i = 0; i < m_itemPerPage; i++)
|
||
{
|
||
m_itemBtnList.at(i)->hide();
|
||
}
|
||
ui->labelPage->setText("PageNum: 0/0");
|
||
ui->buttonPgUp->setEnabled(false);
|
||
ui->buttonPgDn->setEnabled(false);
|
||
ui->buttonOk->setEnabled(false);
|
||
ui->frameRightUp->setVisible(false);
|
||
|
||
return;//下边的代码不执行
|
||
}
|
||
|
||
if(m_itemPerPage <= 0)
|
||
{
|
||
return;
|
||
}
|
||
|
||
ui->buttonOk->setEnabled(true);
|
||
QString split1 = ":";
|
||
QString split2 = ";";
|
||
QString str;
|
||
|
||
//-----------
|
||
int itemNum, pageNums;
|
||
itemNum = m_itemList.size();//列表总个数
|
||
pageNums = (itemNum+m_itemPerPage-1) / m_itemPerPage;//一共有的页数
|
||
|
||
if(m_paraType == PARA_TYPE_ROOT)//等于超级用户界面
|
||
{
|
||
if (m_rootCurPage > pageNums) // 当前页
|
||
{
|
||
m_rootCurPage = pageNums;
|
||
}
|
||
if (m_rootCurPage <= 1)
|
||
{
|
||
m_rootCurPage = 1;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (m_curPage > pageNums) // 当前页
|
||
{
|
||
m_curPage = pageNums;
|
||
}
|
||
if (m_curPage <= 1)
|
||
{
|
||
m_curPage = 1;
|
||
}
|
||
}
|
||
|
||
// 条目信息
|
||
int i, itemidx;
|
||
if(m_paraType == PARA_TYPE_ROOT)//等于超级用户界面
|
||
{
|
||
itemidx = (m_rootCurPage-1) * m_itemPerPage;
|
||
}
|
||
else
|
||
{
|
||
itemidx = (m_curPage-1) * m_itemPerPage;
|
||
}
|
||
|
||
for (i = 0; i < m_itemPerPage; i++)
|
||
{
|
||
if (itemidx < m_itemList.size())
|
||
{
|
||
const ParaItem & item = m_itemList.at(itemidx);
|
||
|
||
if (item.readonly != 0) // 只读,不能设置
|
||
{
|
||
m_itemBtnList.at(i)->show();
|
||
m_itemBtnList.at(i)->setEnabled(false);
|
||
if(item.paraTypeSort == PARA_TYPE_MACH)//机器参数
|
||
{
|
||
m_itemList[i].value = m_mcParaValues.buf[HEADNUMBERIDX];//机头个数
|
||
//indexInPara 参数的索引
|
||
// m_itemList[i].value = m_mcParaValues.buf[item.indexInPara];
|
||
}
|
||
|
||
if(item.paraTypeSort == ROOT_SORT_HEADSENSOR)//信号参数
|
||
{
|
||
int w = m_itemBtnList[i]->labelName->width()+m_itemBtnList[i]->labelValue->width();
|
||
int h = m_itemBtnList[i]->labelName->height();
|
||
//重新设置宽度,整行都显示遍历状态信号,无value
|
||
m_itemBtnList[i]->labelName->resize(w,h);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
//超级用户选择工作参数开关型后回到遍历设置会显示开关,以下代码隐藏开关
|
||
if(item.valueType == PARA_VALUE_TYPE_CLICK)
|
||
{
|
||
m_itemBtnList.at(i)->setLabelValueImage("");
|
||
}
|
||
m_itemBtnList.at(i)->show();
|
||
m_itemBtnList.at(i)->setEnabled(true);
|
||
}
|
||
|
||
m_itemBtnList.at(i)->setLabelName(item.paraName);
|
||
|
||
if (item.valueType == PARA_VALUE_TYPE_INT) // = 1, 数字输入型
|
||
{
|
||
str = getValueStr(item.value, item.afterPoint);//显示的是默认参数
|
||
str += " " + item.unitStr;
|
||
// qDebug()<< item.value << item.afterpoint << item.unitstr;
|
||
m_itemBtnList.at(i)->setLabelValue(str);//设置参数显示的值,没连上就显示的默认参数
|
||
m_itemBtnList.at(i)->show();
|
||
}
|
||
else if (item.valueType == PARA_VALUE_TYPE_SW) // = 2, 开关选择型
|
||
{
|
||
SetControlStyle setControlStyle;
|
||
setControlStyle.setUiName(this->objectName());
|
||
|
||
QString path;
|
||
path = setControlStyle.getBottomStyleSheet1("");
|
||
|
||
if (item.value != 0)//打开
|
||
{
|
||
path += "switchOn_logo.png";
|
||
}
|
||
else
|
||
{
|
||
path += "switchOff_logo.png";
|
||
}
|
||
|
||
m_itemBtnList.at(i)->setLabelValueImage(path);
|
||
}
|
||
else if (item.valueType == PARA_VALUE_TYPE_LIST) // = 3, 列表选择型
|
||
{
|
||
QStringList vallist;
|
||
if(item.selList.indexOf(split1) == -1)
|
||
{
|
||
// 没找到 二级分割
|
||
vallist = item.selList.split(split2, QString::SkipEmptyParts);
|
||
if (vallist.size() <= 0)
|
||
{
|
||
str = "";
|
||
}
|
||
else
|
||
{
|
||
int selIdx = item.selIdx;
|
||
if (selIdx < 0)
|
||
{
|
||
selIdx = 0;
|
||
}
|
||
if (selIdx >= vallist.size())
|
||
{
|
||
selIdx = vallist.size() - 1;
|
||
}
|
||
str = vallist.at(selIdx);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
// 二级分割
|
||
vallist = item.selList.split(split2, QString::SkipEmptyParts);
|
||
if (vallist.size() <= 0)
|
||
{
|
||
str = "";
|
||
}
|
||
else
|
||
{
|
||
int miniIndex = vallist.first().split(split1, QString::SkipEmptyParts).at(1).toInt();
|
||
int maxIndex = vallist.last().split(split1, QString::SkipEmptyParts).at(1).toInt();
|
||
|
||
//int selIdx = item.value;
|
||
int selIdx = item.selIdx;
|
||
if (selIdx < miniIndex)
|
||
{
|
||
selIdx = miniIndex;
|
||
}
|
||
if (selIdx >= maxIndex)
|
||
{
|
||
selIdx = maxIndex;
|
||
}
|
||
for (int var = 0; var < vallist.size(); ++var)
|
||
{
|
||
QStringList sublist = vallist.at(var).split(split1, QString::SkipEmptyParts);
|
||
if(sublist.at(1).toInt() == selIdx)
|
||
{
|
||
str = sublist.at(0);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if((m_paraType == PARA_TYPE_PATTERN && item.indexInPara == SET_ROTATESTYLE))//旋转式样
|
||
{
|
||
//旋转式样加载P的图片
|
||
SetControlStyle setControlStyle;
|
||
setControlStyle.setUiName(this->objectName());
|
||
|
||
QString path = setControlStyle.getSharedBottomStyleSheet("") + str + "_logo.png";
|
||
m_itemBtnList.at(i)->setLabelValueImage(path);
|
||
}
|
||
else
|
||
{
|
||
m_itemBtnList.at(i)->setLabelValue(str);
|
||
}
|
||
}
|
||
else if (item.valueType == PARA_VALUE_TYPE_STRINPUT) // = 4, 字符串输入型
|
||
{
|
||
str = item.valueStr;
|
||
m_itemBtnList.at(i)->setLabelValue(str);
|
||
m_itemBtnList.at(i)->show();
|
||
}
|
||
else // = 0, 无值
|
||
{
|
||
m_itemBtnList.at(i)->setLabelValue("");
|
||
}
|
||
itemidx++;
|
||
}
|
||
else
|
||
{
|
||
m_itemBtnList.at(i)->setEnabled(false);
|
||
m_itemBtnList.at(i)->hide();
|
||
}
|
||
}
|
||
|
||
if(m_paraType == PARA_TYPE_ROOT)//等于超级用户界面
|
||
{
|
||
// 超级用户界面按钮
|
||
if (m_rootCurPage <= 1)
|
||
{
|
||
ui->buttonPgUp->setEnabled(false);
|
||
}
|
||
else
|
||
{
|
||
ui->buttonPgUp->setEnabled(true);
|
||
}
|
||
|
||
if (m_rootCurPage >= pageNums)
|
||
{
|
||
ui->buttonPgDn->setEnabled(false);
|
||
}
|
||
else
|
||
{
|
||
ui->buttonPgDn->setEnabled(true);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
// 按钮
|
||
if (m_curPage <= 1)
|
||
{
|
||
ui->buttonPgUp->setEnabled(false);
|
||
}
|
||
else
|
||
{
|
||
ui->buttonPgUp->setEnabled(true);
|
||
}
|
||
|
||
if (m_curPage >= pageNums)
|
||
{
|
||
ui->buttonPgDn->setEnabled(false);
|
||
}
|
||
else
|
||
{
|
||
ui->buttonPgDn->setEnabled(true);
|
||
}
|
||
}
|
||
|
||
// 页信息
|
||
QString strPage;
|
||
if(m_paraType == PARA_TYPE_ROOT)//等于超级用户界面
|
||
{
|
||
strPage = tr("pageNum: ") + QString("%1/%2").arg(m_rootCurPage).arg(pageNums);//页数:
|
||
}
|
||
else
|
||
{
|
||
strPage = tr("pageNum: ") + QString("%1/%2").arg(m_curPage).arg(pageNums);//页数:
|
||
}
|
||
|
||
ui->labelPage->setText(strPage);
|
||
|
||
if(m_paraType == PARA_TYPE_EXBUPGRADE)//外围板升级参数
|
||
{
|
||
ui->buttonOk->setEnabled(false);
|
||
}
|
||
if(m_paraType == PARA_TYPE_ROOT)
|
||
{
|
||
ui->buttonOk->setEnabled(false);
|
||
//ui->buttonOk->setEnabled(true);//增加了界面调试模式,超级用户界面按钮可用
|
||
}
|
||
|
||
if(m_paraType == PARA_TYPE_HEADPARAMETER || //机头板
|
||
m_paraType == PARA_TYPE_MACH ||
|
||
m_paraType == PARA_TYPE_WORK)//机头板参数或机器参数或工作参数(机器参数或工作参数为超级用户目录下的)
|
||
{
|
||
ui->frameRightUp->setVisible(true);
|
||
ui->buttonEXBParaRestore->setVisible(true);//恢复默认参数按钮
|
||
ui->buttonReturn->setVisible(true);//返回上一级按钮
|
||
ui->buttonHeadParaImport->setVisible(true);
|
||
ui->buttonHeadParaExport->setVisible(true);
|
||
}
|
||
else if( m_paraType == PARA_TYPE_HMICONFIGURATION||//超级用户花样参数
|
||
m_paraType == PARA_TYPE_ROOTTRAVERSE ||//遍历设置
|
||
m_paraType == PARA_TYPE_LOCKTEST ||//锁头测试
|
||
m_paraType == PARA_TYPE_IOTCONFIGURATION ||//物联网配置
|
||
m_paraType == PARA_TYPE_ROOT_PATTERN) //界面配置
|
||
{
|
||
ui->frameRightUp->setVisible(true);
|
||
ui->buttonEXBParaRestore->setVisible(false);
|
||
ui->buttonHeadParaImport->setVisible(false);
|
||
ui->buttonHeadParaExport->setVisible(false);
|
||
ui->buttonReturn->setVisible(true);//返回上一级按钮
|
||
}
|
||
else
|
||
{
|
||
ui->frameRightUp->setVisible(false);
|
||
}
|
||
//超级用户界面配置
|
||
if(m_paraType == PARA_TYPE_HMICONFIGURATION)
|
||
{
|
||
ui->buttonOk->setEnabled(true);
|
||
}
|
||
}
|
||
|
||
QString ParameterSetDialog::getValueStr(int64_t val, int afterpoint)
|
||
{
|
||
QString str;
|
||
double value = val;
|
||
if (afterpoint <= 0)
|
||
{
|
||
str.sprintf("%.0f", value);
|
||
}
|
||
else if (afterpoint == 1)
|
||
{
|
||
value /= 10;
|
||
str.sprintf("%.1f", value);
|
||
}
|
||
else if (afterpoint == 2)
|
||
{
|
||
value /= 100;
|
||
str.sprintf("%.2f", value);
|
||
}
|
||
else if (afterpoint == 3)
|
||
{
|
||
value /= 1000;
|
||
str.sprintf("%.3f", value);
|
||
}
|
||
else // if (afterpoint >= 4)
|
||
{
|
||
value /= 10000;
|
||
str.sprintf("%.4f", value);
|
||
}
|
||
return str;
|
||
}
|
||
|
||
void ParameterSetDialog::changeValue(int buttenidx)
|
||
{
|
||
#if(0)
|
||
//等于机器参数或工作参数
|
||
if(((m_paraType & PARA_TYPE_MACH) == PARA_TYPE_MACH) ||
|
||
((m_paraType & PARA_TYPE_WORK) == PARA_TYPE_WORK))
|
||
{
|
||
if(g_emUser != repair)//权限不够先登录
|
||
{
|
||
emit siUserLogin(repair);
|
||
if(g_emUser != repair)//发送登录信号后,权限如果还没改变就返回
|
||
return;
|
||
}
|
||
}
|
||
#endif
|
||
|
||
QString split1 = ":";
|
||
QString split2 = ";";
|
||
|
||
if (buttenidx < 0 || buttenidx >= m_itemPerPage)
|
||
{
|
||
return ;
|
||
}
|
||
|
||
int itemidx;
|
||
int selIdx = 0;
|
||
if(m_paraType == PARA_TYPE_ROOT)//等于超级用户界面
|
||
{
|
||
itemidx = (m_rootCurPage-1) * m_itemPerPage;
|
||
}
|
||
else
|
||
{
|
||
itemidx = (m_curPage-1) * m_itemPerPage;
|
||
}
|
||
|
||
itemidx += buttenidx;
|
||
|
||
if (itemidx < m_itemList.size())
|
||
{
|
||
int chgflag = 0;
|
||
s32 newvalue;
|
||
QString newStrValue;
|
||
const ParaItem & item = m_itemList.at(itemidx);
|
||
newvalue = item.value;//等于这个列表现在的值
|
||
newStrValue = item.valueStr;
|
||
|
||
if (item.valueType == PARA_VALUE_TYPE_INT) // 数字型
|
||
{
|
||
int rslt;
|
||
NumerInputDialog ndlg(this);
|
||
ndlg.setTitleStr(item.paraName);
|
||
ndlg.setUnitStr(item.unitStr);
|
||
ndlg.setValueAndRange(item.value, item.minVal, item.maxVal, item.afterPoint);
|
||
rslt = ndlg.exec();
|
||
|
||
if (rslt == 1)//点了确认按钮
|
||
{
|
||
s32 val = ndlg.getValue();
|
||
if (val != newvalue)//更改后的值不等于之前存的值
|
||
{
|
||
chgflag = 1;
|
||
newvalue = val;
|
||
}
|
||
}
|
||
}
|
||
else if (item.valueType == PARA_VALUE_TYPE_SW) // 开关型
|
||
{
|
||
if (newvalue == 0)
|
||
{
|
||
newvalue = 1;
|
||
}
|
||
else
|
||
{
|
||
newvalue = 0;
|
||
}
|
||
chgflag = 1;
|
||
}
|
||
else if (item.valueType == PARA_VALUE_TYPE_LIST)
|
||
{
|
||
QStringList vallist;
|
||
if(item.selList.indexOf(split2) == -1)
|
||
{ //没找到 二级分割
|
||
vallist = item.selList.split(split1, QString::SkipEmptyParts);
|
||
if (vallist.size() > 0)
|
||
{
|
||
selIdx = item.selIdx + 1;
|
||
if (selIdx < 0)
|
||
{
|
||
selIdx = 0;
|
||
}
|
||
if (selIdx >= vallist.size()) // 循环选择
|
||
{
|
||
selIdx = 0;
|
||
}
|
||
chgflag = 1;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
//二级分割 注意 key 是 int val是字符串
|
||
//分清楚 key 并不是 字符串的index 需要区分
|
||
vallist = item.selList.split(split2, QString::SkipEmptyParts);
|
||
if (vallist.size() <= 0)
|
||
{
|
||
return;
|
||
}
|
||
else
|
||
{
|
||
// 使用 qmap 组成key: val
|
||
int miniVal = vallist.first().split(split1, QString::SkipEmptyParts).at(1).toInt();
|
||
int maxVal = vallist.last().split(split1, QString::SkipEmptyParts).at(1).toInt();
|
||
QMap <int,QString> seachDat ;
|
||
|
||
for (int var = 0; var < vallist.size(); ++var)
|
||
{
|
||
QStringList mapDatList = vallist.at(var).split(split1, QString::SkipEmptyParts);
|
||
seachDat.insert(mapDatList.at(1).toInt(),mapDatList.at(0));
|
||
}
|
||
|
||
selIdx = item.selIdx;
|
||
|
||
if(seachDat.contains(selIdx))
|
||
{
|
||
//存在这个key
|
||
|
||
}
|
||
else
|
||
{
|
||
//不存在这个key 用默认值存储
|
||
selIdx = item.defValue;
|
||
}
|
||
|
||
//找到下一个val vallist seach_dat
|
||
|
||
for (int var = 0; var < vallist.size(); ++var)
|
||
{
|
||
if( vallist.at(var).split(split1, QString::SkipEmptyParts).at(1).toInt() == selIdx)
|
||
{
|
||
var++ ;
|
||
if( var >= vallist.size())
|
||
{
|
||
var = 0 ;
|
||
}
|
||
selIdx = vallist.at(var).split(split1, QString::SkipEmptyParts).at(1).toInt();
|
||
break;
|
||
}
|
||
}
|
||
if (selIdx < miniVal)
|
||
{
|
||
selIdx = miniVal;
|
||
}
|
||
if (selIdx > maxVal)
|
||
{
|
||
selIdx = maxVal;
|
||
}
|
||
chgflag = 1;
|
||
}
|
||
}
|
||
}
|
||
else if (item.valueType == PARA_VALUE_TYPE_STRINPUT) // 字符输入型
|
||
{
|
||
PassWordDialog passWordDlg(this);
|
||
QString str("");
|
||
passWordDlg.setTitleStr(tr("Character input"),-1);//字符输入
|
||
passWordDlg.setShowIfVisible(true);
|
||
int rslt = passWordDlg.exec();
|
||
if(rslt == 1)
|
||
{
|
||
str = passWordDlg.getInputStr();
|
||
if (str != item.valueStr)
|
||
{
|
||
chgflag = 1;
|
||
newStrValue = str;
|
||
}
|
||
}
|
||
}
|
||
else if (item.valueType == PARA_VALUE_TYPE_CLICK) // 点击触发型
|
||
{
|
||
s16 fun = item.indexInPara;
|
||
execItemClickEvent(fun);
|
||
return;
|
||
}
|
||
|
||
if (chgflag != 0)
|
||
{
|
||
if(item.valueType == PARA_VALUE_TYPE_LIST)
|
||
{
|
||
m_itemList[itemidx].selIdx = selIdx;
|
||
m_itemList[itemidx].value = selIdx;
|
||
}
|
||
else if(item.valueType == PARA_VALUE_TYPE_STRINPUT)
|
||
{
|
||
m_itemList[itemidx].valueStr = newStrValue;
|
||
}
|
||
else
|
||
{
|
||
m_itemList[itemidx].value = newvalue;//列表里的值等于弹窗输入的值
|
||
}
|
||
// qDebug()<< " newvalue " << newvalue;
|
||
|
||
//等于遍历参数
|
||
if((m_paraType & PARA_TYPE_ROOTTRAVERSE) == PARA_TYPE_ROOTTRAVERSE)
|
||
{
|
||
//点击节点类型的时候,显示机头个数
|
||
m_itemList[3].paraName = tr("Numbers of heads");//机头个数
|
||
|
||
if(m_itemList[1].value == 2)//全部遍历
|
||
{
|
||
m_itemList[1].value = m_mcParaValues.buf[0];//遍历次数改为机头个数
|
||
m_itemList[2].value = 1;//机头号置为1
|
||
m_itemList[2].readonly = 1;//机头号置为可读
|
||
}
|
||
else if(m_itemList[1].value == 1)//单独遍历
|
||
{
|
||
m_itemList[2].readonly = 0;//机头号置为可设置
|
||
}
|
||
}
|
||
|
||
refreshUi();//在这个函数里刷新
|
||
}
|
||
}
|
||
}
|
||
|
||
//刷新参数值
|
||
void ParameterSetDialog::refreshValue()
|
||
{
|
||
m_mcParaValues = m_mcParaValues;
|
||
m_wkParaValues = m_wkParaValues;
|
||
|
||
for (int i = 0; i < m_itemList.size(); i++)
|
||
{
|
||
int type = m_itemList[i].paraType;
|
||
int idx = m_itemList.at(i).indexInPara;
|
||
int bitInWord = m_itemList[i].bitInWord;
|
||
s32 mcTempValue = m_mcParaValues.buf[idx];
|
||
s32 wkTempValue = m_wkParaValues.buf[idx];
|
||
|
||
s32 headTempValue = m_headParaValues.paraBuf[idx];
|
||
|
||
if (idx < PARA_NUM)
|
||
{
|
||
if (type == PARA_TYPE_MACH)
|
||
{
|
||
// ljs++
|
||
if (bitInWord == 0)
|
||
{
|
||
m_itemList[i].value = mcTempValue;//列表里的值,变成主控里的值
|
||
if(m_itemList[i].valueType == PARA_VALUE_TYPE_LIST)
|
||
{
|
||
m_itemList[i].selIdx = mcTempValue;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
u32 bitval = 0x01;
|
||
bitval <<= (bitInWord - 1);
|
||
if ((mcTempValue & bitval) == 0)
|
||
{
|
||
m_itemList[i].selIdx = 0;
|
||
m_itemList[i].value = 0;
|
||
}
|
||
else
|
||
{
|
||
m_itemList[i].selIdx = 1;
|
||
m_itemList[i].value = 1;
|
||
}
|
||
}
|
||
}
|
||
else if (type == PARA_TYPE_WORK)
|
||
{
|
||
// ljs++
|
||
if (bitInWord == 0)
|
||
{
|
||
m_itemList[i].value = wkTempValue;
|
||
if(m_itemList[i].valueType == PARA_VALUE_TYPE_LIST)
|
||
{
|
||
m_itemList[i].selIdx = wkTempValue;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
u32 bitval = 0x01;
|
||
bitval <<= (bitInWord - 1);
|
||
if ((wkTempValue & bitval) == 0)
|
||
{
|
||
m_itemList[i].selIdx = 0;
|
||
m_itemList[i].value = 0;
|
||
}
|
||
else
|
||
{
|
||
m_itemList[i].selIdx = 1;
|
||
m_itemList[i].value = 1;
|
||
}
|
||
}
|
||
}
|
||
else if (type == PARA_TYPE_HEADPARAMETER)
|
||
{
|
||
if (bitInWord == 0)
|
||
{
|
||
m_itemList[i].value = headTempValue;
|
||
if(m_itemList[i].valueType == PARA_VALUE_TYPE_LIST)
|
||
{
|
||
m_itemList[i].selIdx = headTempValue;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
u32 bitval = 0x01;
|
||
bitval <<= (bitInWord - 1);
|
||
if ((headTempValue & bitval) == 0)
|
||
{
|
||
m_itemList[i].selIdx = 0;
|
||
m_itemList[i].value = 0;
|
||
}
|
||
else
|
||
{
|
||
m_itemList[i].selIdx = 1;
|
||
m_itemList[i].value = 1;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
//收到下位机参数改变信号的槽
|
||
void ParameterSetDialog::paraChange(int type, int id)
|
||
{
|
||
//点了主板的按钮后,现在这个g_pMachine就是对应主板的
|
||
if (type == SEW_MCPARA_MACH)
|
||
{
|
||
if (id == 0)
|
||
{ //得到当前主板的参数
|
||
memcpy(&m_mcParaValues, &g_pMachine->getMcPara(), sizeof(ParaStruct));
|
||
|
||
m_setedFlag |= 0x01;//当前的主板 收到参数包 的标志改变
|
||
}
|
||
}
|
||
else if (type == SEW_MCPARA_WORK)
|
||
{
|
||
if (id == 0)
|
||
{
|
||
memcpy(&m_wkParaValues, &g_pMachine->getWkPara(), sizeof(ParaStruct));
|
||
m_setedFlag |= 0x02;
|
||
}
|
||
}
|
||
|
||
m_mcParaValues = m_mcParaValues;
|
||
m_wkParaValues = m_wkParaValues;
|
||
|
||
//等于机器参数或工作参数
|
||
if(((m_paraType & PARA_TYPE_MACH) == PARA_TYPE_MACH) ||
|
||
((m_paraType & PARA_TYPE_WORK) == PARA_TYPE_WORK))
|
||
{
|
||
if (m_setedFlag == 0x03)// = 0x03就是机器参数和主控参数都读过
|
||
{
|
||
if (m_itemList.size() > 0)//参数列表
|
||
{
|
||
ui->buttonOk->setEnabled(true);//如果从下位机得到了数据包,说明与下位机建立了联系。可以点击确认按钮
|
||
}
|
||
refreshValue();
|
||
refreshUi();
|
||
}
|
||
}
|
||
}
|
||
|
||
//刷新遍历参数信息
|
||
void ParameterSetDialog::refreshSensorPara(int min, int max, int num, ParaItem &item, u32 traverseState)
|
||
{
|
||
item.paraName.clear();
|
||
int EMBNum = m_mcParaValues.buf[HEADNUMBERIDX];//机头个数
|
||
//冲孔的PUNCH还没用的
|
||
|
||
QString sensorN = "-N";//未遍历成功
|
||
QString sensorY = "-Y";//已遍历成功
|
||
|
||
if(max > num)//如果最大值15大于机头数,最大值减1
|
||
{
|
||
max = num - 1;
|
||
}
|
||
//traverseState:遍历状态(每一位表示机头的状态)
|
||
//num:机头个数
|
||
|
||
if(EMBNum == 0)
|
||
{
|
||
return;
|
||
}
|
||
else
|
||
{
|
||
int maxBitEMB = EMBNum-1;
|
||
for(int i = min; i <= maxBitEMB; i++)//i等于最小值0 循环32次,一个u32有32位
|
||
{
|
||
item.paraName += QString::number(i+1);//1-Y 2-Y 3-Y 4-Y
|
||
if(traverseState>>i & 1)//判读每位是0还是1
|
||
{
|
||
item.paraName += sensorY;
|
||
}
|
||
else
|
||
{
|
||
item.paraName += sensorN;
|
||
}
|
||
item.paraName += " ";//添加空格
|
||
refreshUi();
|
||
}
|
||
}
|
||
}
|
||
|
||
void ParameterSetDialog::saveParas(int idx)
|
||
{
|
||
qDebug()<<"step 1";
|
||
if (m_setedFlag == 0x03 &&
|
||
(m_paraType == (PARA_TYPE_MACH | PARA_TYPE_WORK) ||
|
||
m_paraType == PARA_TYPE_MACH || m_paraType == PARA_TYPE_WORK))
|
||
{
|
||
int size = m_itemList.size();
|
||
if (idx < 0)
|
||
{
|
||
int i;
|
||
for (i = 0; i < size; i++)
|
||
{
|
||
int id = m_itemList.at(i).indexInPara;
|
||
int type = m_itemList.at(i).paraType;
|
||
int bitInWord = m_itemList.at(i).bitInWord;
|
||
int value = m_itemList.at(i).value;
|
||
if (id < PARA_NUM && type == PARA_TYPE_MACH)
|
||
{
|
||
if (bitInWord == 0) // ljs++
|
||
{
|
||
m_mcParaValues.buf[id] = m_itemList.at(i).value;
|
||
}
|
||
else
|
||
{
|
||
u32 bitval = 0x01;
|
||
bitval <<= (bitInWord - 1);
|
||
if (value == 0)
|
||
{
|
||
m_mcParaValues.buf[id] &= ~bitval;
|
||
}
|
||
else
|
||
{
|
||
m_mcParaValues.buf[id] |= bitval;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
qDebug()<<"step 2";
|
||
#if(0)
|
||
for(int i = 0; i < MACHINE_NUMBER; i++)
|
||
{
|
||
g_pMachine[i]->setMcPara(&m_mcParaValues);
|
||
}
|
||
#endif
|
||
g_pMachine->setMcPara(&m_mcParaValues);
|
||
qDebug()<<"step 3";
|
||
|
||
for (i = 0; i < size; i++)
|
||
{
|
||
int id = m_itemList.at(i).indexInPara;
|
||
int type = m_itemList.at(i).paraType;
|
||
int bitInWord = m_itemList.at(i).bitInWord;
|
||
int value = m_itemList.at(i).value;
|
||
if (id < PARA_NUM && type == PARA_TYPE_WORK)
|
||
{
|
||
if (bitInWord == 0) // ljs++
|
||
{
|
||
m_wkParaValues.buf[id] = m_itemList.at(i).value;
|
||
}
|
||
else
|
||
{
|
||
u32 bitval = 0x01;
|
||
bitval <<= (bitInWord - 1);
|
||
if (value == 0)
|
||
{
|
||
m_wkParaValues.buf[id] &= ~bitval;
|
||
}
|
||
else
|
||
{
|
||
m_wkParaValues.buf[id] |= bitval;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
qDebug()<<"step 4";
|
||
#if(0)
|
||
for(int i = 0; i < MACHINE_NUMBER; i++)
|
||
{
|
||
g_pMachine[i]->setWkPara(&m_wkParaValues);
|
||
}
|
||
#endif
|
||
g_pMachine->setWkPara(&m_wkParaValues);
|
||
qDebug()<<"step 5";
|
||
}
|
||
else if (idx < size)
|
||
{
|
||
int id = m_itemList.at(idx).indexInPara;
|
||
int type = m_itemList.at(idx).paraType;
|
||
int value = m_itemList.at(idx).value;
|
||
int bitInWord = m_itemList.at(idx).bitInWord; // ljs++
|
||
if (id < PARA_NUM && type == PARA_TYPE_MACH)
|
||
{
|
||
if (bitInWord == 0)
|
||
{
|
||
m_mcParaValues.buf[id] = value;
|
||
}
|
||
else
|
||
{
|
||
u32 bitval = 0x01;
|
||
bitval <<= (bitInWord - 1);
|
||
if (value == 0)
|
||
{
|
||
m_mcParaValues.buf[id] &= ~bitval;
|
||
}
|
||
else
|
||
{
|
||
m_mcParaValues.buf[id] |= bitval;
|
||
}
|
||
value = m_mcParaValues.buf[id];
|
||
}
|
||
|
||
qDebug()<<"step 6";
|
||
#if(0)
|
||
for(int i = 0; i < MACHINE_NUMBER; i++)
|
||
{
|
||
g_pMachine[i]->setAMcPara(id+1, value);
|
||
}
|
||
#endif
|
||
g_pMachine->setAMcPara(id+1, value);
|
||
qDebug()<<"step 7";
|
||
}
|
||
else if (id < PARA_NUM && type == PARA_TYPE_WORK)
|
||
{
|
||
if (bitInWord == 0)
|
||
{
|
||
m_wkParaValues.buf[id] = value;
|
||
}
|
||
else
|
||
{
|
||
u32 bitval = 0x01;
|
||
bitval <<= (bitInWord - 1);
|
||
if (value == 0)
|
||
{
|
||
m_wkParaValues.buf[id] &= ~bitval;
|
||
}
|
||
else
|
||
{
|
||
m_wkParaValues.buf[id] |= bitval;
|
||
}
|
||
value = m_wkParaValues.buf[id];
|
||
}
|
||
|
||
qDebug()<<"step 8";
|
||
#if(0)
|
||
for(int i = 0; i < MACHINE_NUMBER; i++)
|
||
{
|
||
g_pMachine[i]->setAWkPara(id+1, value);
|
||
}
|
||
#endif
|
||
g_pMachine->setAWkPara(id+1, value);
|
||
qDebug()<<"step 9";
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
//执行点击触发型参数的触发事件
|
||
void ParameterSetDialog::execItemClickEvent(s16 fun)
|
||
{
|
||
g_pMachine->getParasFromMachine();//读取参数
|
||
|
||
switch (fun)
|
||
{
|
||
case ROOT_HMICONFIGURATION://进入界面配置
|
||
setMainTitle(tr("HMI Configuration"));
|
||
setSubTitle(tr("Root > HMI Configuration"));
|
||
//得到界面配置列表
|
||
if(g_emDebugMode == nodebugMode)
|
||
{
|
||
if(g_emUser == factory)
|
||
{
|
||
setItemList(factory,PARA_TYPE_HMICONFIGURATION);//最高权限
|
||
}
|
||
else if(g_emUser == root)
|
||
{
|
||
setItemList(root,PARA_TYPE_HMICONFIGURATION);//最高权限
|
||
}
|
||
}
|
||
else
|
||
{
|
||
setItemList(root,PARA_TYPE_HMICONFIGURATION);//最高权限
|
||
}
|
||
|
||
//设置参数值
|
||
setItemValue(ROOT_RESOLUTION,g_emResolut); //分辨率
|
||
setItemValue(SET_CONNECTMODE,g_pSettings->readFromIniFile("HMI/connectMode").toInt());
|
||
setItemValue(ROOT_MACTYPE,g_emMacType); //机器类型
|
||
setItemValue(ROOT_PRODUCTTYPE,g_emProductType); //产品类型
|
||
setItemValue(ROOT_WATERMARKSET,g_pSettings->readFromIniFile("HMI/waterMark").toInt());
|
||
setItemValue(ROOT_HIGH_SPEED_SWITCHING,g_pSettings->readFromIniFile("AUFUS/highSpeed").toInt());
|
||
setItemValue(ROOT_WIFI,g_pSettings->readFromIniFile("HMI/wifi").toInt());
|
||
setItemValue(ROOT_PARASORTSET,g_pSettings->readFromIniFile("HMI/paraSort").toInt());
|
||
|
||
refreshUi();
|
||
break;
|
||
|
||
case ROOT_IOTCONFIGURATION: //物联网配置
|
||
setMainTitle(tr("IOT Configuration"));
|
||
setSubTitle(tr("Root > IOT Configuration"));
|
||
// 得到界面配置列表
|
||
setItemList(factory,PARA_TYPE_IOTCONFIGURATION);//最高权限
|
||
//设置参数值
|
||
setItemValue(ROOT_GATEWAYCONNECTIONMETHOD,g_pSettings->readFromIniFile("IOT/gatewayConnectMode").toInt()); //网关连接
|
||
setItemValue(ROOT_RACKNUMBERINPUT,g_pSettings->readFromIniFile("IOT/rackNumber").toInt());//机架号
|
||
setItemStr(ROOT_DELIVERYTIME,g_pSettings->readFromIniFile("IOT/deliveryTime").toString()); //工厂预计交货时间
|
||
setItemValue(ROOT_DEBUGPROGRESS,g_pSettings->readFromIniFile("IOT/debugProgress").toInt());//调试进度
|
||
|
||
refreshUi();
|
||
break;
|
||
|
||
case ROOT_FRAMEANGLESETTING: //动框角度设置
|
||
emit siFrameAngleSet();
|
||
break;
|
||
|
||
case ROOT_NETWORKSETTINGS: //网络设置
|
||
setMainTitle(tr("Network Settings"));
|
||
setSubTitle(tr("IOT Configuration > Network Settings"));
|
||
//得到界面配置列表
|
||
//setItemList(factory,PARA_TYPE_NETWORKSETTINGS);
|
||
|
||
//设置参数值
|
||
//setItemValue(ROOT_SERVERIPSETTINGS,g_pSettings->readFromIniFile("server/ip").toInt()); //服务器ip设置
|
||
//setItemValue(ROOT_SERVERPORTSETTINGS);
|
||
|
||
setGatewayNetworkItemList(PARA_TYPE_NETWORKSETTINGS);
|
||
|
||
refreshUi();
|
||
break;
|
||
|
||
case ROOT_MACHINEPARA://加载机器参数
|
||
//也用此窗体加载参数
|
||
setMainTitle(tr("Machine parameters"));
|
||
setSubTitle(tr("Root > Machine parameters"));
|
||
//机器参数
|
||
if(g_emUser == factory)
|
||
{
|
||
setItemList(factory,PARA_TYPE_MACH);//二级权限 262574
|
||
}
|
||
else
|
||
{
|
||
setItemList(root,PARA_TYPE_MACH);//最高权限 951103
|
||
}
|
||
|
||
if(m_setedFlag== 0x03)//如果有从下位机得到过参数包
|
||
{
|
||
refreshValue();//不管连没连上,都显示上次保存的值
|
||
}
|
||
if(g_pMachine->isConnected() == 3)
|
||
{
|
||
if(m_setedFlag != 0x03)//界面上显示已就绪 但是没有从下位机得到过参数包(刚上电时)
|
||
{
|
||
PromptDialog dlg(this);
|
||
dlg.initDialog(PromptDialog::BTN_OK);
|
||
dlg.setTitleStr(tr("Network error"));
|
||
dlg.setContentStr(tr("read parameter..."));//读取参数中...
|
||
dlg.exec();
|
||
}
|
||
}
|
||
else
|
||
{
|
||
#ifdef Q_OS_LINUX//为了方便windows下查看参数所以加了linux编译条件
|
||
PromptDialog dlg(this);
|
||
dlg.initDialog(PromptDialog::BTN_OK);
|
||
dlg.setTitleStr(tr("Network error"));
|
||
dlg.setContentStr(tr("No connection"));
|
||
dlg.exec();
|
||
done(0);
|
||
#endif
|
||
}
|
||
refreshUi();
|
||
break;
|
||
|
||
case ROOT_WORKPARA://加载工作参数
|
||
//也用此窗体加载参数
|
||
setMainTitle(tr("Work parameters"));
|
||
setSubTitle(tr("Root > Work parameters"));
|
||
//工作参数
|
||
if(g_emUser == factory)
|
||
{
|
||
setItemList(factory,PARA_TYPE_WORK);//二级权限 262574
|
||
}
|
||
else
|
||
{
|
||
setItemList(root,PARA_TYPE_WORK);//最高权限 951103
|
||
}
|
||
|
||
if(m_setedFlag == 0x03)//如果有从下位机得到过参数包
|
||
{
|
||
refreshValue();//不管连没连上,都显示上次保存的值
|
||
}
|
||
if(g_pMachine->isConnected() == 3)
|
||
{
|
||
if(m_setedFlag != 0x03)//界面上显示已就绪 但是没有从下位机得到过参数包(刚上电时)
|
||
{
|
||
PromptDialog dlg(this);
|
||
dlg.initDialog(PromptDialog::BTN_OK);
|
||
dlg.setTitleStr(tr("Network error"));
|
||
dlg.setContentStr(tr("read parameter..."));//读取参数中...
|
||
dlg.exec();
|
||
}
|
||
}
|
||
else
|
||
{
|
||
#ifdef Q_OS_LINUX//为了方便windows下查看参数所以加了linux编译条件
|
||
PromptDialog dlg(this);
|
||
dlg.initDialog(PromptDialog::BTN_OK);
|
||
dlg.setTitleStr(tr("Network error"));
|
||
dlg.setContentStr(tr("No connection"));
|
||
dlg.exec();
|
||
done(0);
|
||
#endif
|
||
}
|
||
refreshUi();
|
||
break;
|
||
|
||
case ROOT_PATTERNPARAMETERS://超级用户花样参数
|
||
//也用此窗体加载参数
|
||
setMainTitle(tr("Pattern parameters"));
|
||
setSubTitle(tr("Root > Pattern parameters"));
|
||
//锁头测试参数
|
||
setItemList(factory,PARA_TYPE_ROOT_PATTERN);//最高权限
|
||
setItemValue(SET_LOCKNEEDLESNUM,g_pSettings->readFromIniFile("PatternPara/lockNeedlesNum").toInt());// 锁针次数
|
||
setItemValue(SET_LOCKNEEDLESSTEPNUM,g_pSettings->readFromIniFile("PatternPara/lockNeedlesStepNum").toInt());// 锁针步数
|
||
setItemValue(SET_LOCKNEEDLESSTEPLENTH,g_pSettings->readFromIniFile("PatternPara/lockNeedlesStepLength").toInt());// 锁针针步长度
|
||
refreshUi();
|
||
break;
|
||
|
||
case ROOT_TRAVERSESET://进入遍历功能设置
|
||
//也用此窗体加载参数
|
||
setMainTitle(tr("Traverse settings"));
|
||
setSubTitle(tr("Root > Traverse settings"));
|
||
//遍历设置参数
|
||
setItemList(factory,PARA_TYPE_ROOTTRAVERSE);//最高权限
|
||
refreshUi();
|
||
break;
|
||
|
||
case ROOT_AUTOSETSOFTLIMIT://自动定软限位
|
||
emit siAutoSetSoftLimit();
|
||
break;
|
||
|
||
case ROOT_SPINDlLEGEARRATIO://主轴齿轮比测试
|
||
emit siSpindleTest();
|
||
break;
|
||
|
||
case ROOT_HMIDECRYPT://界面解密
|
||
emit siHMIDecrypt(m_networkCardID);
|
||
break;
|
||
|
||
case ROOT_TROKECORRECTION://行程矫正
|
||
emit siTrokeCorrect();
|
||
break;
|
||
|
||
case ROOT_SKIPEFFECT://跳针生效
|
||
emit siSkipEffect();
|
||
break;
|
||
|
||
case ROOT_CLEARPATTERN://花样总清
|
||
emit siPatternClear();
|
||
break;
|
||
|
||
case ROOT_DELETEINI://删除配置文件
|
||
emit siDeleteIni();//删除执行目录下的config
|
||
break;
|
||
|
||
case ROOT_IMPORTCSV://导入CSV文件
|
||
emit siImportCSV();
|
||
break;
|
||
|
||
case ROOT_DELETECSV://删除CSV文件
|
||
emit siDeleteCSV();
|
||
break;
|
||
|
||
case ROOT_RESETCSV://重置安装调试进度
|
||
emit siResetCSV();
|
||
break;
|
||
|
||
case ROOT_DEBUGMODE://界面进入调试模式
|
||
emit siDebugMode();
|
||
break;
|
||
|
||
case ROOT_FRAMEIMPORTPARA://动框参数导入
|
||
emit siFrameParaImport();
|
||
break;
|
||
|
||
case ROOT_FRAMEEXPORTPARA://动框参数导出
|
||
emit siFrameParaExport();
|
||
break;
|
||
|
||
case PSE_SOFTWAREPARA_IMPORTPARA://参数导入
|
||
emit siParameterImport();
|
||
break;
|
||
|
||
case PSE_SOFTWAREPARA_EXPORTPARA://参数导出
|
||
emit siParameterExport();
|
||
break;
|
||
|
||
case ROOT_CLEARPATTERNFCG_FILEID://删除花样fcg文件影响fileid的数据
|
||
emit siPatternFcgClear();
|
||
break;
|
||
|
||
case PSE_SOFTWAREPARA_HMIUPDATE://界面升级
|
||
emit siHMIUpgrade();
|
||
break;
|
||
|
||
case PSE_SOFTWAREPARA_MCUPDATE://主控升级
|
||
emit siMCUpgrade();
|
||
break;
|
||
case PSE_SOFTWAREPARA_EXIT://退出程序
|
||
emit siExit();
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
|
||
void ParameterSetDialog::initData()
|
||
{
|
||
m_setedFlag = 0;
|
||
m_curPage = 0;
|
||
m_rootCurPage = 0;
|
||
m_paraType = 0; //参数类型(机器参数、工作参数、花样参数等)
|
||
m_paraTypeSort = 0; //参数类型分类型(动作参数、位置参数、亮片参数等)
|
||
m_itemList.clear();
|
||
m_allItemList.clear();
|
||
|
||
memset(m_mcParaValues.buf, 0, sizeof(ParaStruct));
|
||
memset(m_wkParaValues.buf, 0, sizeof(ParaStruct));
|
||
|
||
memset(m_headParaValues.paraBuf, 0, sizeof(m_headParaValues.paraBuf));
|
||
m_filePath.clear();
|
||
}
|
||
|
||
//设置类型图标
|
||
void ParameterSetDialog::setTypeLogo(QString tStyle)
|
||
{
|
||
ui->buttonTypeLogo->setUnPreBtnLogo(tStyle);
|
||
}
|
||
|
||
//设置主title
|
||
void ParameterSetDialog::setMainTitle(QString str)
|
||
{
|
||
ui->labelMainTitle->setText(str);
|
||
}
|
||
|
||
//设置副title
|
||
void ParameterSetDialog::setSubTitle(QString str)
|
||
{
|
||
ui->labelSubTitle->setText(str);
|
||
}
|
||
|
||
//(参数权限、参数类型、参数种类)得到相应参数类型列表
|
||
// sort参数分类的小分类
|
||
void ParameterSetDialog::setItemList(int authority,int64_t type,int64_t sort)
|
||
{
|
||
m_paraType = type;
|
||
m_paraTypeSort = sort;
|
||
m_itemList.clear();//最后筛选出的列表
|
||
|
||
//参数筛选
|
||
for(int i = 0; i < m_allItemList.size(); i++)
|
||
{
|
||
int aType= m_allItemList.at(i).paraType;
|
||
int aAuthority = m_allItemList.at(i).authority;
|
||
|
||
if((aType & type) == aType)
|
||
{
|
||
int aSort= m_allItemList.at(i).paraTypeSort;
|
||
if(sort == -1)//等于-1加载全部
|
||
{
|
||
//外边传进来的权限 等于 factory
|
||
if(authority == factory)//加载除了root所有的
|
||
{
|
||
if(aAuthority != root)//如果当前的权限不是root,就是 factory和 operate repair的参数
|
||
{
|
||
m_itemList.append(m_allItemList.at(i));
|
||
}
|
||
}
|
||
else if(authority == root)
|
||
{
|
||
m_itemList.append(m_allItemList.at(i));
|
||
}
|
||
else
|
||
{ //当前列表里的权限 等于 传进来的权限
|
||
if(aAuthority == authority)//参数权限
|
||
{
|
||
m_itemList.append(m_allItemList.at(i));
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if((aSort & sort)== sort)//参数类型
|
||
{
|
||
if(authority == factory)//最高参数权限
|
||
{
|
||
if(aAuthority != root)
|
||
{
|
||
m_itemList.append(m_allItemList.at(i));
|
||
}
|
||
}
|
||
else if(authority == root)
|
||
{
|
||
m_itemList.append(m_allItemList.at(i));
|
||
}
|
||
else
|
||
{
|
||
if(aAuthority == authority)//参数权限
|
||
{
|
||
m_itemList.append(m_allItemList.at(i));
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
void ParameterSetDialog::refreshProductType() // 每一个机型可以选择的其他模块
|
||
{
|
||
int mcType = 0;
|
||
for(int i = 0; i < m_itemList.size(); i++)
|
||
{
|
||
if(m_itemList[i].indexInPara == ROOT_MACTYPE)
|
||
{
|
||
mcType = m_itemList[i].selIdx;
|
||
break;
|
||
}
|
||
}
|
||
|
||
for(int i = 0; i < m_itemList.size(); i++)
|
||
{
|
||
int index = m_itemList.at(i).indexInPara;
|
||
|
||
if(index == ROOT_PRODUCTTYPE)//等于产品类型
|
||
{
|
||
switch (mcType) //机器类型
|
||
{
|
||
case MACHINE_PUNCH://冲孔机
|
||
if(m_itemList[i].selIdx > PRODUCT_PUNCH_ROTARY || m_itemList[i].selIdx < PRODUCT_PUNCH_TWOHEAD)
|
||
{
|
||
g_emProductType = PRODUCT_PUNCH_TWOHEAD;//冲孔机,默认双头
|
||
m_itemList[i].value = g_emProductType;
|
||
m_itemList[i].selIdx = g_emProductType;
|
||
}
|
||
m_itemList[i].minVal = PRODUCT_PUNCH_TWOHEAD;//范围从双头—旋转
|
||
m_itemList[i].maxVal = PRODUCT_PUNCH_ROTARY;
|
||
break;
|
||
|
||
case MACHINE_PUNCH_AUTOPOS://定制冲孔机(自动定位冲孔机)
|
||
if(m_itemList[i].selIdx > PRODUCT_PUNCH_ROTARY || m_itemList[i].selIdx < PRODUCT_PUNCH_SINGLEHEAD)
|
||
{
|
||
g_emProductType = PRODUCT_PUNCH_SINGLEHEAD;
|
||
m_itemList[i].value = g_emProductType;
|
||
m_itemList[i].selIdx = g_emProductType;
|
||
}
|
||
m_itemList[i].minVal = PRODUCT_PUNCH_SINGLEHEAD;
|
||
m_itemList[i].maxVal = PRODUCT_PUNCH_ROTARY;
|
||
break;
|
||
|
||
case MACHINE_PUNCH_SEW://冲缝机 //0303 xcy
|
||
if(m_itemList[i].selIdx > PRODUCT_PUNCHSEW_TWOHEAD || m_itemList[i].selIdx < PRODUCT_PUNCHSEW_SINGLEHEAD)
|
||
{
|
||
g_emProductType = PRODUCT_PUNCHSEW_SINGLEHEAD;
|
||
m_itemList[i].value = g_emProductType;
|
||
m_itemList[i].selIdx = g_emProductType;
|
||
}
|
||
m_itemList[i].minVal = PRODUCT_PUNCHSEW_SINGLEHEAD;
|
||
m_itemList[i].maxVal = PRODUCT_PUNCHSEW_TWOHEAD;
|
||
break;
|
||
|
||
default://其他机型
|
||
g_emProductType = PRODUCT_NULL;
|
||
m_itemList[i].minVal = PRODUCT_NULL;
|
||
m_itemList[i].maxVal = PRODUCT_NULL;
|
||
m_itemList[i].value = PRODUCT_NULL;
|
||
m_itemList[i].selIdx = g_emProductType;
|
||
break;
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
//设置网关网络参数(IP和端口)
|
||
void ParameterSetDialog::setGatewayNetworkItemList(int64_t type)
|
||
{
|
||
m_paraType = type;
|
||
m_itemList.clear();
|
||
|
||
QDir apppath(qApp->applicationDirPath());
|
||
QString serverip, localip;
|
||
quint16 serverport, localport;
|
||
//服务器IP及端口设置
|
||
int idx = 0;
|
||
QString configfile;
|
||
configfile = apppath.path() + apppath.separator() + "lotconfig.ini";
|
||
QSettings configIni(configfile, QSettings::IniFormat);
|
||
|
||
serverip = configIni.value("server/ip", QVariant("192.168.16.250")).toString();
|
||
ParaItem slpItem;
|
||
slpItem.indexInPara = idx;
|
||
slpItem.readonly = 0;
|
||
slpItem.valueType = PARA_VALUE_TYPE_STRINPUT;
|
||
slpItem.paraName = tr("Server IP settings"); //服务器IP设置;
|
||
slpItem.valueStr = serverip;
|
||
m_itemList.append(slpItem);
|
||
|
||
serverport = configIni.value("server/port", QVariant(5001)).toInt();
|
||
idx++;
|
||
ParaItem sPortItem;
|
||
sPortItem.indexInPara = idx;
|
||
sPortItem.readonly = 0;
|
||
sPortItem.valueType = PARA_VALUE_TYPE_INT;
|
||
sPortItem.paraName = tr("Server Port settings") ;//服务器端口设置
|
||
sPortItem.value = serverport;
|
||
sPortItem.minVal = 0;
|
||
sPortItem.maxVal = U16_MAX;
|
||
sPortItem.defValue = serverport;
|
||
m_itemList.append(sPortItem);
|
||
|
||
//本地IP设置条目
|
||
localip = configIni.value("local/ip", QVariant("192.168.16.100")).toString();
|
||
idx ++;
|
||
ParaItem lIpItem;
|
||
lIpItem.indexInPara = idx;
|
||
lIpItem.readonly = 0;
|
||
lIpItem.valueType = PARA_VALUE_TYPE_STRINPUT;
|
||
lIpItem.paraName = tr("Local IP settings");//本地IP设置
|
||
lIpItem.valueStr = localip;
|
||
m_itemList.append(lIpItem);
|
||
|
||
localport = configIni.value("local/port", QVariant(5000)).toInt();
|
||
idx++;
|
||
ParaItem lPortItem;
|
||
lPortItem.indexInPara = idx;
|
||
lPortItem.readonly = 0;
|
||
lPortItem.valueType = PARA_VALUE_TYPE_INT;
|
||
lPortItem.paraName = tr("Local Port settings");//本口端口设置
|
||
lPortItem.value = localport;
|
||
lPortItem.minVal = 0;
|
||
lPortItem.maxVal = U16_MAX;
|
||
lPortItem.defValue = localport;
|
||
m_itemList.append(lPortItem);
|
||
}
|
||
|
||
//设置网络参数(IP和端口)
|
||
void ParameterSetDialog::setNetworkItemList(int64_t type)
|
||
{
|
||
m_paraType = type;
|
||
m_itemList.clear();
|
||
|
||
QDir apppath(qApp->applicationDirPath());
|
||
QString serverip,localip;
|
||
quint16 serverport,localport;
|
||
//服务器IP及端口设置条目(包括网关)
|
||
int idx = 0;
|
||
QString configfile;
|
||
|
||
configfile = apppath.path() + apppath.separator() + "mcconfig.ini";//读取的配置文件名字
|
||
QSettings configIni(configfile, QSettings::IniFormat);
|
||
serverip = configIni.value("server/ip", QVariant("192.168.16.253")).toString();//把配置文件里的号转换成字符串
|
||
localip = configIni.value("local/ip", QVariant("192.168.16.100")).toString();
|
||
|
||
ParaItem sIpItem;
|
||
sIpItem.indexInPara = idx;
|
||
sIpItem.readonly = 0;
|
||
sIpItem.valueType = PARA_VALUE_TYPE_STRINPUT;
|
||
sIpItem.paraName = tr("Board IP settings");//主板IP设置
|
||
sIpItem.valueStr = serverip;//列表里的值就显示从配置文件读上来的
|
||
m_itemList.append(sIpItem);//把这行加到列表里
|
||
|
||
serverport = configIni.value("server/port", QVariant(5000)).toInt();
|
||
idx++;
|
||
ParaItem sPortItem;
|
||
sPortItem.indexInPara = idx;
|
||
sPortItem.readonly = 0;
|
||
sPortItem.valueType = PARA_VALUE_TYPE_INT;
|
||
sPortItem.paraName = tr("Board port settings");//主板端口设置
|
||
sPortItem.value = serverport;
|
||
sPortItem.minVal = 0;
|
||
sPortItem.maxVal = U16_MAX;
|
||
sPortItem.defValue = serverport;
|
||
m_itemList.append(sPortItem);
|
||
|
||
idx++;
|
||
|
||
//本地IP设置条目
|
||
ParaItem lIpItem;
|
||
lIpItem.indexInPara = idx;
|
||
lIpItem.readonly = 0;
|
||
lIpItem.valueType = PARA_VALUE_TYPE_STRINPUT;
|
||
lIpItem.paraName = tr("Local IP settings");//本地IP设置
|
||
lIpItem.valueStr = localip;
|
||
m_itemList.append(lIpItem);
|
||
idx++;
|
||
|
||
//本地端口设置条目
|
||
localport = configIni.value("local/port", QVariant(5000)).toInt();
|
||
|
||
ParaItem lPortItem;
|
||
lPortItem.indexInPara = idx;
|
||
lPortItem.readonly = 0;
|
||
lPortItem.valueType = PARA_VALUE_TYPE_INT;
|
||
lPortItem.paraName = tr("Local port settings");//本地端口设置
|
||
lPortItem.value = localport;
|
||
lPortItem.minVal = 0;
|
||
lPortItem.maxVal = U16_MAX;
|
||
lPortItem.defValue = 5000;
|
||
m_itemList.append(lPortItem);
|
||
}
|
||
|
||
void ParameterSetDialog::setCurPage(int idx)
|
||
{
|
||
if(m_paraType == PARA_TYPE_ROOT)//等于超级用户界面
|
||
{
|
||
m_rootCurPage = idx;
|
||
}
|
||
else
|
||
{
|
||
m_curPage = idx;
|
||
}
|
||
}
|
||
|
||
//设置参数值
|
||
void ParameterSetDialog::setItemValue(int idx,int value)
|
||
{
|
||
for(int i = 0; i < m_itemList.size(); i++)
|
||
{
|
||
int index = m_itemList.at(i).indexInPara;
|
||
int min = m_itemList.at(i).minVal;
|
||
int max = m_itemList.at(i).maxVal;
|
||
|
||
if(idx == index)//参数枚举
|
||
{
|
||
if(value > max || value < min) //
|
||
{
|
||
value = m_itemList.at(i).defValue;
|
||
}
|
||
m_itemList[i].selIdx = value;
|
||
m_itemList[i].value = value;
|
||
}
|
||
}
|
||
}
|
||
|
||
void ParameterSetDialog::setItemStr(int idx, QString str)
|
||
{
|
||
for(int i = 0; i < m_itemList.size(); i++)
|
||
{
|
||
int index = m_itemList.at(i).indexInPara;
|
||
|
||
if(idx == index)
|
||
{
|
||
m_itemList[i].valueStr = str;
|
||
}
|
||
}
|
||
}
|
||
|
||
int ParameterSetDialog::getItemValue(int idx)
|
||
{
|
||
int value = 0;
|
||
for(int i = 0; i < m_itemList.size(); i++)
|
||
{
|
||
if(idx == m_itemList.at(i).indexInPara)
|
||
{
|
||
value = m_itemList.at(i).value;
|
||
}
|
||
}
|
||
return value;
|
||
}
|
||
|
||
int ParameterSetDialog::exec()
|
||
{
|
||
//等于机器参数或工作参数
|
||
if(((m_paraType & PARA_TYPE_MACH) == PARA_TYPE_MACH) ||
|
||
((m_paraType & PARA_TYPE_WORK) == PARA_TYPE_WORK))
|
||
{
|
||
if (g_pMachine != NULL)
|
||
{
|
||
qDebug("send GetParasFromMachine");
|
||
|
||
if(m_setedFlag == 0x03)//如果有从下位机得到过参数包
|
||
{
|
||
//这个函数会把从主控得到的参数保存在item.value里
|
||
refreshValue();//不管连没连上,都显示上次保存的值
|
||
}
|
||
|
||
if(g_pMachine->isConnected() == 3)//这个isConnected检测机制是5秒
|
||
{
|
||
if(((m_paraType & PARA_TYPE_MACH) == PARA_TYPE_MACH) ||
|
||
((m_paraType & PARA_TYPE_WORK) == PARA_TYPE_WORK))
|
||
{
|
||
g_pMachine->getParasFromMachine();//如果连上了主板,发送一个读取参数信息的包
|
||
}
|
||
if(m_setedFlag != 0x03)//界面上显示已就绪 但是没有从下位机得到过参数包(刚上电时)
|
||
{
|
||
PromptDialog dlg(this);
|
||
dlg.initDialog(PromptDialog::BTN_OK);
|
||
dlg.setTitleStr(tr("Network error"));
|
||
dlg.setContentStr(tr("read parameter..."));//读取参数中...
|
||
dlg.exec();
|
||
return -1;
|
||
}
|
||
}
|
||
else//如果没连接上
|
||
{
|
||
#ifdef Q_OS_LINUX//为了方便windows下查看参数所以加了linux编译条件
|
||
PromptDialog dlg(this);
|
||
dlg.initDialog(PromptDialog::BTN_OK);
|
||
dlg.setTitleStr(tr("Network error"));
|
||
dlg.setContentStr(tr("No connection"));
|
||
dlg.exec();
|
||
return -1;
|
||
//不进行下边的函数
|
||
#endif
|
||
}
|
||
}
|
||
}
|
||
//刷新这个函数,就显示item.value的值
|
||
//ui->buttonOk->setEnabled(false);
|
||
refreshUi();//没连接主板的时候就先进到这个函数,就会显示的默认参数
|
||
return QDialog::exec();
|
||
}
|
||
|
||
int ParameterSetDialog::addParaItem(const QList<ParaItem> &itemList)
|
||
{
|
||
int size = m_allItemList.size();
|
||
m_allItemList.append(itemList);
|
||
return size;
|
||
}
|
||
|
||
int ParameterSetDialog::addParaItem(const ParaItem &item)
|
||
{
|
||
int size = m_allItemList.size();
|
||
m_allItemList.append(item);
|
||
return size;
|
||
}
|
||
//设置机器状态(用于刷新遍历状态)
|
||
//void ParameterSetDialog::setMcStates(MCStatus mcStatus)
|
||
//{
|
||
// memset((char*)&m_mcStatus,0,sizeof(MCStatus));
|
||
// memcpy((char*)&m_mcStatus,(char*)&mcStatus,sizeof(MCStatus));
|
||
// u32 traverseState = m_mcStatus.traverseState;//遍历状态
|
||
|
||
// //等于遍历参数
|
||
// if((m_paraType & PARA_TYPE_ROOTTRAVERSE) == PARA_TYPE_ROOTTRAVERSE)
|
||
// {
|
||
// //刷新遍历状态
|
||
// for(int i = 0; i < m_itemList.size(); i++)
|
||
// {
|
||
// if(m_itemList[i].paraTypeSort == ROOT_SORT_HEADSENSOR)//信号参数
|
||
// {
|
||
// //读取机头遍历状态(遍历功能)
|
||
// int NoseNum = 0;//不赋初值,就要保证在各种情况下都有值
|
||
// if(m_nodeType == 0)
|
||
// {
|
||
// NoseNum = m_mcParaValues.buf[2];//平绣机头个数
|
||
// }
|
||
// else if(m_nodeType == 1)
|
||
// {
|
||
// NoseNum = m_mcParaValues.buf[4];//冲孔机头个数
|
||
// }
|
||
// else if(m_nodeType == 2)
|
||
// {
|
||
// NoseNum = m_mcParaValues.buf[8];//毛巾机头个数
|
||
// }
|
||
// //刷新信号参数 (-N -Y)
|
||
// refreshSensorPara(m_itemList[i].minVal,m_itemList[i].maxVal,NoseNum,m_itemList[i],traverseState);
|
||
// }
|
||
// }
|
||
// }
|
||
//}
|
||
|
||
void ParameterSetDialog::on_button1_clicked()
|
||
{
|
||
changeValue(0);
|
||
}
|
||
|
||
void ParameterSetDialog::on_button2_clicked()
|
||
{
|
||
changeValue(1);
|
||
}
|
||
|
||
void ParameterSetDialog::on_button3_clicked()
|
||
{
|
||
changeValue(2);
|
||
}
|
||
|
||
void ParameterSetDialog::on_button4_clicked()
|
||
{
|
||
changeValue(3);
|
||
}
|
||
|
||
void ParameterSetDialog::on_button5_clicked()
|
||
{
|
||
changeValue(4);
|
||
}
|
||
|
||
void ParameterSetDialog::on_button6_clicked()
|
||
{
|
||
changeValue(5);
|
||
}
|
||
|
||
void ParameterSetDialog::on_button7_clicked()
|
||
{
|
||
changeValue(6);
|
||
}
|
||
|
||
void ParameterSetDialog::on_button8_clicked()
|
||
{
|
||
changeValue(7);
|
||
}
|
||
|
||
void ParameterSetDialog::on_button9_clicked()
|
||
{
|
||
changeValue(8);
|
||
}
|
||
|
||
void ParameterSetDialog::on_button10_clicked()
|
||
{
|
||
changeValue(9);
|
||
}
|
||
|
||
void ParameterSetDialog::on_button11_clicked()
|
||
{
|
||
changeValue(10);
|
||
}
|
||
|
||
void ParameterSetDialog::on_button12_clicked()
|
||
{
|
||
changeValue(11);
|
||
}
|
||
|
||
void ParameterSetDialog::on_buttonPgUp_clicked()
|
||
{
|
||
if(m_paraType == PARA_TYPE_ROOT)//等于超级用户界面
|
||
{
|
||
m_rootCurPage--;
|
||
}
|
||
else
|
||
{
|
||
m_curPage--;
|
||
}
|
||
|
||
refreshUi();
|
||
}
|
||
|
||
void ParameterSetDialog::on_buttonPgDn_clicked()
|
||
{
|
||
if(m_paraType == PARA_TYPE_ROOT)//等于超级用户界面
|
||
{
|
||
m_rootCurPage++;
|
||
}
|
||
else
|
||
{
|
||
m_curPage++;
|
||
}
|
||
refreshUi();
|
||
}
|
||
|
||
void ParameterSetDialog::on_buttonOk_clicked()
|
||
{
|
||
PromptDialog promptDlg(this);
|
||
qDebug()<<"para ok 1";
|
||
|
||
//等于遍历参数
|
||
if((m_paraType & PARA_TYPE_ROOTTRAVERSE) == PARA_TYPE_ROOTTRAVERSE)
|
||
{
|
||
qDebug()<<"para ok 2";
|
||
|
||
int para1,para2,para3;
|
||
para1 = para2 = para3 = 0;
|
||
|
||
promptDlg.initDialog(PromptDialog::BTN_OK_CANCEL);
|
||
promptDlg.setTitleStr(tr("Prompt"));
|
||
promptDlg.setContentStr(tr("Whether to start traversing settings?"));//是否开始遍历设置?
|
||
if(promptDlg.exec() == 1)
|
||
{
|
||
if(m_itemList.size() <= 0){return;}
|
||
|
||
para1 = m_itemList[0].value;//协议类型
|
||
para2 = m_itemList[1].value;//遍历模式
|
||
|
||
if(para2 == 1)//单独遍历
|
||
{
|
||
//起始ID等于设置的机头号
|
||
para3 = m_itemList[2].value;
|
||
}
|
||
else //全部遍历
|
||
{
|
||
//起始ID等于1
|
||
para3 = 1;
|
||
}
|
||
|
||
if(g_pMachine != NULL)
|
||
{
|
||
g_pMachine->enterOrExitStates(UCMD_TRA_BOARD,para1,WIREHEAD,para2,para3);
|
||
}
|
||
}
|
||
|
||
qDebug()<<"para ok 3";
|
||
return;
|
||
}
|
||
|
||
//等于超级用户花样参数
|
||
if((m_paraType & PARA_TYPE_ROOT_PATTERN) == PARA_TYPE_ROOT_PATTERN)
|
||
{
|
||
// int para = 0;
|
||
if(m_itemList.size() <= 0){return;}//是超级用户的花样参数
|
||
int StepLockNeedlesNum = getItemValue(SET_LOCKNEEDLESNUM); // 锁针次数
|
||
g_pSettings->writeToIniFile("PatternPara/lockNeedlesNum",StepLockNeedlesNum);
|
||
int StepLockNeedlesStepNum = getItemValue(SET_LOCKNEEDLESSTEPNUM); // 锁针步数
|
||
g_pSettings->writeToIniFile("PatternPara/lockNeedlesStepNum",StepLockNeedlesStepNum);
|
||
int StepLockNeedlesStepLength = getItemValue(SET_LOCKNEEDLESSTEPLENTH); // 锁针针步长度
|
||
g_pSettings->writeToIniFile("PatternPara/lockNeedlesStepLength",StepLockNeedlesStepLength);
|
||
|
||
done(1);//关闭窗体,并返回1
|
||
}
|
||
|
||
//等于机器参数或工作参数
|
||
if(((m_paraType & PARA_TYPE_MACH) == PARA_TYPE_MACH) ||
|
||
((m_paraType & PARA_TYPE_WORK) == PARA_TYPE_WORK))
|
||
{
|
||
qDebug()<<"para ok 4";
|
||
saveParas();
|
||
if(g_pMachine->isConnected() == 3)
|
||
{
|
||
promptDlg.initDialog(PromptDialog::BTN_OK);
|
||
promptDlg.setTitleStr(tr("Prompt"));
|
||
QString str;
|
||
str = tr("Parameters saved successfully!");//参数保存成功!
|
||
promptDlg.setContentStr(str);
|
||
promptDlg.exec();
|
||
}
|
||
}
|
||
|
||
//等于机头板参数
|
||
if(((m_paraType & PARA_TYPE_HEADPARAMETER) == PARA_TYPE_HEADPARAMETER))
|
||
{
|
||
saveParas();
|
||
if(g_pMachine->isConnected() == 3)
|
||
{
|
||
promptDlg.initDialog(PromptDialog::BTN_OK);
|
||
promptDlg.setTitleStr(tr("Prompt"));
|
||
QString str;
|
||
str = tr("Parameters saved successfully!");//参数保存成功!
|
||
promptDlg.setContentStr(str);
|
||
promptDlg.exec();
|
||
}
|
||
}
|
||
|
||
//等于软件设置参数
|
||
if((m_paraType & PARA_TYPE_SOFTWARESET) == PARA_TYPE_SOFTWARESET)
|
||
{
|
||
qDebug()<<"para ok 5";
|
||
|
||
promptDlg.initDialog(PromptDialog::BTN_OK_CANCEL);
|
||
promptDlg.setTitleStr(tr("Prompt"));
|
||
|
||
QString str;
|
||
str = tr("The settings take effect after restarting the interface!");//重启界面后设置生效!
|
||
promptDlg.setContentStr(str);
|
||
if(promptDlg.exec() == 1)
|
||
{
|
||
int language = m_itemList.at((s16)SET_LANGUAGE).value;//语言
|
||
//int connectMode = m_itemList.at((s16)SET_CONNECTMODE).value;//连接通讯方式
|
||
|
||
g_pSettings->writeToIniFile("HMI/language",language);
|
||
//g_pSettings->writeToIniFile("HMI/connectMode",connectMode);
|
||
|
||
#ifdef Q_OS_WIN
|
||
qApp->exit();
|
||
#endif
|
||
|
||
#ifdef Q_OS_LINUX
|
||
system("reboot");
|
||
#endif
|
||
}
|
||
|
||
qDebug()<<"para ok 6";
|
||
return;
|
||
}
|
||
|
||
//等于网络管理参数
|
||
if((m_paraType & PARA_TYPE_NETWORKSET) == PARA_TYPE_NETWORKSET)
|
||
{
|
||
qDebug()<<"para ok 7";
|
||
|
||
//网络设置完成,需重启后重新建立连接
|
||
promptDlg.initDialog(PromptDialog::BTN_OK_CANCEL);
|
||
QString str = tr("Network settings are completed, re-establish after reboot");
|
||
promptDlg.setTitleStr(tr("Prompt"));
|
||
promptDlg.setContentStr(str);
|
||
if(promptDlg.exec() == 1)
|
||
{
|
||
QDir apppath(qApp->applicationDirPath());
|
||
|
||
s16 idx = 0;//参数索引
|
||
QString configfile;
|
||
|
||
configfile = apppath.path() + apppath.separator() + "mcconfig.ini";
|
||
QSettings configIni(configfile, QSettings::IniFormat);
|
||
|
||
QString serverip = m_itemList.at(idx).valueStr;//服务器IP
|
||
int serverport = m_itemList.at(idx).value;//服务器端口
|
||
|
||
// 回写参数
|
||
configIni.setValue("server/ip", serverip);
|
||
configIni.setValue("server/port", serverport);
|
||
|
||
QString localip = m_itemList.at(idx).valueStr;//本地IP
|
||
// 回写参数
|
||
configIni.setValue("local/ip", localip);
|
||
|
||
idx++;
|
||
|
||
int localport = m_itemList.at(idx).value;//本地端口
|
||
// 回写参数
|
||
configIni.setValue("local/port", localport);
|
||
idx++;
|
||
|
||
|
||
#ifdef Q_OS_WIN
|
||
qApp->exit();
|
||
#endif
|
||
|
||
#ifdef Q_OS_LINUX
|
||
system("reboot");
|
||
#endif
|
||
}
|
||
return;
|
||
}
|
||
|
||
//等于网关网络设置参数
|
||
if((m_paraType & PARA_TYPE_NETWORKSETTINGS) == PARA_TYPE_NETWORKSETTINGS)
|
||
{
|
||
//网络设置完成,需重启后重新建立连接
|
||
promptDlg.initDialog(PromptDialog::BTN_OK_CANCEL);
|
||
QString str = tr("Network settings are completed, re-establish after reboot");
|
||
promptDlg.setTitleStr(tr("Prompt"));
|
||
promptDlg.setContentStr(str);
|
||
if(promptDlg.exec() == 1)
|
||
{
|
||
QDir apppath(qApp->applicationDirPath());
|
||
|
||
s16 idx =0; //参数索引
|
||
QString configfile;
|
||
configfile = apppath.path() + apppath.separator() +"lotconfig.ini";
|
||
QSettings configIni(configfile, QSettings::IniFormat);
|
||
|
||
QString serverip = m_itemList.at(idx).valueStr;//服务器IP
|
||
idx++;
|
||
int serverport = m_itemList.at(idx).value;//服务器端口
|
||
idx++;
|
||
QString localip = m_itemList.at(idx).valueStr;//本地IP
|
||
idx++;
|
||
int localport = m_itemList.at(idx).value;//本地端口
|
||
|
||
// 回写参数
|
||
configIni.setValue("server/ip", serverip);
|
||
configIni.setValue("server/port", serverport);
|
||
configIni.setValue("local/ip", localip);
|
||
configIni.setValue("local/port", localport);
|
||
|
||
#ifdef Q_OS_WIN
|
||
qApp->exit();
|
||
#endif
|
||
|
||
#ifdef Q_OS_LINUX
|
||
system("reboot");
|
||
#endif
|
||
}
|
||
return;
|
||
}
|
||
|
||
//等于时间设置参数
|
||
if((m_paraType & PARA_TYPE_TIMESET) == PARA_TYPE_TIMESET)
|
||
{
|
||
int yearValue = m_itemList.at(0).value;
|
||
int monthValue = m_itemList.at(1).value;
|
||
int dayValue = m_itemList.at(2).value;
|
||
|
||
#ifdef Q_OS_LINUX
|
||
int hourValue = m_itemList.at(3).value;
|
||
int minuteValue = m_itemList.at(4).value;
|
||
int secondValue = m_itemList.at(5).value;
|
||
#endif
|
||
|
||
int temp = 0;
|
||
|
||
//判断是否为闰年,闰年2月份是29天,其他是28天
|
||
if((yearValue % 4 == 0) && (yearValue % 100 != 0))
|
||
{
|
||
if(monthValue == 2)
|
||
{
|
||
if(dayValue > 29)
|
||
{
|
||
temp = -1;
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if(monthValue == 2)
|
||
{
|
||
if(dayValue > 28)
|
||
{
|
||
temp = -1;
|
||
}
|
||
}
|
||
}
|
||
|
||
//1、3、5、7、8、10、12是31天,其他是30天
|
||
if(monthValue == 4 || monthValue == 6 || monthValue == 9 || monthValue == 11)
|
||
{
|
||
if(dayValue > 30)
|
||
{
|
||
temp = -1;
|
||
}
|
||
}
|
||
|
||
QString showStr;
|
||
if(temp == 0)
|
||
{
|
||
//设置时间
|
||
#ifdef Q_OS_LINUX
|
||
struct tm rtcTime;
|
||
rtcTime.tm_year = yearValue - 1900;
|
||
rtcTime.tm_mon = monthValue - 1;
|
||
rtcTime.tm_mday = dayValue;
|
||
rtcTime.tm_hour = hourValue;
|
||
rtcTime.tm_min = minuteValue;
|
||
rtcTime.tm_sec = secondValue;
|
||
rtcTime.tm_isdst = 0;
|
||
rtcTime.tm_yday = 0;
|
||
rtcTime.tm_wday = 0;
|
||
|
||
int retval = hal_set_rtc_time(&rtcTime);
|
||
if(retval != 0)
|
||
{
|
||
qDebug("set_rtc_time failed: %d!", retval);
|
||
temp = -2;
|
||
}
|
||
#endif
|
||
//时间设置完成,重启后生效
|
||
promptDlg.initDialog(PromptDialog::BTN_RESTART);
|
||
showStr = tr("The time setting is completed and will take effect after restart");
|
||
}
|
||
else if(temp == -1)
|
||
{
|
||
//时间设置不合理,请重新设置
|
||
promptDlg.initDialog(PromptDialog::BTN_OK);
|
||
showStr = tr("Unreasonable time setting, please reset");
|
||
}
|
||
|
||
if(temp == -2)
|
||
{
|
||
//时间设置失败,请重新设置
|
||
promptDlg.initDialog(PromptDialog::BTN_OK);
|
||
showStr = tr("Time setting failed, please reset");
|
||
}
|
||
|
||
promptDlg.setTitleStr(tr("Prompt"));
|
||
promptDlg.setContentStr(showStr);
|
||
promptDlg.exec();
|
||
return;
|
||
}
|
||
|
||
//等于超级用户界面配置参数
|
||
if((m_paraType & PARA_TYPE_HMICONFIGURATION) == PARA_TYPE_HMICONFIGURATION)
|
||
{
|
||
qDebug()<<"para ok 5";
|
||
|
||
promptDlg.initDialog(PromptDialog::BTN_OK_CANCEL);
|
||
promptDlg.setTitleStr(tr("Prompt"));
|
||
|
||
QString str;
|
||
str = tr("The settings take effect after restarting the interface!");//重启界面后设置生效!
|
||
promptDlg.setContentStr(str);
|
||
if(promptDlg.exec() == 1)
|
||
{
|
||
//界面配置里的参数都放在了 点击触发型参数枚举 里,要筛选才能获取到相应的value值
|
||
for(int i = 0; i < m_itemList.size(); i++)
|
||
{
|
||
if(m_itemList[i].indexInPara == ROOT_RESOLUTION)
|
||
{
|
||
g_emResolut = (Resolution)(m_itemList[i].value);//分辨率
|
||
g_pSettings->writeToIniFile("HMI/resolution",g_emResolut);
|
||
}
|
||
else if (m_itemList[i].indexInPara == SET_CONNECTMODE)
|
||
{
|
||
int connectMode = (s16)m_itemList[i].value;//连接通讯方式
|
||
g_pSettings->writeToIniFile("HMI/connectMode",connectMode);
|
||
}
|
||
else if(m_itemList[i].indexInPara == ROOT_HIGH_SPEED_SWITCHING)
|
||
{
|
||
s16 speedMode =(s16)(m_itemList[i].value);//是否为高速
|
||
g_pSettings->writeToIniFile("AUFUS/highSpeed",speedMode);
|
||
}
|
||
else if(m_itemList[i].indexInPara == ROOT_WATERMARKSET)
|
||
{
|
||
s16 waterMark =(s16)(m_itemList[i].value);//主背景是否带水印
|
||
g_pSettings->writeToIniFile("HMI/waterMark",waterMark);
|
||
}
|
||
else if(m_itemList[i].indexInPara == ROOT_WIFI)
|
||
{
|
||
s16 wifi =(s16)(m_itemList[i].value);//是否带wifi
|
||
g_pSettings->writeToIniFile("HMI/wifi",wifi);
|
||
}
|
||
else if(m_itemList[i].indexInPara == ROOT_PARASORTSET)
|
||
{
|
||
s16 paraSort =(s16)(m_itemList[i].value);//参数是否分类显示
|
||
g_pSettings->writeToIniFile("HMI/paraSort",paraSort);
|
||
}
|
||
else if(m_itemList[i].indexInPara == ROOT_MACTYPE)
|
||
{
|
||
g_emMacType = (MachineType)(m_itemList[i].value);//机器类型
|
||
g_pSettings->writeToIniFile("HMI/machineType",g_emMacType);
|
||
|
||
if(g_emMacType == MACHINE_PUNCH)//等于冲孔机重新配置常用功能
|
||
{
|
||
g_pSettings->writeToIniFile("HMI/commonbtn1",FUN_PATTERNSELECT);//快捷按钮1的功能索引
|
||
g_pSettings->writeToIniFile("HMI/commonbtn2",FUN_SETSTARTPOINT);//快捷按钮2的功能索引
|
||
g_pSettings->writeToIniFile("HMI/commonbtn3",FUN_BACKSTARTPOINT);//快捷按钮3的功能索引
|
||
g_pSettings->writeToIniFile("HMI/commonbtn4",FUN_CHECKFRAME);//快捷按钮4的功能索引
|
||
g_pSettings->writeToIniFile("HMI/commonbtn5",FUN_BACKWORKPOINT);//快捷按钮5的功能索引
|
||
g_pSettings->writeToIniFile("HMI/commonbtn6",FUN_SETOFFSETPOINT);//快捷按钮6的功能索引
|
||
g_pSettings->writeToIniFile("HMI/commonbtn7",FUN_BACKOFFSETPOINT);//快捷按钮7的功能索引
|
||
g_pSettings->writeToIniFile("HMI/commonbtn8",FUN_PUNCHSPINDLEJOG);//快捷按钮8的功能索引
|
||
g_pSettings->writeToIniFile("HMI/commonbtn9",FUN_PUNCHMANUALCHANGECOLOR);//快捷按钮9的功能索引
|
||
g_pSettings->writeToIniFile("HMI/commonbtn10",FUN_SINGLEPUNCH);//快捷按钮10的功能索引
|
||
}
|
||
if(g_emMacType == MACHINE_PUNCH_AUTOPOS)//等于垫板冲孔机重新配置常用功能
|
||
{
|
||
g_pSettings->writeToIniFile("HMI/commonbtn1",FUN_PATTERNSELECT);//快捷按钮1的功能索引
|
||
g_pSettings->writeToIniFile("HMI/commonbtn2",FUN_SINGLEPUNCH);//快捷按钮2的功能索引
|
||
g_pSettings->writeToIniFile("HMI/commonbtn3",FUN_BACKSTARTPOINT);//快捷按钮3的功能索引
|
||
g_pSettings->writeToIniFile("HMI/commonbtn4",FUN_CHECKFRAME);//快捷按钮4的功能索引
|
||
g_pSettings->writeToIniFile("HMI/commonbtn5",FUN_BACKWORKPOINT);//快捷按钮5的功能索引
|
||
g_pSettings->writeToIniFile("HMI/commonbtn6",FUN_SETOFFSETPOINT);//快捷按钮6的功能索引
|
||
g_pSettings->writeToIniFile("HMI/commonbtn7",FUN_BACKOFFSETPOINT);//快捷按钮7的功能索引
|
||
g_pSettings->writeToIniFile("HMI/commonbtn8",FUN_PUNCHSPINDLEJOG);//快捷按钮8的功能索引
|
||
g_pSettings->writeToIniFile("HMI/commonbtn9",FUN_PUNCHMANUALCHANGECOLOR);//快捷按钮9的功能索引
|
||
g_pSettings->writeToIniFile("HMI/commonbtn10",FUN_DRAWOUTLINE);//快捷按钮10的功能索引
|
||
}
|
||
else if(g_emMacType == MACHINE_PUNCH_SEW)//冲缝机
|
||
{
|
||
g_pSettings->writeToIniFile("HMI/commonbtn1",FUN_ALLTOZERO);//快捷按钮1的功能索引
|
||
g_pSettings->writeToIniFile("HMI/commonbtn2",FUN_PUNCHSPINDLEJOG);//快捷按钮2的功能索引
|
||
g_pSettings->writeToIniFile("HMI/commonbtn3",FUN_SPINDLEENABLE);//快捷按钮3的功能索引
|
||
g_pSettings->writeToIniFile("HMI/commonbtn4",FUN_SPINDLEDISABLE);//快捷按钮4的功能索引
|
||
g_pSettings->writeToIniFile("HMI/commonbtn5",FUN_SPINDLETEST);//快捷按钮5的功能索引
|
||
g_pSettings->writeToIniFile("HMI/commonbtn6",FUN_SETOFFSETPOINT);//快捷按钮6的功能索引
|
||
g_pSettings->writeToIniFile("HMI/commonbtn7",FUN_BACKOFFSETPOINT);//快捷按钮7的功能索引
|
||
g_pSettings->writeToIniFile("HMI/commonbtn8",FUN_SETSTARTPOINT);//快捷按钮8的功能索引
|
||
g_pSettings->writeToIniFile("HMI/commonbtn9",FUN_BACKSTARTPOINT);//快捷按钮9的功能索引
|
||
g_pSettings->writeToIniFile("HMI/commonbtn10",FUN_BACKWORKPOINT);//快捷按钮10的功能索引
|
||
}
|
||
else
|
||
{
|
||
g_pSettings->writeToIniFile("HMI/commonbtn1",FUN_PATTERNSELECT);//快捷按钮1的功能索引
|
||
g_pSettings->writeToIniFile("HMI/commonbtn2",FUN_SETSTARTPOINT);//快捷按钮2的功能索引
|
||
g_pSettings->writeToIniFile("HMI/commonbtn3",FUN_BACKSTARTPOINT);//快捷按钮3的功能索引
|
||
g_pSettings->writeToIniFile("HMI/commonbtn4",FUN_CHECKFRAME);//快捷按钮4的功能索引
|
||
g_pSettings->writeToIniFile("HMI/commonbtn5",FUN_BACKWORKPOINT);//快捷按钮5的功能索引
|
||
g_pSettings->writeToIniFile("HMI/commonbtn6",FUN_SETOFFSETPOINT);//快捷按钮6的功能索引
|
||
g_pSettings->writeToIniFile("HMI/commonbtn7",FUN_BACKOFFSETPOINT);//快捷按钮7的功能索引
|
||
g_pSettings->writeToIniFile("HMI/commonbtn8",FUN_PUNCHSPINDLEJOG);//快捷按钮8的功能索引
|
||
g_pSettings->writeToIniFile("HMI/commonbtn9",FUN_PUNCHMANUALCHANGECOLOR);//快捷按钮9的功能索引
|
||
g_pSettings->writeToIniFile("HMI/commonbtn10",FUN_SINGLEPUNCH);//快捷按钮10的功能索引
|
||
}
|
||
}
|
||
else if(m_itemList[i].indexInPara == ROOT_PRODUCTTYPE)
|
||
{
|
||
g_emProductType =(ProductType)(m_itemList[i].value);//产品类型
|
||
g_pSettings->writeToIniFile("HMI/productType",g_emProductType);
|
||
}
|
||
}
|
||
|
||
#ifdef Q_OS_WIN
|
||
qApp->exit();
|
||
#endif
|
||
|
||
#ifdef Q_OS_LINUX
|
||
system("reboot");
|
||
#endif
|
||
}
|
||
return;
|
||
}
|
||
|
||
//等于超级用户物联网配置参数
|
||
if((m_paraType & PARA_TYPE_IOTCONFIGURATION) == PARA_TYPE_IOTCONFIGURATION)
|
||
{
|
||
qDebug()<<"para ok 66";
|
||
|
||
for(int i = 0; i<m_itemList.size(); i++)
|
||
{
|
||
if(m_itemList[i].indexInPara == ROOT_RACKNUMBERINPUT)
|
||
{
|
||
int rackNumber = m_itemList[i].value;//机架号
|
||
g_pSettings->writeToIniFile("IOT/rackNumber",rackNumber);
|
||
}
|
||
else if(m_itemList[i].indexInPara == ROOT_DELIVERYTIME)
|
||
{
|
||
QString deliveryTime = m_itemList[i].valueStr;//工厂预计交货时间
|
||
g_pSettings->writeToIniFile("IOT/deliveryTime",deliveryTime);
|
||
}
|
||
else if(m_itemList[i].indexInPara == ROOT_DEBUGPROGRESS)
|
||
{
|
||
int debugProgress = m_itemList[i].value;//调试进度
|
||
g_pSettings->writeToIniFile("IOT/debugProgress",debugProgress);
|
||
}
|
||
}
|
||
|
||
//网关连接方式改变时需要提示重启
|
||
s16 cFlag = 0;
|
||
for(int i = 0; i<m_itemList.size(); i++)
|
||
{
|
||
if(m_itemList[i].indexInPara == ROOT_GATEWAYCONNECTIONMETHOD)
|
||
{
|
||
int bVal = g_pSettings->readFromIniFile("IOT/gatewayConnectMode").toInt();
|
||
int eVal = m_itemList[i].value;//网关连接方式
|
||
if(bVal != eVal)
|
||
{
|
||
cFlag = 1;
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
|
||
if(cFlag == 1)
|
||
{
|
||
promptDlg.initDialog(PromptDialog::BTN_OK_CANCEL);
|
||
promptDlg.setTitleStr(tr("Prompt"));
|
||
QString str;
|
||
str = tr("Connection mode changes, take effect after the reboot!");//连接方式改变,重启界面后生效!
|
||
promptDlg.setContentStr(str);
|
||
if(promptDlg.exec() == 1)
|
||
{
|
||
for(int i = 0; i<m_itemList.size(); i++)
|
||
{
|
||
if(m_itemList[i].indexInPara == ROOT_GATEWAYCONNECTIONMETHOD)
|
||
{
|
||
int gatewayConnect = m_itemList[i].value;//网关连接方式
|
||
g_pSettings->writeToIniFile("IOT/gatewayConnectMode",gatewayConnect);
|
||
break;
|
||
}
|
||
}
|
||
|
||
#ifdef Q_OS_WIN
|
||
qApp->exit();
|
||
#endif
|
||
|
||
#ifdef Q_OS_LINUX
|
||
system("reboot");
|
||
#endif
|
||
}
|
||
return;
|
||
}
|
||
else
|
||
{
|
||
done(1);
|
||
}
|
||
}
|
||
//超级用户密码权限,单次有效
|
||
g_emUser = operate;
|
||
done(1);//0是关掉
|
||
|
||
qDebug()<<"para ok 8";
|
||
|
||
}
|
||
|
||
void ParameterSetDialog::on_buttonCancel_clicked()
|
||
{
|
||
//等于遍历参数
|
||
if((m_paraType & PARA_TYPE_ROOTTRAVERSE) == PARA_TYPE_ROOTTRAVERSE)
|
||
{
|
||
if(g_pMachine != NULL)
|
||
{
|
||
g_pMachine->exitTraverStates();
|
||
}
|
||
g_emUser = operate;
|
||
done(0);
|
||
return;
|
||
}
|
||
|
||
//等于锁头测试参数
|
||
if((m_paraType & PARA_TYPE_LOCKTEST) == PARA_TYPE_LOCKTEST)
|
||
{
|
||
if(g_pMachine != NULL)
|
||
{
|
||
g_pMachine->enterOrExitStates(MC_STA_EXIT_TRA);
|
||
}
|
||
g_emUser = operate;
|
||
done(0);
|
||
return;
|
||
}
|
||
|
||
//超级用户密码权限,单次有效
|
||
g_emUser = operate;
|
||
done(0);
|
||
}
|
||
|
||
//恢复默认的参数(主板和外围板)
|
||
void ParameterSetDialog::on_buttonEXBParaRestore_clicked()
|
||
{
|
||
UserRoles emUser = g_emUser;
|
||
|
||
if(g_emDebugMode == nodebugMode)
|
||
{
|
||
if(g_emUser != resetpara)//权限不够先登录
|
||
{
|
||
emit siUserLogin(resetpara);
|
||
if(g_emUser != resetpara)//发送登录信号后,权限如果还没改变就返回
|
||
{
|
||
return;
|
||
}
|
||
}
|
||
}
|
||
PromptDialog promptDlg(this);
|
||
promptDlg.initDialog(PromptDialog::BTN_OK_CANCEL);
|
||
promptDlg.setTitleStr(tr("Prompt"));
|
||
if(m_paraType == PARA_TYPE_HEADPARAMETER)
|
||
{
|
||
promptDlg.setContentStr(tr("Whether to recover the default parameters for the head board?"));//是否恢复为机头板默认参数?
|
||
}
|
||
|
||
else if(m_paraType == PARA_TYPE_MACH ||
|
||
m_paraType == PARA_TYPE_WORK)
|
||
{
|
||
promptDlg.setContentStr(tr("Whether to recover the default parameters for the board?"));//是否恢复为主板默认参数?
|
||
}
|
||
|
||
if(promptDlg.exec() == 1)
|
||
{
|
||
if(g_pMachine != NULL)
|
||
{
|
||
if(m_paraType == PARA_TYPE_HEADPARAMETER)//设置机头板默认参数
|
||
{
|
||
g_pMachine->setToDefaultParas(UCMD_SET_HEADDEF_PARA, 0);
|
||
}
|
||
else if(m_paraType == PARA_TYPE_MACH ||
|
||
m_paraType == PARA_TYPE_WORK)//设置主板默认参数
|
||
{
|
||
g_pMachine->setToDefaultParas(UCMD_SET_DEF_PARA, 0);
|
||
}
|
||
|
||
setMainTitle(tr("Root"));
|
||
setSubTitle(tr("Accessibility > Root"));
|
||
//超级用户参数
|
||
setItemList(root,PARA_TYPE_ROOT);
|
||
refreshUi();
|
||
}
|
||
}
|
||
g_emUser = emUser;
|
||
}
|
||
|
||
//返回上一级菜单
|
||
void ParameterSetDialog::on_buttonReturn_clicked()
|
||
{
|
||
//等于遍历参数
|
||
if((m_paraType & PARA_TYPE_ROOTTRAVERSE) == PARA_TYPE_ROOTTRAVERSE)
|
||
{
|
||
PromptDialog promptDlg(this);
|
||
promptDlg.initDialog(PromptDialog::BTN_OK_CANCEL);
|
||
promptDlg.setTitleStr(tr("Prompt"));
|
||
promptDlg.setContentStr(tr("Whether to exit traversing settings?"));//是否退出遍历设置?
|
||
if(promptDlg.exec() == 1)
|
||
{
|
||
if(g_pMachine != NULL)
|
||
{
|
||
g_pMachine->exitTraverStates();
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return; //退出函数,不执行下边的代码
|
||
}
|
||
}
|
||
|
||
//等于锁头测试参数
|
||
if((m_paraType & PARA_TYPE_LOCKTEST) == PARA_TYPE_LOCKTEST)
|
||
{
|
||
PromptDialog promptDlg(this);
|
||
promptDlg.initDialog(PromptDialog::BTN_OK_CANCEL);
|
||
promptDlg.setTitleStr(tr("Prompt"));
|
||
promptDlg.setContentStr(tr("Whether to exit lock test?"));//是否退出锁头测试?
|
||
if(promptDlg.exec() == 1)
|
||
{
|
||
if(g_pMachine != NULL)
|
||
{
|
||
g_pMachine->enterOrExitStates(MC_STA_EXIT_TRA);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return; //退出函数,不执行下边的代码
|
||
}
|
||
}
|
||
|
||
if(g_emDebugMode == nodebugMode)
|
||
{
|
||
if(g_emUser == factory)
|
||
{
|
||
setMainTitle(tr("Root"));
|
||
setSubTitle(tr("Accessibility > Root"));
|
||
//超级用户参数
|
||
setItemList(factory,PARA_TYPE_ROOT);
|
||
refreshUi();
|
||
}
|
||
else if (g_emUser == root)
|
||
{
|
||
setMainTitle(tr("Root"));
|
||
setSubTitle(tr("Accessibility > Root"));
|
||
//超级用户参数
|
||
setItemList(root,PARA_TYPE_ROOT);
|
||
refreshUi();
|
||
}
|
||
}
|
||
else
|
||
{
|
||
setMainTitle(tr("Root"));
|
||
setSubTitle(tr("Accessibility > Root"));
|
||
//超级用户参数
|
||
setItemList(root,PARA_TYPE_ROOT);
|
||
refreshUi();
|
||
}
|
||
}
|