123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497 |
- #include "oambaseparam.h"
- #include "ui_oambaseparam.h"
- #include "maindlg.h"
- extern quint8 gMain_bySoftType;
- OamBaseParam::OamBaseParam(QWidget *parent)
- : QDialog(parent)
- , ui(new Ui::OamBaseParam)
- {
- ui->setupUi(this);
- m_pMainDlg = static_cast<MainDlg*>(parent);//保存主窗口指针
- init();
- }
- OamBaseParam::~OamBaseParam()
- {
- delete ui;
- }
- void OamBaseParam::init(){
- m_dwDeviceType = m_pMainDlg->getDeviceType();
- initUi();//增加串口下拉框数据
- configSignalSlot();//配置信号与槽
- }
- //初始化设备类型下来框数据
- void OamBaseParam::initUi(){
- ui->comboBoxDeviceType->addItem("请选择", 0);
- ui->comboBoxDeviceType->addItem("声波基站", 1);
- ui->comboBoxDeviceType->addItem("同步基站", 2);
- ui->comboBoxDeviceType->addItem("同步中继", 3);
- ui->comboBoxDeviceType->setCurrentIndex(0);
- //禁用配置按钮
- if(gMain_bySoftType == MAIN_SOFT_TYPE_PRO){
- ui->pushButtonConfig->setEnabled(false);
- }
- //更新界面
- updateUi();
- }
- //更新界面
- void OamBaseParam::updateUi(){
- m_dwDeviceType = m_pMainDlg->getDeviceType();
- if(m_dwDeviceType!= 0){//同步基站
- ui->checkBoxBleBtsName->setDisabled(true);
- ui->checkBoxBleBtsName->setChecked(false);
- ui->lineEditBleBtsName->setDisabled(true);
- ui->pushButtonImportBleBtsName->setDisabled(true);
- }else{//声波基站
- ui->checkBoxBleBtsName->setDisabled(false);
- ui->lineEditBleBtsName->setDisabled(false);
- ui->pushButtonImportBleBtsName->setDisabled(false);
- }
- }
- //配置界面按钮信号与槽
- void OamBaseParam::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->queryBaseParam);//查询参数
- connect(ui->pushButtonConfig, &QPushButton::clicked, this,&this->configBaseParam);//设置参数
- connect(ui->pushButtonUpload, &QPushButton::clicked, this,&this->uploadData);//上传参数
- connect(ui->pushButtonImportBleBtsName, &QPushButton::clicked, this,&this->importBleName);//导入蓝牙基站名称
- //connect(ui->pushButtonImportWifiBtsName, &QPushButton::clicked, this,&this->configBaseParam);//导入wifi基站名称
- //将消息发送到主控模块
- 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 OamBaseParam::selectAllItem(){
- ui->checkBoxProjectId->setChecked(true);
- ui->checkBoxDeviceType->setChecked(true);
- ui->checkBoxGenNo->setChecked(true);
- ui->checkBoxDeviceModel->setChecked(true);
- ui->checkBoxSoftVersion->setChecked(true);
- if(m_dwDeviceType == 0){
- ui->checkBoxBleBtsName->setChecked(true);
- }
- }
- //全不选
- void OamBaseParam::selectAllNoItem(){
- ui->checkBoxProjectId->setChecked(false);
- ui->checkBoxDeviceType->setChecked(false);
- ui->checkBoxGenNo->setChecked(false);
- ui->checkBoxDeviceModel->setChecked(false);
- ui->checkBoxSoftVersion->setChecked(false);
- ui->checkBoxBleBtsName->setChecked(false);
- }
- //清空参数
- void OamBaseParam::clearAllItem(){
- QString strText = "";
- ui->lineEditProjectId->setText(strText);
- ui->comboBoxDeviceType->setCurrentIndex(0);
- ui->lineEditGenNo->setText(strText);
- ui->lineEditDeviceModel->setText(strText);
- ui->lineEditSoftVersion->setText(strText);
- ui->lineEditBleBtsName->setText(strText);
- }
- //切换按钮状态
- //byFlag:开关状态,true:可用,false:不可用
- void OamBaseParam::switchBtnFlag(bool byFlag){
- ui->pushButtonAllSel->setEnabled(byFlag);
- ui->pushButtonAllNoSel->setEnabled(byFlag);
- ui->pushButtonClear->setEnabled(byFlag);
- ui->pushButtonQuery->setEnabled(byFlag);
- ui->pushButtonConfig->setEnabled(byFlag);
- ui->pushButtonImportBleBtsName->setEnabled(byFlag);
- //禁用配置按钮
- if(gMain_bySoftType == MAIN_SOFT_TYPE_PRO){
- ui->pushButtonConfig->setEnabled(false);
- }
- }
- //显示基本参数
- void OamBaseParam::showBaseParam(LTV_T *pstData){
- quint8 byLen = pstData->wLen - 4;
- QString strText = "";
- quint8 byTmp = 0;
- quint32 dwTmp = 0;
- //将数据显示在界面上
- if(pstData->wTag == 0x0001){//设备类型
- memcpy(&byTmp, pstData->abyData, byLen);
- ui->comboBoxDeviceType->setCurrentIndex(byTmp);
- }else if(pstData->wTag == 0x0002){//设备生产序列号
- strText = QString::fromLocal8Bit((char *)pstData->abyData, strlen((char*)pstData->abyData));
- strText = strText.trimmed();
- ui->lineEditGenNo->setText(strText);
- }else if(pstData->wTag == 0x0003){//设备型号
- strText = QString::fromLocal8Bit((char *)pstData->abyData, strlen((char*)pstData->abyData));
- strText = strText.trimmed();
- ui->lineEditDeviceModel->setText(strText);
- }else if(pstData->wTag == 0x0004){//软件版本
- strText = QString::fromLocal8Bit((char *)pstData->abyData, strlen((char*)pstData->abyData));
- strText = strText.trimmed();
- ui->lineEditSoftVersion->setText(strText);
- }else if(pstData->wTag == 0x0005){//项目编号
- memcpy(&dwTmp, pstData->abyData, byLen);
- QString hexStr = QString::number(dwTmp, 16);
- hexStr = hexStr.rightJustified(8, '0', Qt::AlignRight);
- hexStr = hexStr.toUpper();
- ui->lineEditProjectId->setText(hexStr);
- m_pMainDlg->setProjectId(dwTmp);//保存项目编号
- }else if(pstData->wTag == 0x0006){//ble名称
- strText = QString::fromLocal8Bit((char *)pstData->abyData, strlen((char*)pstData->abyData));
- strText = strText.trimmed();
- ui->lineEditBleBtsName->setText(strText);
- m_stOamBase.bleBtsName = strText;
- }/*else if(pstData->wTag == 0x0007){//wifi名称
- strText = QString::fromUtf8((char *)pstData->abyData, byLen);
- strText = strText.trimmed();
- ui->lineEditWifiBtsName->setText(strText);
- m_stOamBase.wifiBtsName = strText;
- }*/
- return;
- }
- //查询基本参数
- void OamBaseParam::queryBaseParam(){
- quint8 abyData[PS_FRAME_MCPA_PAYLOAD_LEN];
- quint8 *pbyHead = NULL;
- quint16 wLen = 0;
- LTV_T stLtv;
- //禁用按钮
- switchBtnFlag(false);
- memset(abyData, 0, PS_FRAME_MCPA_PAYLOAD_LEN);
- memset((void*)&stLtv, 0, sizeof(LTV_T));
- pbyHead = abyData;
- if(ui->checkBoxProjectId->isChecked()){//项目编号
- stLtv.wLen = 8;
- stLtv.wTag = ORDER_DEVICE_PROJECT_ID;
- memcpy(pbyHead, &stLtv, stLtv.wLen);
- wLen = wLen + stLtv.wLen;
- pbyHead = pbyHead + stLtv.wLen;
- }
- if(ui->checkBoxDeviceType->isChecked()){//选择了设备类型
- stLtv.wLen = 5;
- stLtv.wTag = ORDER_DEVICE_TYPE;
- memcpy(pbyHead, &stLtv, stLtv.wLen);
- wLen = wLen + stLtv.wLen;
- pbyHead = pbyHead + stLtv.wLen;
- }
- if(ui->checkBoxGenNo->isChecked()){//选择设备生产序列号
- stLtv.wLen = 24;
- stLtv.wTag = ORDER_DEVICE_SERIAL_NO;
- memcpy(pbyHead, &stLtv, stLtv.wLen);
- wLen = wLen + stLtv.wLen;
- pbyHead = pbyHead + stLtv.wLen;
- }
- if(ui->checkBoxDeviceModel->isChecked()){//选择设备型号
- stLtv.wLen = 24;
- stLtv.wTag = ORDER_DEVICE_MODEL;
- memcpy(pbyHead, &stLtv, stLtv.wLen);
- wLen = wLen + stLtv.wLen;
- pbyHead = pbyHead + stLtv.wLen;
- }
- if(ui->checkBoxSoftVersion->isChecked()){//软件版本
- stLtv.wLen = 24;
- stLtv.wTag = ORDER_DEVICE_MCU_VERSION;
- memcpy(pbyHead, &stLtv, stLtv.wLen);
- wLen = wLen + stLtv.wLen;
- pbyHead = pbyHead + stLtv.wLen;
- }
- if(ui->checkBoxBleBtsName->isChecked()){//蓝牙名称
- stLtv.wLen = 32;
- stLtv.wTag = ORDER_DEVICE_BLE_BTS_NAME;
- memcpy(pbyHead, &stLtv, stLtv.wLen);
- wLen = wLen + stLtv.wLen;
- pbyHead = pbyHead + stLtv.wLen;
- }
- // if(ui->checkBoxWifiBtsName->isChecked()){//wifi名称
- // stLtv.wLen = 32;
- // stLtv.wTag = 0x0007;
- // 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 OamBaseParam::configBaseParam(){
- quint8 abyData[PS_FRAME_MCPA_PAYLOAD_LEN];
- quint8 *pbyHead = abyData;
- quint16 wLen = 0;
- LTV_T stLtv;
- QByteArray tmp;
- quint8 byDeviceType = 0;
- QString stText = "";
- quint32 dwProjectId = 0;
- //禁用按钮
- switchBtnFlag(false);
- memset(abyData, 0, PS_FRAME_MCPA_PAYLOAD_LEN);
- memset((void*)&stLtv, 0, sizeof(LTV_T));
- if(ui->checkBoxDeviceType->isChecked()){//选择了设备类型
- memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN);
- stLtv.wLen = 5;
- stLtv.wTag = ORDER_DEVICE_TYPE;
- byDeviceType = ui->comboBoxDeviceType->currentIndex();
- memcpy((void*)stLtv.abyData, &byDeviceType, 1);
- memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
- wLen += stLtv.wLen;
- pbyHead = pbyHead + stLtv.wLen;
- }
- if(ui->checkBoxGenNo->isChecked()){//选择设备生产序列号
- memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN);
- stLtv.wLen = 24;
- stLtv.wTag = ORDER_DEVICE_SERIAL_NO;
- stText = ui->lineEditGenNo->text().trimmed();
- tmp = stText.toUtf8();
- memcpy((void*)stLtv.abyData, tmp.constData(), tmp.size());
- memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
- wLen += stLtv.wLen;
- pbyHead = pbyHead + stLtv.wLen;
- }
- if(ui->checkBoxDeviceModel->isChecked()){//选择设备型号
- memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN);
- stLtv.wLen = 24;
- stLtv.wTag = ORDER_DEVICE_MODEL;
- stText = ui->lineEditDeviceModel->text().trimmed();
- tmp = stText.toUtf8();
- memcpy((void*)stLtv.abyData, tmp.constData(), tmp.size());
- memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
- wLen += stLtv.wLen;
- pbyHead = pbyHead + stLtv.wLen;
- }
- if(ui->checkBoxSoftVersion->isChecked()){//软件版本
- memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN);
- stLtv.wLen = 24;
- stLtv.wTag = ORDER_DEVICE_MCU_VERSION;
- stText = ui->lineEditSoftVersion->text().trimmed();
- tmp = stText.toUtf8();
- memcpy((void*)stLtv.abyData, tmp.constData(), tmp.size());
- memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
- wLen += stLtv.wLen;
- pbyHead = pbyHead + stLtv.wLen;
- }
- //项目编号
- if(ui->checkBoxProjectId->isChecked()){
- memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN);
- stLtv.wLen = 12;
- stLtv.wTag = ORDER_DEVICE_PROJECT_ID;
- stText = ui->lineEditProjectId->text().trimmed();
- QByteArray hexArray = QByteArray::fromHex(stText.toUtf8()); // 将16进制字符串转换为QByteArray,确保以16进制形式解析
- QDataStream stream(&hexArray, QIODevice::ReadOnly);// 使用QDataStream来读取转换后的QByteArray
- stream>>dwProjectId;
- memcpy((void*)stLtv.abyData, &dwProjectId, sizeof(quint32));
- memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
- wLen += stLtv.wLen;
- pbyHead = pbyHead + stLtv.wLen;
- m_pMainDlg->setProjectId(dwProjectId);//保存项目编号
- }
- if(ui->checkBoxBleBtsName->isChecked()){
- memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN);
- stLtv.wLen = 32;
- stLtv.wTag = ORDER_DEVICE_BLE_BTS_NAME;
- stText = ui->lineEditBleBtsName->text().trimmed();
- tmp = stText.toUtf8();
- if(tmp.size() > 28 || tmp.size() <= 0){
- QMessageBox::information(this,"提示", "请先导入蓝牙名称");
- switchBtnFlag(true);//启用按钮
- return;
- }
- memcpy((void*)stLtv.abyData, tmp.constData(), tmp.size());
- memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
- wLen += stLtv.wLen;
- pbyHead = pbyHead + stLtv.wLen;
- m_stOamBase.bleBtsName = stText;
- }
- // if(ui->checkBoxWifiBtsName->isChecked()){//wifi名称
- // stLtv.wLen = 32;
- // stLtv.wTag = 0x0007;
- // stText = ui->lineEditWifiBtsName->text().trimmed();
- // tmp = stText.toUtf8();
- // // if(tmp.size() > 28 || tmp.size() <= 0){
- // // QMessageBox::information(this,"提示", "请先导入wifi名称");
- // // return;
- // // }
- // memcpy((void*)stLtv.abyData, tmp.constData(), tmp.size());
- // memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
- // wLen += stLtv.wLen;
- // pbyHead = pbyHead + stLtv.wLen;
- // m_stOamBase.wifiBtsName = stText;
- // }
- 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 OamBaseParam::importBleName(){
- 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));
- stLtv.wLen = 32;
- stLtv.wTag = 0x0006;
- memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
- wLen = wLen + stLtv.wLen;
- pbyHead = pbyHead + stLtv.wLen;
- //将参数发送给主控模块
- emit SignalSendQueryMsg(abyData, wLen);
- //启用按钮
- switchBtnFlag(true);
- return;
- }
- //上传数据到管理中心
- void OamBaseParam::uploadData(){
- QJsonObject jsonObject; //定义一个json对象
- quint8 byTmp = 0;
- QString strText = "";
- quint32 dwProjectId = 0;
- //禁用按钮
- switchBtnFlag(false);
- //设备类型
- if(ui->checkBoxDeviceType->isChecked()){
- byTmp = ui->comboBoxDeviceType->currentIndex();
- jsonObject["bts_type"] = byTmp;
- }
- //选择设备生产序列号
- if(ui->checkBoxGenNo->isChecked()){
- strText = ui->lineEditGenNo->text().trimmed();
- jsonObject["serial_number"] = strText;
- }
- if(ui->checkBoxDeviceModel->isChecked()){//选择设备型号
- strText = ui->lineEditDeviceModel->text().trimmed();
- jsonObject["bts_model"] = strText;
- }
- if(ui->checkBoxSoftVersion->isChecked()){//软件版本
- strText = ui->lineEditSoftVersion->text().trimmed();
- jsonObject["soft_version"] = strText;
- }
- if(ui->checkBoxProjectId->isChecked()){//项目编号
- strText = ui->lineEditProjectId->text().trimmed();
- QByteArray hexArray = QByteArray::fromHex(strText.toUtf8()); // 将16进制字符串转换为QByteArray,确保以16进制形式解析
- QDataStream stream(&hexArray, QIODevice::ReadOnly);// 使用QDataStream来读取转换后的QByteArray
- stream>>dwProjectId;
- jsonObject["project_id"] = QJsonValue::fromVariant(QVariant(static_cast<quint64>(dwProjectId)));
- m_pMainDlg->setProjectId(dwProjectId);//保存项目编号
- }
- if(ui->checkBoxBleBtsName->isChecked()){
- strText = ui->lineEditBleBtsName->text().trimmed();
- jsonObject["ble_name"] = strText;
- }
- //启用按钮
- switchBtnFlag(true);
- //发送post请求
- emit SignalUploadBtsBaseParamUpdate("guiUploadBtsBaseParamUpdate", jsonObject);
- return;
- }
|