123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521 |
- #include "oambtsparam.h"
- #include "ui_oambtsparam.h"
- #include "maindlg.h"
- #include "includes.h"
- #include <QJsonObject>
- OamBtsParam::OamBtsParam(QWidget *parent)
- : QDialog(parent)
- , ui(new Ui::OamBtsParam)
- {
- ui->setupUi(this);
- m_pMainDlg = static_cast<MainDlg*>(parent);//保存主窗口指针
- m_dwDeviceType = m_pMainDlg->getDeviceType();
- initUi();
- 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->pushButtonUploadParam, &QPushButton::clicked, this,&this->uploadBtsBaseParamAdd);//上传参数
- //connect(ui->pushButtonImportProjectId, &QPushButton::clicked, this,&this->getProjectId);//导入项目编号
- //将消息发送到主控模块
- connect(this, &this->SignalSendQueryMsg, m_pMainDlg, &m_pMainDlg->slotOamSendQueryMsg);
- connect(this, &this->SignalSendConfigMsg, m_pMainDlg, &m_pMainDlg->slotOamSendConfigMsg);
- connect(this, &this->SignalUploadBtsBaseParamAdd, m_pMainDlg, &m_pMainDlg->slotUploadBtsBaseParamAdd);
- }
- OamBtsParam::~OamBtsParam()
- {
- delete ui;
- }
- //初始化UI
- void OamBtsParam::initUi(){
- QString strText = "";
- //初始化载波ID下拉框
- ui->comboBoxCarrierId->addItem("请选择", 0);
- for(quint8 i = 1; i < 10; i++){
- strText = QString::number(i) + "号载波";
- ui->comboBoxCarrierId->addItem(strText, i);
- }
- //初始化时隙下拉框
- ui->comboBoxTimeSlot->addItem("请选择", 0);
- for(quint8 i = 1; i < 5; i++){
- strText = QString::number(i) + "号时隙";
- ui->comboBoxTimeSlot->addItem(strText, i);
- }
- //定位类型
- ui->comboBoxLocationType->addItem("请选择", 0);
- ui->comboBoxLocationType->addItem("一维定位", 1);
- ui->comboBoxLocationType->addItem("二维定位", 2);
- ui->comboBoxLocationType->addItem("融合定位", 3);
- updateUi();
- }
- //更新页面
- void OamBtsParam::updateUi(){
- m_dwDeviceType = m_pMainDlg->getDeviceType();
- //声波基站
- if(m_dwDeviceType == 0){
- ui->checkBoxBtsId->setDisabled(false);
- ui->checkBoxCarrierId->setDisabled(false);
- ui->checkBoxTimeslot->setDisabled(false);
- ui->checkBoxLocationType->setDisabled(false);
- ui->checkBoxTwoBtsNum->setDisabled(false);
- ui->checkBoxTwoBtsList->setDisabled(false);
- ui->spinBoxBtsId->setDisabled(false);
- ui->comboBoxCarrierId->setDisabled(false);
- ui->comboBoxTimeSlot->setDisabled(false);
- ui->comboBoxLocationType->setDisabled(false);
- ui->spinBoxTwoBtsNum->setDisabled(false);
- ui->lineEditTwoBtsList->setDisabled(false);
- }else{//同步站或中继站
- ui->checkBoxBtsId->setDisabled(false);
- ui->checkBoxCarrierId->setChecked(false);
- ui->checkBoxCarrierId->setDisabled(true);
- ui->checkBoxTimeslot->setChecked(false);
- ui->checkBoxTimeslot->setDisabled(true);
- ui->checkBoxLocationType->setChecked(false);
- ui->checkBoxLocationType->setDisabled(true);
- ui->checkBoxTwoBtsNum->setChecked(false);
- ui->checkBoxTwoBtsNum->setDisabled(true);
- ui->checkBoxTwoBtsList->setChecked(false);
- ui->checkBoxTwoBtsList->setDisabled(true);
- ui->spinBoxBtsId->setDisabled(false);
- ui->comboBoxCarrierId->setDisabled(true);
- ui->comboBoxTimeSlot->setDisabled(true);
- ui->comboBoxLocationType->setDisabled(true);
- ui->spinBoxTwoBtsNum->setDisabled(true);
- ui->lineEditTwoBtsList->setDisabled(true);
- }
- }
- //全选
- void OamBtsParam::selectAllItem(){
- ui->checkBoxBtsId->setChecked(true);
- //声波基站
- if(m_dwDeviceType == 0){
- ui->checkBoxCarrierId->setChecked(true);
- ui->checkBoxTimeslot->setChecked(true);
- ui->checkBoxLocationType->setChecked(true);
- ui->checkBoxTwoBtsNum->setChecked(true);
- ui->checkBoxTwoBtsList->setChecked(true);
- }else{//同步基站
- ui->checkBoxCarrierId->setChecked(false);
- ui->checkBoxTimeslot->setChecked(false);
- ui->checkBoxLocationType->setChecked(false);
- ui->checkBoxTwoBtsNum->setChecked(false);
- ui->checkBoxTwoBtsList->setChecked(false);
- }
- }
- //全不选
- void OamBtsParam::selectAllNoItem(){
- ui->checkBoxBtsId->setChecked(false);
- ui->checkBoxCarrierId->setChecked(false);
- ui->checkBoxTimeslot->setChecked(false);
- ui->checkBoxLocationType->setChecked(false);
- ui->checkBoxTwoBtsNum->setChecked(false);
- ui->checkBoxTwoBtsList->setChecked(false);
- }
- //清空参数
- void OamBtsParam::clearAllItem(){
- QString strText = "";
- ui->spinBoxBtsId->setValue(10000);
- ui->comboBoxCarrierId->setCurrentIndex(0);
- ui->comboBoxTimeSlot->setCurrentIndex(0);
- ui->comboBoxLocationType->setCurrentIndex(0);
- ui->spinBoxTwoBtsNum->setValue(0);
- ui->lineEditTwoBtsList->setText(strText);
- }
- //切换按钮状态
- //byFlag:开关状态,true:可用,false:不可用
- void OamBtsParam::switchBtnFlag(bool byFlag){
- ui->pushButtonAllSel->setEnabled(byFlag);
- ui->pushButtonAllNoSel->setEnabled(byFlag);
- ui->pushButtonClear->setEnabled(byFlag);
- ui->pushButtonQuery->setEnabled(byFlag);
- ui->pushButtonConfig->setEnabled(byFlag);
- }
- //查询参数
- void OamBtsParam::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->checkBoxBtsId->isChecked()){//基站ID
- stLtv.wLen = 8;
- stLtv.wTag = ORDER_BTS_ID;
- memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
- wLen = wLen + stLtv.wLen;
- pbyHead = pbyHead + stLtv.wLen;
- }
- if(ui->checkBoxCarrierId->isChecked()){//载波ID
- stLtv.wLen = 5;
- stLtv.wTag = ORDER_BTS_CARRIER_ID;
- memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
- wLen = wLen + stLtv.wLen;
- pbyHead = pbyHead + stLtv.wLen;
- }
- if(ui->checkBoxTimeslot->isChecked()){//时隙
- stLtv.wLen = 5;
- stLtv.wTag = ORDER_BTS_TIMESLOT;
- memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
- wLen = wLen + stLtv.wLen;
- pbyHead = pbyHead + stLtv.wLen;
- }
- if(ui->checkBoxLocationType->isChecked()){//定位类型
- stLtv.wLen = 5;
- stLtv.wTag = ORDER_BTS_LOCATION_TYPE;
- memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
- wLen = wLen + stLtv.wLen;
- pbyHead = pbyHead + stLtv.wLen;
- }
- if(ui->checkBoxTwoBtsNum->isChecked()){//两站数量
- stLtv.wLen = 5;
- stLtv.wTag = ORDER_BTS_TWO_BTS_NUM;
- memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
- wLen = wLen + stLtv.wLen;
- pbyHead = pbyHead + stLtv.wLen;
- }
- if(ui->checkBoxTwoBtsList->isChecked()){//两站列表
- stLtv.wLen = 68;
- stLtv.wTag = ORDER_BTS_TWO_BTS_LIST;
- 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 OamBtsParam::showParam(LTV_T *pstData){
- quint8 byLen = pstData->wLen - 4;
- quint16 wTag = pstData->wTag;
- QString strText = "";
- quint32 dwTmp = 0;
- quint8 byTmp = 0;
- quint8 byIndex = 0;
- quint16 wIndex = 0;
- //将数据显示在界面上
- if(wTag == ORDER_BTS_ID){//基站ID
- memcpy(&dwTmp, pstData->abyData, byLen);
- ui->spinBoxBtsId->setValue(dwTmp);
- m_dwBtsId = dwTmp;//保存基站ID
- m_pMainDlg->mainDlgSetBtsId(dwTmp);
- }else if(wTag == ORDER_BTS_CARRIER_ID){//载波ID
- memcpy(&byTmp, pstData->abyData, byLen);
- ui->comboBoxCarrierId->setCurrentIndex(byTmp);
- }else if(wTag == ORDER_BTS_TIMESLOT){//时隙
- memcpy(&byTmp, pstData->abyData, byLen);
- ui->comboBoxTimeSlot->setCurrentIndex(byTmp);
- }else if(wTag == ORDER_BTS_LOCATION_TYPE){//定位类型
- memcpy(&byTmp, pstData->abyData, byLen);
- ui->comboBoxLocationType->setCurrentIndex(byTmp);
- }else if(wTag == ORDER_BTS_TWO_BTS_NUM){//两站数量
- memcpy(&byTmp, pstData->abyData, byLen);
- ui->spinBoxTwoBtsNum->setValue(byTmp);
- }else if(wTag == ORDER_BTS_TWO_BTS_LIST){//两站列表
- strText = QString::fromLocal8Bit((char *)pstData->abyData, strlen((char*)pstData->abyData));
- strText = strText.trimmed();//去掉首尾空格
- ui->lineEditTwoBtsList->setText(strText);
- }
- return;
- }
- //配置参数
- void OamBtsParam::configParam(){
- quint8 abyData[PS_FRAME_MCPA_PAYLOAD_LEN];
- quint8 *pbyHead = abyData;
- quint16 wLen = 0;
- LTV_T stLtv;
- QString stText = "";
- quint32 dwBtsId = 0;//基站ID
- quint8 byTmp = 0;
- QVariant varTmp;
- QByteArray byteTmp;
- QString strText = "";
- QByteArray baData;
- quint8 byCharLen = 0;
- //禁用按钮
- switchBtnFlag(false);
- memset(abyData, 0, PS_FRAME_MCPA_PAYLOAD_LEN);
- memset((void*)&stLtv, 0, sizeof(LTV_T));
- //基站ID
- if(ui->checkBoxBtsId->isChecked()){
- memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN);
- stLtv.wLen = 8;
- stLtv.wTag = ORDER_BTS_ID;
- dwBtsId = ui->spinBoxBtsId->value();
- memcpy((void*)stLtv.abyData, &dwBtsId, (stLtv.wLen - 4));
- memcpy(pbyHead, &stLtv, stLtv.wLen);
- wLen = wLen + stLtv.wLen;
- pbyHead = pbyHead + stLtv.wLen;
- m_dwBtsId = dwBtsId;//保存基站ID
- m_pMainDlg->mainDlgSetBtsId(dwBtsId);
- }
- //载波ID
- if(ui->checkBoxCarrierId->isChecked()){
- memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN);
- stLtv.wLen = 5;
- stLtv.wTag = ORDER_BTS_CARRIER_ID;
- varTmp = ui->comboBoxCarrierId->currentData();
- byTmp = (quint8)varTmp.toInt();
- if(byTmp <= 0){
- QMessageBox::critical(this, "提示", "请选择基站载波");
- switchBtnFlag(true);
- return;
- }
- memcpy((void*)stLtv.abyData, &byTmp, (stLtv.wLen - 4));
- memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
- wLen = wLen + stLtv.wLen;
- pbyHead = pbyHead + stLtv.wLen;
- }
- //时隙
- if(ui->checkBoxTimeslot->isChecked()){
- memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN);
- stLtv.wLen = 5;
- stLtv.wTag = ORDER_BTS_TIMESLOT;
- varTmp = ui->comboBoxTimeSlot->currentData();
- byTmp = (quint8)varTmp.toInt();
- if(byTmp <= 0){
- QMessageBox::critical(this, "提示", "请选择基站时隙");
- 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(ui->checkBoxLocationType->isChecked()){
- memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN);
- stLtv.wLen = 5;
- stLtv.wTag = ORDER_BTS_LOCATION_TYPE;
- varTmp = ui->comboBoxLocationType->currentData();
- byTmp = (quint8)varTmp.toInt();
- if(byTmp <= 0){
- QMessageBox::critical(this, "提示", "请选择定位类型");
- 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(ui->checkBoxTwoBtsNum->isChecked()){
- memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN);
- stLtv.wLen = 5;
- stLtv.wTag = ORDER_BTS_TWO_BTS_NUM;
- byTmp = ui->spinBoxTwoBtsNum->value();
- memcpy((void*)stLtv.abyData, &byTmp, (stLtv.wLen - 4));
- memcpy(pbyHead, &stLtv, stLtv.wLen);
- wLen = wLen + stLtv.wLen;
- pbyHead = pbyHead + stLtv.wLen;
- }
- //两站列表
- if(ui->checkBoxTwoBtsList->isChecked()){
- memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN);
- stLtv.wLen = 68;
- stLtv.wTag = ORDER_BTS_TWO_BTS_LIST;
- strText = ui->lineEditTwoBtsList->text();
- strText = strText.trimmed();
- baData = strText.toLocal8Bit();
- byCharLen = baData.size();
- if(byCharLen > 48){
- QMessageBox::information(this, "提示", "两站列表字符长度超过48位");
- switchBtnFlag(true);//启用按钮
- return;
- }
- memcpy((void*)stLtv.abyData, baData, byCharLen);
- 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 OamBtsParam::uploadBtsBaseParamAdd(){
- QJsonObject jsonObject; //定义一个json对象
- QVariant varTmp;//下来框中的用户数据
- quint8 byTmp = 0;
- QString strText = "";
- quint32 dwBtsId = 0;
- quint8 byTwoNum = 0;
- QByteArray baData;
- quint8 byCharLen = 0;
- //禁用按钮
- switchBtnFlag(false);
- //基站ID
- if(ui->checkBoxBtsId->isChecked()){
- dwBtsId = ui->spinBoxBtsId->value();
- if(dwBtsId < 1000){
- QMessageBox::information(this,"提示", "请输入基站编号");
- switchBtnFlag(true);
- return;
- }
- jsonObject["bts_id"] = QJsonValue::fromVariant(QVariant(static_cast<quint64>(dwBtsId)));
- m_dwBtsId = dwBtsId;//保存基站ID
- m_pMainDlg->mainDlgSetBtsId(dwBtsId);
- }
- //载波ID
- if(ui->checkBoxCarrierId->isChecked()){
- varTmp = ui->comboBoxCarrierId->currentData();
- byTmp = (quint8)varTmp.toInt();
- if(byTmp <= 0){
- QMessageBox::critical(this, "提示", "请选择载波编号");
- switchBtnFlag(true);
- return;
- }
- jsonObject["carrier_id"] = byTmp;
- }
- //时隙
- if(ui->checkBoxTimeslot->isChecked()){
- varTmp = ui->comboBoxTimeSlot->currentData();
- byTmp = (quint8)varTmp.toInt();
- if(byTmp <= 0){
- QMessageBox::critical(this, "提示", "请选择基站时隙");
- switchBtnFlag(true);
- return;
- }
- jsonObject["timeslot"] = byTmp;
- }
- //定位类型
- if(ui->checkBoxLocationType->isChecked()){
- varTmp = ui->comboBoxLocationType->currentData();
- byTmp = (quint8)varTmp.toInt();
- if(byTmp <= 0){
- QMessageBox::critical(this, "提示", "请选择定位类型");
- switchBtnFlag(true);
- return;
- }
- jsonObject["location_type"] = byTmp;
- }
- //两站定位数量
- if(ui->checkBoxTwoBtsNum->isChecked()){
- byTwoNum = ui->spinBoxTwoBtsNum->value();
- jsonObject["two_bts_num"] = byTwoNum;
- }
- //两站定位基站列表
- if(ui->checkBoxTwoBtsList->isChecked()){
- strText = ui->lineEditTwoBtsList->text();
- strText = strText.trimmed();
- baData = strText.toLocal8Bit();
- byCharLen = baData.size();
- if(byCharLen > 64){
- QMessageBox::information(this, "提示", "两站列表字符长度超过64位");
- switchBtnFlag(true);
- return;
- }
- jsonObject["two_bts_list"] = strText;
- }
- //启用按钮
- switchBtnFlag(true);
- //发送post请求给网管中心
- emit SignalUploadBtsBaseParamAdd("guiUploadBtsBaseParamAdd", jsonObject);
- }
- //获得基站ID
- quint32 OamBtsParam::GetBtsId(){
- return m_dwBtsId;
- }
|