#include "oamconfigparam.h" #include "ui_oamconfigparam.h" #include "maindlg.h" OamConfigParam::OamConfigParam(QWidget *parent) : QDialog(parent) , ui(new Ui::OamConfigParam) { ui->setupUi(this); m_pMainDlg = static_cast(parent);//保存上级窗口指针 init();//模块初始化 } OamConfigParam::~OamConfigParam() { delete ui; } //模块初始化 void OamConfigParam::init(){ m_dwDeviceType = m_pMainDlg->getDeviceType(); initUi(); configSignalSlot(); } //初始化UI void OamConfigParam::initUi(){ QString strText = ""; //初始化DA开关 ui->comboBoxDaSwitch->addItem("请选择",0); ui->comboBoxDaSwitch->addItem("关闭",1); ui->comboBoxDaSwitch->addItem("打开",2); //DA衰减 ui->comboBoxDaGain->addItem("请选择", 0); for(quint16 i = 255; i > 128; i--){ strText = "-" + QString::number((255 - i)*0.5) + "dB"; ui->comboBoxDaGain->addItem(strText, i); } //初始化PA开关 ui->comboBoxPaSwitch->addItem("请选择", 0); ui->comboBoxPaSwitch->addItem("关闭",1); ui->comboBoxPaSwitch->addItem("打开",2); //PA增益 ui->comboBoxPaGain->addItem("请选择", 0); ui->comboBoxPaGain->addItem("低", 20); ui->comboBoxPaGain->addItem("中", 26); ui->comboBoxPaGain->addItem("高", 32); ui->comboBoxPaGain->addItem("最高", 36); updateUi(); } //更新ui void OamConfigParam::updateUi(){ m_dwDeviceType = m_pMainDlg->getDeviceType(); if(m_dwDeviceType != 0){ switchBtnFlag(false); selectAllNoItem(); }else{ switchBtnFlag(true); } } //配置界面按钮信号与槽 void OamConfigParam::configSignalSlot(){ connect(ui->pushButtonAllSel, &QPushButton::clicked, this,&this->selectAllItem);//全选 connect(ui->pushButtonAllNoSel, &QPushButton::clicked, this,&this->selectAllNoItem);//全不选 connect(ui->pushButtonClear, &QPushButton::clicked, this,&this->clearAllItem);//清空 connect(ui->pushButtonQuery, &QPushButton::clicked, this,&this->queryParam);//查询参数 connect(ui->pushButtonConfig, &QPushButton::clicked, this,&this->configParam);//设置参数 connect(ui->pushButtonUpload, &QPushButton::clicked, this,&this->uploadData);//上传参数 //将消息发送到主控模块 connect(this, &this->SignalSendQueryMsg, m_pMainDlg, &m_pMainDlg->slotOamSendQueryMsg); connect(this, &this->SignalSendConfigMsg, m_pMainDlg, &m_pMainDlg->slotOamSendConfigMsg); connect(this, &this->SignalUploadBtsBaseParamUpdate, m_pMainDlg, &m_pMainDlg->slotUploadBtsBaseParamUpdate);//上传数据 } //全选 void OamConfigParam::selectAllItem(){ ui->checkBoxDaSwitch->setChecked(true); ui->checkBoxDaGain->setChecked(true); ui->checkBoxPaSwitch->setChecked(true); ui->checkBoxPaGain->setChecked(true); } //全不选 void OamConfigParam::selectAllNoItem(){ ui->checkBoxDaSwitch->setChecked(false); ui->checkBoxDaGain->setChecked(false); ui->checkBoxPaSwitch->setChecked(false); ui->checkBoxPaGain->setChecked(false); } //清空参数 void OamConfigParam::clearAllItem(){ QString strText = ""; ui->comboBoxDaSwitch->setCurrentIndex(0); ui->comboBoxDaGain->setCurrentIndex(0); ui->comboBoxPaSwitch->setCurrentIndex(0); ui->comboBoxPaGain->setCurrentIndex(0); } //切换按钮状态 //byFlag:开关状态,true:可用,false:不可用 void OamConfigParam::switchBtnFlag(bool byFlag){ ui->pushButtonAllSel->setEnabled(byFlag); ui->pushButtonAllNoSel->setEnabled(byFlag); ui->pushButtonClear->setEnabled(byFlag); ui->pushButtonQuery->setEnabled(byFlag); ui->pushButtonConfig->setEnabled(byFlag); ui->pushButtonUpload->setEnabled(byFlag); } //查询参数 void OamConfigParam::queryParam(){ quint8 abyData[PS_FRAME_MCPA_PAYLOAD_LEN]; quint8 *pbyHead = abyData; quint16 wLen = 0; LTV_T stLtv; //禁用按钮 switchBtnFlag(false); memset(abyData, 0, PS_FRAME_MCPA_PAYLOAD_LEN); memset((void*)&stLtv, 0, sizeof(LTV_T)); if(ui->checkBoxDaSwitch->isChecked()){//DAC开关 stLtv.wLen = 5; stLtv.wTag = ORDER_CONFIG_DAC_SWITCH; memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen); wLen = wLen + stLtv.wLen; pbyHead = pbyHead + stLtv.wLen; } if(ui->checkBoxDaGain->isChecked()){//DAC增益 stLtv.wLen = 5; stLtv.wTag = ORDER_CONFIG_DAC_GAIN; memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen); wLen = wLen + stLtv.wLen; pbyHead = pbyHead + stLtv.wLen; } if(ui->checkBoxPaSwitch->isChecked()){//PA开关 stLtv.wLen = 5; stLtv.wTag = ORDER_CONFIG_PA_SWITCH; memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen); wLen = wLen + stLtv.wLen; pbyHead = pbyHead + stLtv.wLen; } if(ui->checkBoxPaGain->isChecked()){//PA增益 stLtv.wLen = 5; stLtv.wTag = ORDER_CONFIG_PA_GAIN; memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen); wLen = wLen + stLtv.wLen; pbyHead = pbyHead + stLtv.wLen; } if(wLen > PS_FRAME_MCPA_PAYLOAD_LEN){ QMessageBox::information(this,"提示", "数据长度超过报文最大值,请减少查询项"); switchBtnFlag(true); return; } //将参数发送给主控模块 if(wLen > 0){ emit SignalSendQueryMsg(abyData, wLen); }else{ QMessageBox::information(this,"提示", "请至少选择一项管理项"); } //启用按钮 switchBtnFlag(true); return; } //显示参数 void OamConfigParam::showParam(LTV_T *pstData){ QString strText = ""; quint8 byTmp = 0; quint8 byIndex = 0; quint8 byLen = pstData->wLen - 4; //将数据显示在界面上 if(pstData->wTag == ORDER_CONFIG_DAC_SWITCH){//DA开关 memcpy(&byTmp, pstData->abyData, byLen); byTmp += 1; ui->comboBoxDaSwitch->setCurrentIndex(byTmp); }else if(pstData->wTag == ORDER_CONFIG_DAC_GAIN){//DA衰减 memcpy(&byTmp, pstData->abyData, byLen); byIndex = (quint8)ui->comboBoxDaGain->findData(QVariant(byTmp)); ui->comboBoxDaGain->setCurrentIndex(byIndex); }else if(pstData->wTag == ORDER_CONFIG_PA_SWITCH){//PA开关 memcpy(&byTmp, pstData->abyData, byLen); byTmp += 1; ui->comboBoxPaSwitch->setCurrentIndex(byTmp); }else if(pstData->wTag == ORDER_CONFIG_PA_GAIN){//PA增益 memcpy(&byTmp, pstData->abyData, byLen); byIndex = (quint8)ui->comboBoxPaGain->findData(QVariant(byTmp)); ui->comboBoxPaGain->setCurrentIndex(byIndex); } return; } //配置参数 void OamConfigParam::configParam(){ quint8 abyData[PS_FRAME_MCPA_PAYLOAD_LEN]; quint8 *pbyHead = abyData; quint16 wLen = 0; LTV_T stLtv; quint8 byTmp = 0; QVariant varTmp; //禁用按钮 switchBtnFlag(false); memset(abyData, 0, PS_FRAME_MCPA_PAYLOAD_LEN); memset((void*)&stLtv, 0, sizeof(LTV_T)); //DA开关 if(ui->checkBoxDaSwitch->isChecked()){ memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN); stLtv.wLen = 5; stLtv.wTag = ORDER_CONFIG_DAC_SWITCH; varTmp = ui->comboBoxDaSwitch->currentData(); byTmp = (quint8)varTmp.toInt(); if(byTmp <= 0){ QMessageBox::critical(this, "提示", "请选择DA开关"); switchBtnFlag(true); return; } byTmp-= 1; memcpy((void*)stLtv.abyData, &byTmp, (stLtv.wLen - 4)); memcpy(pbyHead, &stLtv, stLtv.wLen); wLen = wLen + stLtv.wLen; pbyHead = pbyHead + stLtv.wLen; } //DA增益 if(ui->checkBoxDaGain->isChecked()){ memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN); stLtv.wLen = 5; stLtv.wTag = ORDER_CONFIG_DAC_GAIN; varTmp = ui->comboBoxDaGain->currentData(); byTmp = (quint8)varTmp.toInt(); if(byTmp <= 0){ QMessageBox::critical(this, "提示", "请选择DA增益"); switchBtnFlag(true); return; } memcpy((void*)stLtv.abyData, &byTmp, (stLtv.wLen - 4)); memcpy(pbyHead, &stLtv, stLtv.wLen); wLen = wLen + stLtv.wLen; pbyHead = pbyHead + stLtv.wLen; } //PA开关 if(ui->checkBoxPaSwitch->isChecked()){ memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN); stLtv.wLen = 5; stLtv.wTag = ORDER_CONFIG_PA_SWITCH; varTmp = ui->comboBoxPaSwitch->currentData(); byTmp = (quint8)varTmp.toInt(); if(byTmp <= 0){ QMessageBox::critical(this, "提示", "请选择PA开关"); switchBtnFlag(true); return; } byTmp -= 1; memcpy((void*)stLtv.abyData, &byTmp, (stLtv.wLen - 4)); memcpy(pbyHead, &stLtv, stLtv.wLen); wLen = wLen + stLtv.wLen; pbyHead = pbyHead + stLtv.wLen; } //DA增益 if(ui->checkBoxPaGain->isChecked()){ memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN); stLtv.wLen = 5; stLtv.wTag = ORDER_CONFIG_PA_GAIN; varTmp = ui->comboBoxPaGain->currentData(); byTmp = (quint8)varTmp.toInt(); if(byTmp <= 0){ QMessageBox::critical(this, "提示", "请选择PA增益"); switchBtnFlag(true); return; } memcpy((void*)stLtv.abyData, &byTmp, (stLtv.wLen - 4)); memcpy(pbyHead, &stLtv, stLtv.wLen); wLen = wLen + stLtv.wLen; pbyHead = pbyHead + stLtv.wLen; } if(wLen > PS_FRAME_MCPA_PAYLOAD_LEN){ QMessageBox::information(this,"提示", "数据长度超过报文最大值,请减少查设置项"); switchBtnFlag(true); return; } //将参数发送给主控模块 if(wLen > 0){ emit SignalSendConfigMsg(abyData, wLen, 0); }else{ QMessageBox::information(this,"提示", "请至少选择一项管理项"); } switchBtnFlag(true); return; } //保存参数槽函数 void OamConfigParam::saveParamSlot(){ quint8 abyData[5] = {0}; LTV_T *pstLtv = (LTV_T*)abyData; //二次确认 QMessageBox::StandardButton dlg; dlg = QMessageBox::question(this, "提示", "确定要保存参数吗", QMessageBox::Yes|QMessageBox::No); if (dlg == QMessageBox::No) { return; } //组织消息 memset((void*)abyData, 0, 5); pstLtv->wLen = 5; pstLtv->wTag = ORDER_CONFIG_SAVE_PARAM; //发送消息 emit SignalSendConfigMsg(abyData, 5, 0); return; } //重启设备槽函数 void OamConfigParam::restartSlot(){ quint8 abyData[5]; LTV_T *pstLtv = (LTV_T*)abyData; //二次确认 QMessageBox::StandardButton dlg; dlg = QMessageBox::question(this, "提示", "确定要重启设备吗", QMessageBox::Yes|QMessageBox::No); if (dlg == QMessageBox::No) { return; } //组织消息 memset((void*)abyData, 0, 5); pstLtv->wLen = 5; pstLtv->wTag = ORDER_CONFIG_RESTART; //发送消息 emit SignalSendConfigMsg(abyData, 5, ORDER_CONFIG_RESTART); return; } //重置设备参数 void OamConfigParam::resetParamSlot(){ quint8 abyData[5]; LTV_T *pstLtv = (LTV_T*)abyData; //二次确认 QMessageBox::StandardButton dlg; dlg = QMessageBox::question(this, "提示", "重置参数后,系统会自动保存参数。确定要重置设备参数吗?", QMessageBox::Yes|QMessageBox::No); if (dlg == QMessageBox::No) { return; } //组织消息 memset((void*)abyData, 0, 5); pstLtv->wLen = 5; pstLtv->wTag = ORDER_CONFIG_RESET_PARAM;//重置设备参数 //发送消息 emit SignalSendConfigMsg(abyData, 5, ORDER_CONFIG_RESET_PARAM); return; } //上传数据 void OamConfigParam::uploadData(){ QJsonObject jsonObject; //定义一个json对象 quint8 byTmp = 0; QVariant varTmp; //禁用按钮 switchBtnFlag(false); //DA开关 if(ui->checkBoxDaSwitch->isChecked()){ varTmp = ui->comboBoxDaSwitch->currentData(); byTmp = (quint8)varTmp.toInt(); if(byTmp <= 0){ QMessageBox::critical(this, "提示", "请选择DA开关"); switchBtnFlag(true); return; } jsonObject["da_switch"] = byTmp; } //DA增益 if(ui->checkBoxDaGain->isChecked()){ varTmp = ui->comboBoxDaGain->currentData(); byTmp = (quint8)varTmp.toInt(); if(byTmp <= 0){ QMessageBox::critical(this, "提示", "请选择DA增益"); switchBtnFlag(true); return; } jsonObject["da_gain"] = byTmp; } //PA开关 if(ui->checkBoxPaSwitch->isChecked()){ varTmp = ui->comboBoxPaSwitch->currentData(); byTmp = (quint8)varTmp.toInt(); if(byTmp <= 0){ QMessageBox::critical(this, "提示", "请选择PA开关"); switchBtnFlag(true); return; } jsonObject["pa_switch"] = byTmp; } //PA增益 if(ui->checkBoxPaGain->isChecked()){ varTmp = ui->comboBoxPaGain->currentData(); byTmp = (quint8)varTmp.toInt(); if(byTmp <= 0){ QMessageBox::critical(this, "提示", "请选择PA增益"); switchBtnFlag(true); return; } jsonObject["pa_gain"] = byTmp; } //启用按钮 switchBtnFlag(true); //发送post请求 emit SignalUploadBtsBaseParamUpdate("guiUploadBtsBaseParamUpdate", jsonObject); return; }