#include "oamnetworkparam.h" #include "ui_oamnetworkparam.h" #include "maindlg.h" OamNetworkParam::OamNetworkParam(QWidget *parent) : QDialog(parent) , ui(new Ui::OamNetworkParam) { ui->setupUi(this); m_pMainDlg = static_cast(parent);//保存上级窗口指针 InitUi(); configSignalSlot(); } OamNetworkParam::~OamNetworkParam() { delete ui; } void OamNetworkParam::InitUi(){ //初始化PA开关 ui->comboBoxSwitch->addItem("请选择", 0); ui->comboBoxSwitch->addItem("关闭",1); ui->comboBoxSwitch->addItem("打开",2); } //配置界面按钮信号与槽 void OamNetworkParam::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 OamNetworkParam::selectAllItem(){ ui->checkBoxSwitch->setChecked(true); ui->checkBoxWifiName->setChecked(true); ui->checkBoxWifiPwd->setChecked(true); ui->checkBoxServiceIp->setChecked(true); ui->checkBoxServicePort->setChecked(true); } //全不选 void OamNetworkParam::selectAllNoItem(){ ui->checkBoxSwitch->setChecked(false); ui->checkBoxWifiName->setChecked(false); ui->checkBoxWifiPwd->setChecked(false); ui->checkBoxServiceIp->setChecked(false); ui->checkBoxServicePort->setChecked(false); } //清空参数 void OamNetworkParam::clearAllItem(){ QString strText = ""; ui->comboBoxSwitch->setCurrentIndex(0); ui->lineEditWifiName->setText(strText); ui->lineEditWifiPwd->setText(strText); ui->lineEditServiceIp->setText(strText); ui->spinBoxServicePort->setValue(0); } //切换按钮状态 //byFlag:开关状态,true:可用,false:不可用 void OamNetworkParam::switchBtnFlag(bool byFlag){ ui->pushButtonAllSel->setEnabled(byFlag); ui->pushButtonAllNoSel->setEnabled(byFlag); ui->pushButtonClear->setEnabled(byFlag); ui->pushButtonQuery->setEnabled(byFlag); ui->pushButtonConfig->setEnabled(byFlag); } //查询参数 void OamNetworkParam::queryParam(){ quint8 abyData[PS_FRAME_MCPA_PAYLOAD_LEN]; quint8 *pbyHead = abyData; quint16 wLen = 0; LTV_T stLtv; memset(abyData, 0, PS_FRAME_MCPA_PAYLOAD_LEN); memset((void*)&stLtv, 0, sizeof(LTV_T)); //禁用按钮 switchBtnFlag(false); //网管使能开关 if(ui->checkBoxSwitch->isChecked()){ stLtv.wLen = 5; stLtv.wTag = ORDER_NETWORK_SWITCH; memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen); wLen = wLen + stLtv.wLen; pbyHead = pbyHead + stLtv.wLen; } if(ui->checkBoxWifiName->isChecked()){ stLtv.wLen = 24; stLtv.wTag = ORDER_NETWORK_WIFI_NAME; memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen); wLen = wLen + stLtv.wLen; pbyHead = pbyHead + stLtv.wLen; } if(ui->checkBoxWifiPwd->isChecked()){ stLtv.wLen = 24; stLtv.wTag = ORDER_NETWORK_WIFI_PWD; memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen); wLen = wLen + stLtv.wLen; pbyHead = pbyHead + stLtv.wLen; } if(ui->checkBoxServiceIp->isChecked()){ stLtv.wLen = 36; stLtv.wTag = ORDER_NETWORK_SERVICE_IP; memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen); wLen = wLen + stLtv.wLen; pbyHead = pbyHead + stLtv.wLen; } if(ui->checkBoxServicePort->isChecked()){ stLtv.wLen = 6; stLtv.wTag = ORDER_NETWORK_SERVICE_PORT; 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 OamNetworkParam::showParam(LTV_T *pstData){ QString strText = ""; quint16 wTmp = 0; quint8 byLen = pstData->wLen-4; //将数据显示在界面上 if(pstData->wTag == ORDER_NETWORK_WIFI_NAME){ strText = QString::fromUtf8((char *)pstData->abyData, strlen((char*)pstData->abyData)); strText = strText.trimmed(); ui->lineEditWifiName->setText(strText); }else if(pstData->wTag == ORDER_NETWORK_WIFI_PWD){ strText = QString::fromUtf8((char *)pstData->abyData, strlen((char*)pstData->abyData)); strText = strText.trimmed(); ui->lineEditWifiPwd->setText(strText); }else if(pstData->wTag == ORDER_NETWORK_SERVICE_IP){ strText = QString::fromUtf8((char *)pstData->abyData, strlen((char*)pstData->abyData)); strText = strText.trimmed(); ui->lineEditServiceIp->setText(strText); }else if(pstData->wTag == ORDER_NETWORK_SERVICE_PORT){ memcpy(&wTmp, pstData->abyData, byLen); ui->spinBoxServicePort->setValue(wTmp); }else if(pstData->wTag == ORDER_NETWORK_SWITCH){ memcpy(&wTmp, pstData->abyData, byLen); wTmp += 1; ui->comboBoxSwitch->setCurrentIndex(wTmp); } return; } //配置参数 void OamNetworkParam::configParam(){ quint8 abyData[PS_FRAME_MCPA_PAYLOAD_LEN]; quint8 *pbyHead = abyData; quint16 wLen = 0; LTV_T stLtv; QString strText = ""; quint32 dwCoord = 0; QByteArray tmp; char *pchTmp = NULL; QByteArray byteArray; quint8 byCharLen = 0; quint8 byTmp = 0; QVariant varTmp; //禁用按钮 switchBtnFlag(false); memset(abyData, 0, PS_FRAME_MCPA_PAYLOAD_LEN); memset((void*)&stLtv, 0, sizeof(LTV_T)); if(ui->checkBoxSwitch->isChecked()){ memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN); stLtv.wLen = 5; stLtv.wTag = ORDER_NETWORK_SWITCH; varTmp = ui->comboBoxSwitch->currentData(); byTmp = (quint8)varTmp.toInt(); if(byTmp <= 0){ QMessageBox::critical(this, "提示", "请选择网管使能开关"); 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; } if(ui->checkBoxWifiName->isChecked()){ memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN); stLtv.wLen = 24; stLtv.wTag = ORDER_NETWORK_WIFI_NAME; strText = ui->lineEditWifiName->text(); strText = strText.trimmed(); byteArray = strText.toUtf8(); byCharLen = byteArray.size(); if(byCharLen > ( stLtv.wLen - 4)){ QMessageBox::information(this, "提示", "字符长度超过最大值"+QString::number(byCharLen)); switchBtnFlag(true);//启用按钮 return; } memcpy((void*)stLtv.abyData, byteArray.constData(), byCharLen); memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen); wLen = wLen + stLtv.wLen; pbyHead = pbyHead + stLtv.wLen; } if(ui->checkBoxWifiPwd->isChecked()){ memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN); stLtv.wLen = 24; stLtv.wTag = ORDER_NETWORK_WIFI_PWD; strText = ui->lineEditWifiPwd->text(); strText = strText.trimmed(); byteArray = strText.toUtf8(); byCharLen = byteArray.size(); if(byCharLen > ( stLtv.wLen - 4)){ QMessageBox::information(this, "提示", "字符长度超过最大值"+QString::number(byCharLen)); switchBtnFlag(true);//启用按钮 return; } memcpy((void*)stLtv.abyData, byteArray.constData(), byCharLen); memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen); wLen = wLen + stLtv.wLen; pbyHead = pbyHead + stLtv.wLen; } if(ui->checkBoxServiceIp->isChecked()){ memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN); stLtv.wLen = 36; stLtv.wTag = ORDER_NETWORK_SERVICE_IP; strText = ui->lineEditServiceIp->text(); strText = strText.trimmed(); byteArray = strText.toUtf8(); byCharLen = byteArray.size(); if(byCharLen > ( stLtv.wLen - 4)){ QMessageBox::information(this, "提示", "字符长度超过最大值"+QString::number(byCharLen)); switchBtnFlag(true);//启用按钮 return; } memcpy((void*)stLtv.abyData, byteArray.constData(), byCharLen); memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen); wLen = wLen + stLtv.wLen; pbyHead = pbyHead + stLtv.wLen; } if(ui->checkBoxServicePort->isChecked()){ memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN); stLtv.wLen = 6; stLtv.wTag = ORDER_NETWORK_SERVICE_PORT; dwCoord = ui->spinBoxServicePort->value(); memcpy((void*)stLtv.abyData, &dwCoord, (stLtv.wLen - 4)); 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 SignalSendConfigMsg(abyData, wLen, 0); }else{ QMessageBox::information(this,"提示", "请至少选择一项管理项"); } //启用按钮 switchBtnFlag(true); return; } //上传数据 void OamNetworkParam::uploadData(){ QJsonObject jsonObject; //定义一个json对象 QString strText = ""; quint32 dwPort = 0; quint8 bySwitch = 0; quint8 byTmp = 0; QVariant varTmp; //禁用按钮 switchBtnFlag(false); //网管使能开关 if(ui->checkBoxSwitch->isChecked()){ varTmp = ui->comboBoxSwitch->currentData(); bySwitch = (quint8)varTmp.toInt(); bySwitch -= 1; jsonObject["network_switch"] = bySwitch; } if(ui->checkBoxWifiName->isChecked()){ strText = ui->lineEditWifiName->text(); strText = strText.trimmed(); jsonObject["wifi_name"] = strText; } if(ui->checkBoxWifiPwd->isChecked()){ strText = ui->lineEditWifiPwd->text(); strText = strText.trimmed(); jsonObject["wifi_pwd"] = strText; } if(ui->checkBoxServiceIp->isChecked()){ strText = ui->lineEditServiceIp->text(); strText = strText.trimmed(); jsonObject["service_ip"] = strText; } if(ui->checkBoxServicePort->isChecked()){ dwPort = ui->spinBoxServicePort->value(); jsonObject["service_port"] = QJsonValue::fromVariant(QVariant(static_cast(dwPort))); } //启用按钮 switchBtnFlag(true); //发送post请求 emit SignalUploadBtsBaseParamUpdate("guiUploadBtsBaseParamUpdate", jsonObject); return; }