#include "oamsynctimer.h" #include "ui_oamsynctimer.h" #include "maindlg.h" oamsynctimer::oamsynctimer(QWidget *parent) : QDialog(parent) , ui(new Ui::oamsynctimer) { ui->setupUi(this); m_pMainDlg = static_cast(parent);//保存上级窗口指针 configSignalSlot(); init(); } oamsynctimer::~oamsynctimer() { delete ui; } //配置界面按钮信号与槽 void oamsynctimer::configSignalSlot(){ connect(ui->pushButtonAllSel, &QPushButton::clicked, this, &this->selectAllItem);//全选 connect(ui->pushButtonAllNoSel, &QPushButton::clicked, this, &this->selectNoAllItem);//全不选 connect(ui->pushButtonClear, &QPushButton::clicked, this, &this->clearAllItem);//清空 connect(ui->pushButtonQuery, &QPushButton::clicked, this, &oamsynctimer::queryParam);//查询参数 connect(ui->pushButtonConfig, &QPushButton::clicked, this, &oamsynctimer::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 oamsynctimer::init(){ //初始化定时开关 ui->comboBoxTimerSwitch->addItem("关闭", 0); ui->comboBoxTimerSwitch->addItem("打开", 1); updateUi(); return; } //更新ui void oamsynctimer::updateUi(){ m_dwDeviceType = m_pMainDlg->getDeviceType(); if(!m_dwDeviceType){ switchBtnFlag(false); selectNoAllItem(); }else{ switchBtnFlag(true); } } //切换按钮状态 //byFlag:开关状态,true:可用,false:不可用 void oamsynctimer::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 oamsynctimer::selectAll(bool bFlag){ ui->checkBoxTimerSwitch->setChecked(bFlag); ui->checkBoxTimerNum->setChecked(bFlag); ui->checkBoxTimer1Start->setChecked(bFlag); ui->checkBoxTimer1Stop->setChecked(bFlag); ui->checkBoxTimer2Start->setChecked(bFlag); ui->checkBoxTimer2Stop->setChecked(bFlag); } //全选 void oamsynctimer::selectAllItem(){ selectAll(true); } //全不选 void oamsynctimer::selectNoAllItem(){ selectAll(false); } //清空所有 void oamsynctimer::clearAllItem(){ ui->comboBoxTimerSwitch->setCurrentIndex(0); ui->spinBoxTimerNum->setValue(1); QTime myTime = QTime::fromString("15:16:17", "HH:mm:ss"); ui->timeEdit1Start->setTime(myTime); ui->timeEdit1Stop->setTime(myTime); ui->timeEdit2Start->setTime(myTime); ui->timeEdit2Stop->setTime(myTime); } //查询参数 void oamsynctimer::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->checkBoxTimerSwitch->isChecked()){ stLtv.wLen = 5; stLtv.wTag = ORDER_SYNC_TIMER_SWITCH; memcpy(pbyHead, &stLtv, stLtv.wLen); wLen = wLen + stLtv.wLen; pbyHead = pbyHead + stLtv.wLen; } //定时数量 if(ui->checkBoxTimerNum->isChecked()){ stLtv.wLen = 5; stLtv.wTag = ORDER_SYNC_TIMER_NUM; memcpy(pbyHead, &stLtv, stLtv.wLen); wLen = wLen + stLtv.wLen; pbyHead = pbyHead + stLtv.wLen; } //定时1开始时间 if(ui->checkBoxTimer1Start->isChecked()){ stLtv.wLen = 6; stLtv.wTag = ORDER_SYNC_TIMER1_START; memcpy(pbyHead, &stLtv, stLtv.wLen); wLen = wLen + stLtv.wLen; pbyHead = pbyHead + stLtv.wLen; } //定时1停止时间 if(ui->checkBoxTimer1Stop->isChecked()){ stLtv.wLen = 6; stLtv.wTag = ORDER_SYNC_TIMER1_STOP; memcpy(pbyHead, &stLtv, stLtv.wLen); wLen = wLen + stLtv.wLen; pbyHead = pbyHead + stLtv.wLen; } //定时2开始时间 if(ui->checkBoxTimer2Start->isChecked()){ stLtv.wLen = 6; stLtv.wTag = ORDER_SYNC_TIMER2_START; memcpy(pbyHead, &stLtv, stLtv.wLen); wLen = wLen + stLtv.wLen; pbyHead = pbyHead + stLtv.wLen; } //定时2停止时间 if(ui->checkBoxTimer2Stop->isChecked()){ stLtv.wLen = 6; stLtv.wTag = ORDER_SYNC_TIMER2_STOP; 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 SignalSendQueryMsg(abyData, wLen); }else{ QMessageBox::information(this,"提示", "请至少选择一项管理项"); } switchBtnFlag(true); return; } //显示参数 void oamsynctimer::showParam(LTV_T *pstData){ quint8 byTmp = 0; quint16 wTmp = 0; quint16 wHour = 0xFF00; quint16 wMinute = 0x00FF; quint8 byLen = pstData->wLen-4; //将数据显示在界面上 if(pstData->wTag == ORDER_SYNC_TIMER_SWITCH){//定时开关 memcpy(&byTmp, pstData->abyData, byLen); ui->comboBoxTimerSwitch->setCurrentIndex(byTmp); }else if(pstData->wTag == ORDER_SYNC_TIMER_NUM){//定时数量 memcpy(&byTmp, pstData->abyData, byLen); ui->spinBoxTimerNum->setValue(byTmp); }else if(pstData->wTag == ORDER_SYNC_TIMER1_START){ memcpy(&wTmp, pstData->abyData, byLen); wHour = wTmp & wHour; wHour = wHour >> 8; wMinute = wTmp & wMinute; QTime timeTmp(wHour, wMinute, 0); QString myTimeStr = timeTmp.toString("HH:mm:ss"); QTime myTime = QTime::fromString(myTimeStr, "HH:mm:ss"); ui->timeEdit1Start->setTime(myTime); }else if(pstData->wTag == ORDER_SYNC_TIMER1_STOP){ memcpy(&wTmp, pstData->abyData, byLen); wHour = wTmp & wHour; wHour = wHour >> 8; wMinute = wTmp & wMinute; QTime timeTmp(wHour, wMinute, 0); QString myTimeStr = timeTmp.toString("HH:mm:ss"); QTime myTime = QTime::fromString(myTimeStr, "HH:mm:ss"); ui->timeEdit1Stop->setTime(myTime); }else if(pstData->wTag == ORDER_SYNC_TIMER2_START){ memcpy(&wTmp, pstData->abyData, byLen); wHour = wTmp & wHour; wHour = wHour >> 8; wMinute = wTmp & wMinute; QTime timeTmp(wHour, wMinute, 0); QString myTimeStr = timeTmp.toString("HH:mm:ss"); QTime myTime = QTime::fromString(myTimeStr, "HH:mm:ss"); ui->timeEdit2Start->setTime(myTime); }else if(pstData->wTag == ORDER_SYNC_TIMER2_STOP){ memcpy(&wTmp, pstData->abyData, byLen); wHour = wTmp & wHour; wHour = wHour >> 8; wMinute = wTmp & wMinute; QTime timeTmp(wHour, wMinute, 0); QString myTimeStr = timeTmp.toString("HH:mm:ss"); QTime myTime = QTime::fromString(myTimeStr, "HH:mm:ss"); ui->timeEdit2Stop->setTime(myTime); } return; } //配置参数 void oamsynctimer::configParam(){ quint8 abyData[PS_FRAME_MCPA_PAYLOAD_LEN]; quint8 *pbyHead = abyData; quint16 wLen = 0; LTV_T stLtv; QVariant varTmp; quint8 byTmp = 0; quint8 abyDateTime[6] = {0}; QDateTime current = QDateTime::currentDateTime(); QString str = QString::number(current.date().year()); QString lastTwoStr = str.right(2); // 取低两位 abyDateTime[5] = lastTwoStr.toInt(); // 字符串转整数25;// 年,如2025 abyDateTime[4] = current.date().month(); // 月(1-12) abyDateTime[3] = current.date().day(); // 日(1-31) abyDateTime[2] = current.time().hour(); // 时(0-23) abyDateTime[1] = current.time().minute();// 分(0-59) abyDateTime[0] = current.time().second();// 秒(0-59) QTime myTime; quint16 wTime = 0; quint16 wMinute = 0x0000; //禁用按钮 switchBtnFlag(false); memset(abyData, 0, PS_FRAME_MCPA_PAYLOAD_LEN); memset((void*)&stLtv, 0, sizeof(LTV_T)); //配置当前时间 memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN); stLtv.wLen = 10; stLtv.wTag = ORDER_SYNC_TIMER_CURRENT_TIME; memcpy((void*)stLtv.abyData, abyDateTime, (stLtv.wLen - 4)); memcpy(pbyHead, &stLtv, stLtv.wLen); wLen = wLen + stLtv.wLen; pbyHead = pbyHead + stLtv.wLen; //定时开关 if(ui->checkBoxTimerSwitch->isChecked()){ memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN); stLtv.wLen = 5; stLtv.wTag = ORDER_SYNC_TIMER_SWITCH; varTmp = ui->comboBoxTimerSwitch->currentData(); byTmp = (quint8)varTmp.toInt(); memcpy((void*)stLtv.abyData, &byTmp, (stLtv.wLen - 4)); memcpy(pbyHead, &stLtv, stLtv.wLen); wLen = wLen + stLtv.wLen; pbyHead = pbyHead + stLtv.wLen; } //定时分段 if(ui->checkBoxTimerNum->isChecked()){ memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN); stLtv.wLen = 5; stLtv.wTag = ORDER_SYNC_TIMER_NUM; byTmp = ui->spinBoxTimerNum->value(); memcpy((void*)stLtv.abyData, &byTmp, (stLtv.wLen - 4)); memcpy(pbyHead, &stLtv, stLtv.wLen); wLen = wLen + stLtv.wLen; pbyHead = pbyHead + stLtv.wLen; } //定时1开始时间 if(ui->checkBoxTimer1Start->isChecked()){ memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN); stLtv.wLen = 6; stLtv.wTag = ORDER_SYNC_TIMER1_START; myTime = ui->timeEdit1Start->time(); wTime = myTime.hour(); wMinute = myTime.minute(); wTime <<= 8; wTime |= wMinute; memcpy((void*)stLtv.abyData, &wTime, (stLtv.wLen - 4)); memcpy(pbyHead, &stLtv, stLtv.wLen); wLen = wLen + stLtv.wLen; pbyHead = pbyHead + stLtv.wLen; } //定时1停止时间 if(ui->checkBoxTimer1Stop->isChecked()){ memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN); stLtv.wLen = 6; stLtv.wTag = ORDER_SYNC_TIMER1_STOP; myTime = ui->timeEdit1Stop->time(); wTime = myTime.hour(); wMinute = myTime.minute(); wTime <<= 8; wTime |= wMinute; memcpy((void*)stLtv.abyData, &wTime, (stLtv.wLen - 4)); memcpy(pbyHead, &stLtv, stLtv.wLen); wLen = wLen + stLtv.wLen; pbyHead = pbyHead + stLtv.wLen; } //定时2开始时间 if(ui->checkBoxTimer2Start->isChecked()){ memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN); stLtv.wLen = 6; stLtv.wTag = ORDER_SYNC_TIMER2_START; myTime = ui->timeEdit2Start->time(); wTime = myTime.hour(); wMinute = myTime.minute(); wTime <<= 8; wTime |= wMinute; memcpy((void*)stLtv.abyData, &wTime, (stLtv.wLen - 4)); memcpy(pbyHead, &stLtv, stLtv.wLen); wLen = wLen + stLtv.wLen; pbyHead = pbyHead + stLtv.wLen; } //定时2停止时间 if(ui->checkBoxTimer2Stop->isChecked()){ memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN); stLtv.wLen = 6; stLtv.wTag = ORDER_SYNC_TIMER2_STOP; myTime = ui->timeEdit2Stop->time(); wTime = myTime.hour(); wMinute = myTime.minute(); wTime <<= 8; wTime |= wMinute; memcpy((void*)stLtv.abyData, &wTime, (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 oamsynctimer::uploadData(){ QJsonObject jsonObject; //定义一个json对象 QVariant varTmp; quint8 byTmp = 0; QTime myTime; quint16 wTime = 0; quint8 byMinute = 0; quint8 byFlag = 0; //禁用按钮 switchBtnFlag(false); //定时开关 if(ui->checkBoxTimerSwitch->isChecked()){ varTmp = ui->comboBoxTimerSwitch->currentData(); byTmp = (quint8)varTmp.toInt(); jsonObject["sync_timer_switch"] = byTmp; byFlag = 1; } //定时分段 if(ui->checkBoxTimerNum->isChecked()){ byTmp = ui->spinBoxTimerNum->value(); jsonObject["sync_timer_num"] = byTmp; byFlag = 1; } //定时1开始时间 if(ui->checkBoxTimer1Start->isChecked()){ myTime = ui->timeEdit1Start->time(); wTime = myTime.hour(); byMinute = myTime.minute(); wTime <<= 8; wTime |= byMinute; jsonObject.insert("sync_timer1_start", static_cast(wTime)); // 插入为int byFlag = 1; } //定时1停止时间 if(ui->checkBoxTimer1Stop->isChecked()){ myTime = ui->timeEdit1Stop->time(); wTime = myTime.hour(); byMinute = myTime.minute(); wTime <<= 8; wTime |= byMinute; jsonObject.insert("sync_timer1_stop", static_cast(wTime)); // 插入为int byFlag = 1; } //定时2开始时间 if(ui->checkBoxTimer2Start->isChecked()){ myTime = ui->timeEdit2Start->time(); wTime = myTime.hour(); byMinute = myTime.minute(); wTime <<= 8; wTime |= byMinute; jsonObject.insert("sync_timer2_start", static_cast(wTime)); // 插入为int byFlag = 1; } //定时2停止时间 if(ui->checkBoxTimer2Stop->isChecked()){ myTime = ui->timeEdit2Stop->time(); wTime = myTime.hour(); byMinute = myTime.minute(); wTime <<= 8; wTime |= byMinute; jsonObject.insert("sync_timer2_stop", static_cast(wTime)); // 插入为int byFlag = 1; } //将参数发送给主控模块 if(byFlag){ emit SignalUploadBtsBaseParamUpdate("guiUploadBtsBaseParamUpdate", jsonObject);//发送post请求 }else{ QMessageBox::information(this,"提示", "请至少选择一项管理项"); } switchBtnFlag(true); return; }