123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487 |
- #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<MainDlg*>(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<int>(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<int>(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<int>(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<int>(wTime)); // 插入为int
- byFlag = 1;
- }
- //将参数发送给主控模块
- if(byFlag){
- emit SignalUploadBtsBaseParamUpdate("guiUploadBtsBaseParamUpdate", jsonObject);//发送post请求
- }else{
- QMessageBox::information(this,"提示", "请至少选择一项管理项");
- }
- switchBtnFlag(true);
- return;
- }
|