maindlg.cpp 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664
  1. #include "maindlg.h"
  2. #include "ui_maindlg.h"
  3. #include "includes.h"
  4. #include <QIODeviceBase>
  5. extern quint8 gMain_bySoftType;
  6. MainDlg::MainDlg(QWidget *parent)
  7. : QMainWindow(parent)
  8. , ui(new Ui::MainDlg)
  9. {
  10. ui->setupUi(this);
  11. Init();//模块初始化
  12. }
  13. MainDlg::~MainDlg()
  14. {
  15. delete ui;
  16. }
  17. //窗口关闭事件
  18. void MainDlg::closeEvent(QCloseEvent *event){
  19. m_pUart->CloseUart();
  20. event->accept();
  21. }
  22. //模块初始化
  23. void MainDlg::Init(){
  24. m_dwDeviceType = 0;//设备类型
  25. m_dwTabIndex = 0;//页面
  26. //初始化通信包号
  27. m_byPacketNo = MAINDLG_DEFAULT_PACKET_NO;
  28. memset(m_abyTmpData, 0, PS_FRAME_MAX_LEN);
  29. //隐藏关闭串口
  30. ui->pushButtonCloseUart->setVisible(false);
  31. //创建串口对象
  32. m_pUart = new Uart(this);
  33. //创建协议栈对象
  34. m_objPs = new Ps(this);
  35. //创建网络对象
  36. m_pHttpReq = new HttpReq(this);
  37. //界面初始化
  38. initUi();
  39. //配置消息和槽函数
  40. configSignalAndSlot();
  41. //获得本机可用串口
  42. getUartNameList();
  43. //配置网络模块
  44. configHttpReq();
  45. //初始化定时器
  46. m_pTimer = new QTimer();
  47. m_pUpgradeTimer = new QTimer();//升级定时器
  48. m_pTimer->setInterval(3000);//3秒超时
  49. m_pUpgradeTimer->setInterval(5000);//5秒超时
  50. connect(this->ui->comboBoxDeviceType, &QComboBox::currentIndexChanged, this, &MainDlg::slotDeviceTypeChanged);
  51. connect(this->ui->tabWidgetOamItem, &QTabWidget::currentChanged, this, &MainDlg::slotTabSwitch);
  52. connect(m_pTimer, &QTimer::timeout, this, &MainDlg::Timeout2000Slot);
  53. connect(m_pUpgradeTimer, &QTimer::timeout, this, &MainDlg::Timeout5000Slot);
  54. connect(this, &this->signalNoticeUpgradeOk,m_pOamUpgrade, &m_pOamUpgrade->slotNoticeUpgradeOk);
  55. connect(this, &this->signalNoticeUpgradeFail,m_pOamUpgrade, &m_pOamUpgrade->slotNoticeUpgradeFail);
  56. connect(this, &this->signalNoticeUpgradeTimeout,m_pOamUpgrade, &m_pOamUpgrade->slotNoticeUpgradeTimeout);
  57. }
  58. //界面初始化
  59. void MainDlg::initUi(){
  60. QString strText = "";
  61. //初始化设备类型下拉框
  62. ui->comboBoxDeviceType->addItem("声波基站", 0);
  63. ui->comboBoxDeviceType->addItem("同步基站", 1);
  64. ui->comboBoxDeviceType->addItem("同步中继", 2);
  65. //删除全部tap页
  66. while(ui->tabWidgetOamItem->count() >0){
  67. QWidget *pTmp = ui->tabWidgetOamItem->widget(0);
  68. ui->tabWidgetOamItem->removeTab(0);
  69. delete pTmp;
  70. }
  71. //系统参数
  72. m_pSysConfig = new sysconfig(this);
  73. ui->tabWidgetOamItem->addTab(m_pSysConfig, "系统参数");
  74. //设备参数
  75. m_pOamBaseParam = new OamBaseParam(this);
  76. ui->tabWidgetOamItem->addTab(m_pOamBaseParam, "设备参数");
  77. //网管参数
  78. m_pOamNetworkParam = new OamNetworkParam(this);
  79. ui->tabWidgetOamItem->addTab(m_pOamNetworkParam ,"网管参数");
  80. //同步参数
  81. m_pOamSyncParam = new OamSyncParam(this);
  82. ui->tabWidgetOamItem->addTab(m_pOamSyncParam, "同步参数");
  83. //配置参数
  84. m_pOamConfigParam = new OamConfigParam(this);
  85. ui->tabWidgetOamItem->addTab(m_pOamConfigParam, "增益参数");
  86. //安装参数
  87. m_pOamInstallParam = new OamInstallParam(this);
  88. ui->tabWidgetOamItem->addTab(m_pOamInstallParam, "安装参数");
  89. //基站参数
  90. m_pOamBtsParam = new OamBtsParam(this);
  91. ui->tabWidgetOamItem->addTab(m_pOamBtsParam, "基站参数");
  92. //软件升级
  93. m_pOamUpgrade = new OamUpgrade(this);
  94. ui->tabWidgetOamItem->addTab(m_pOamUpgrade, "软件升级");
  95. ui->tabWidgetOamItem->setCurrentIndex(0);
  96. //根据版本禁用重置参数按钮
  97. if(gMain_bySoftType == MAIN_SOFT_TYPE_DEV){
  98. ui->pushButtonResetParam->setDisabled(false);
  99. }else{
  100. ui->pushButtonResetParam->setDisabled(true);
  101. }
  102. }
  103. //配置消息和槽函数
  104. void MainDlg::configSignalAndSlot(){
  105. //操作串口
  106. connect(ui->pushButtonOpenUart, &QPushButton::clicked, this, &this->openUart);
  107. connect(ui->pushButtonCloseUart, &QPushButton::clicked, this, &this->closeUart);
  108. connect(ui->pushButtonRefresh,&QPushButton::clicked, this, &this->getUartNameList);
  109. //保存参数
  110. connect(ui->pushButtonSaveParam, &QPushButton::clicked, m_pOamConfigParam, &m_pOamConfigParam->saveParamSlot);
  111. //重启设备
  112. connect(ui->pushButtonRestart, &QPushButton::clicked, m_pOamConfigParam, &m_pOamConfigParam->restartSlot);
  113. //重置设备参数
  114. connect(ui->pushButtonResetParam, &QPushButton::clicked, m_pOamConfigParam, &m_pOamConfigParam->resetParamSlot);
  115. }
  116. //获得本机可用串口列表
  117. void MainDlg::getUartNameList(){
  118. quint8 byFlag = 0;
  119. QList<QString> strUartNameList;
  120. quint8 byLen = 0;
  121. QString strText = "";
  122. ui->comboBoxUart->clear();
  123. byFlag = m_pUart->GetUartNameList(&strUartNameList, &byLen);
  124. if(!byFlag){
  125. return;
  126. }
  127. for(quint8 i = 0; i < byLen; i++){
  128. strText = strUartNameList[i];
  129. ui->comboBoxUart->addItem(strText);
  130. }
  131. return;
  132. }
  133. //配置httpreq模块
  134. void MainDlg::configHttpReq(){
  135. QString strHostUrl= "";
  136. QString strHostPort = "";
  137. //获得系统参数
  138. m_pSysConfig->getSysConfigParam(&strHostUrl, &strHostPort);
  139. //配置HttpReq模块参数
  140. if(strHostUrl.length() >0 && strHostPort.length() > 0){
  141. m_pHttpReq->configNetworkParam(strHostUrl, strHostPort);
  142. m_byHttpReqConfigOk = 1;//表示网络模块配置OK
  143. }
  144. }
  145. //打开串口
  146. void MainDlg::openUart(){
  147. quint8 byFlag = 0;
  148. QString strUartName = "";
  149. //获得已选串口
  150. strUartName = ui->comboBoxUart->currentText();
  151. if(strUartName.size() <= 0){
  152. QMessageBox::information(this, "提示", "请选择串口");
  153. return;
  154. }
  155. //打开串口
  156. byFlag = m_pUart->OpenUart(strUartName);
  157. if(!byFlag){
  158. return;
  159. }
  160. ui->pushButtonOpenUart->setVisible(false);
  161. ui->pushButtonCloseUart->setVisible(true);
  162. return;
  163. }
  164. //关闭串口
  165. void MainDlg::closeUart(){
  166. m_pUart->CloseUart();
  167. ui->pushButtonCloseUart->setVisible(false);
  168. ui->pushButtonOpenUart->setVisible(true);
  169. }
  170. //从串口接收数据的槽函数
  171. void MainDlg::slotReceiveDataFromUart(QByteArray dataList, quint16 wLen){
  172. if(wLen > 0){
  173. //将数据发送给协议栈
  174. m_objPs->PsReceiveData(dataList, wLen);//把数据发送给协议栈
  175. }
  176. return;
  177. }
  178. //发送数据
  179. //返回值:本次发送的字节数
  180. qint64 MainDlg::sendDataToUart(QByteArray dataList){
  181. qint64 fTmp = m_pUart->SendData(dataList);
  182. return fTmp;
  183. }
  184. //协议栈上行响应信号设置成功槽函数
  185. void MainDlg::PsUlRespSignalConfigOkSlot(quint8 *pbyData, quint16 wLen){
  186. quint8 *pbyOamData = NULL;
  187. LTV_T *pstLtv = NULL;
  188. quint16 wCommand = 0;// 监控命令
  189. quint16 wCurrentLen = 0;//当前已遍历长度
  190. quint8 bySaveFlag = 0;
  191. m_pTimer->stop();//停止定时器
  192. m_byPacketNo = MAINDLG_DEFAULT_PACKET_NO;
  193. //申请内存
  194. if(wLen > 0){
  195. pbyOamData = new quint8[wLen];
  196. }
  197. memcpy(pbyOamData, pbyData, sizeof(quint8)*wLen);//拷贝数据
  198. pstLtv = (LTV_T*)pbyOamData;
  199. // 遍历报文
  200. while (wCurrentLen < wLen)
  201. {
  202. wCurrentLen += pstLtv->wLen;
  203. wCommand = pstLtv->wTag;
  204. if (ORDER_CONFIG_SAVE_PARAM == wCommand){// 保存参数
  205. bySaveFlag = 1;
  206. if(pstLtv->abyData[0] == 0x01){//保存成功
  207. QMessageBox::StandardButton dlg;
  208. dlg = QMessageBox::question(this, "提示", "保存参数成功,是否重启设备", QMessageBox::Yes|QMessageBox::No);
  209. if (dlg == QMessageBox::Yes) {
  210. delete pbyOamData;//删除内存
  211. pbyOamData = NULL;
  212. emit ui->pushButtonRestart->click();//重启设备
  213. }
  214. }else{//保存失败
  215. QMessageBox::critical(this, "提示", "保存参数失败");
  216. }
  217. }
  218. //移动指针
  219. if (wCurrentLen < wLen)
  220. {
  221. pstLtv = (LTV_T *)(pbyData + wCurrentLen); // 指针后移一个对象的长度
  222. }
  223. }
  224. if(!bySaveFlag){//非保存参数
  225. QMessageBox::information(this, "提示", "配置数据成功");
  226. }
  227. delete pbyOamData;//删除内存
  228. pbyOamData = NULL;
  229. return;
  230. }
  231. //协议栈上行响应信号设置失败槽函数
  232. void MainDlg::PsUlRespSignalConfigFailSlot(){
  233. m_pTimer->stop();//停止定时器
  234. m_byPacketNo = MAINDLG_DEFAULT_PACKET_NO;
  235. QMessageBox::critical(this, "提示", "配置数据失败");
  236. return;
  237. }
  238. //协议栈上行查询响应成功信号槽函数
  239. void MainDlg::PsUlRespSignaQueryOkSlot(quint8 *pbyData, quint16 wLen){
  240. quint8 *pbyOamData = NULL;
  241. LTV_T *pstLtv = NULL;
  242. quint16 wCommand = 0;// 监控命令
  243. quint16 wCurrentLen = 0;//当前已遍历长度
  244. m_pTimer->stop();//停止定时器
  245. m_byPacketNo = MAINDLG_DEFAULT_PACKET_NO;
  246. //申请内存
  247. if(wLen > 0){
  248. pbyOamData = new quint8[wLen];
  249. }
  250. memcpy(pbyOamData, pbyData, sizeof(quint8)*wLen);//拷贝数据
  251. pstLtv = (LTV_T*)pbyOamData;
  252. // 遍历消息,组织查询数据
  253. while (wCurrentLen < wLen)
  254. {
  255. wCurrentLen += pstLtv->wLen;
  256. wCommand = pstLtv->wTag;
  257. //遍历数据链表
  258. if (wCommand <= 0x00FF){// 查询设备信息
  259. m_pOamBaseParam->showBaseParam(pstLtv);
  260. }
  261. else if ((0x0100 <= wCommand) && (0x01FF >= wCommand)){// 查询网管参数
  262. m_pOamNetworkParam->showParam(pstLtv);
  263. }
  264. else if ((0x0200 <= wCommand) && (0x02FF >= wCommand)){// 查询告警状态
  265. }
  266. else if ((0x0300 <= wCommand) && (0x03FF >= wCommand)){// 查询配置参数
  267. m_pOamConfigParam->showParam(pstLtv);
  268. }
  269. else if ((0x0400 <= wCommand) && (0x04FF >= wCommand)){// 查询安装参数
  270. m_pOamInstallParam->showParam(pstLtv);
  271. }
  272. else if ((0x0500 <= wCommand) && (0x05FF >= wCommand)){// 查询同步参数
  273. m_pOamSyncParam->showParam(pstLtv);
  274. }
  275. else if ((0x0600 <= wCommand) && (0x06FF >= wCommand)){// 查询基站参数
  276. m_pOamBtsParam->showParam(pstLtv);
  277. }
  278. //移动指针
  279. if (wCurrentLen < wLen)
  280. {
  281. pstLtv = (LTV_T *)(pbyData + wCurrentLen); // 指针后移一个对象的长度
  282. }
  283. }
  284. delete pbyOamData;//删除内存
  285. pbyOamData = NULL;
  286. return;
  287. }
  288. //协议栈上行查询响应失败信号槽函数
  289. void MainDlg::PsUlRespSignaQueryFailSlot(){
  290. m_pTimer->stop();//停止定时器
  291. m_byPacketNo = MAINDLG_DEFAULT_PACKET_NO;
  292. QMessageBox::critical(this, "提示", "查询数据失败");
  293. return;
  294. }
  295. //发送查询信号的槽函数
  296. void MainDlg::slotOamSendQueryMsg(quint8 *pbyData, quint16 wLen){
  297. quint16 wOamMsgLen = wLen + PS_FRAME_MIN_LEN;
  298. QByteArray dataList;
  299. qint64 wSendLen = 0;
  300. qint16 wPacketNo = 0;
  301. //上一个通信包还没有返回
  302. if(m_byPacketNo != MAINDLG_DEFAULT_PACKET_NO){
  303. return;
  304. }
  305. //生成协议报文
  306. memset(m_abyTmpData, 0, PS_FRAME_MAX_LEN);
  307. wPacketNo = m_objPs->PsGenApMsg(MCP_A, MCP_A_QUERY, pbyData, wLen, m_abyTmpData, &wOamMsgLen);
  308. //重新组织数据
  309. for(quint16 i = 0; i < wOamMsgLen; i++){
  310. dataList.append(m_abyTmpData[i]);
  311. }
  312. //将协议报文发送到串口
  313. wSendLen = sendDataToUart(dataList);
  314. if(wSendLen != wOamMsgLen){
  315. QMessageBox::critical(this, "提示", "查询参数失败");
  316. return;
  317. }
  318. m_byPacketNo = wPacketNo;
  319. m_pTimer->start();
  320. return;
  321. }
  322. //pbyData:其他模块传过来的OAM消息
  323. //wLen:OAM消息长度
  324. //wCmd:监控命令
  325. void MainDlg::slotOamSendConfigMsg(quint8 *pbyData, quint16 wLen, quint16 wCmd){
  326. quint16 wOamMsgLen = wLen + PS_FRAME_MIN_LEN;
  327. QByteArray dataList;
  328. qint64 wSendLen = 0;
  329. qint16 wPacketNo = 0;
  330. //上一个通信包还没有返回
  331. if(m_byPacketNo != MAINDLG_DEFAULT_PACKET_NO){
  332. return;
  333. }
  334. //生成协议报文
  335. memset(m_abyTmpData, 0, PS_FRAME_MAX_LEN);
  336. wPacketNo = m_objPs->PsGenApMsg(MCP_A, MCP_A_CONFIGURE, pbyData, wLen, m_abyTmpData, &wOamMsgLen);
  337. //重新组织数据
  338. for(quint16 i = 0; i < wOamMsgLen; i++){
  339. dataList.append(m_abyTmpData[i]);
  340. }
  341. //将协议报文发送到串口
  342. wSendLen = sendDataToUart(dataList);
  343. if(wSendLen != wOamMsgLen){
  344. QMessageBox::critical(this, "提示", "配置参数失败");
  345. return;
  346. }
  347. //非重启命令
  348. if(wCmd != ORDER_CONFIG_RESTART){
  349. m_byPacketNo = wPacketNo;
  350. m_pTimer->start();
  351. }
  352. return;
  353. }
  354. //超时槽函数
  355. void MainDlg::Timeout2000Slot(){
  356. m_pTimer->stop();
  357. m_byPacketNo = MAINDLG_DEFAULT_PACKET_NO;
  358. QMessageBox::critical(this, "提示", "通信超时,请重试");
  359. }
  360. //升级超时槽函数
  361. void MainDlg::Timeout5000Slot(){
  362. m_pUpgradeTimer->stop();
  363. m_byPacketNo = MAINDLG_DEFAULT_PACKET_NO;
  364. //向升级模块发送升级超时消息
  365. emit signalNoticeUpgradeTimeout();
  366. }
  367. //槽函数-上传基站基本参数-增加
  368. void MainDlg::slotUploadBtsBaseParamAdd(QString strApi, QJsonObject jsonObject){
  369. QString strResp = "";
  370. //二次确认
  371. QMessageBox::StandardButton dlg;
  372. dlg = QMessageBox::question(this, "提示", "确定要上传基站参数吗", QMessageBox::Yes|QMessageBox::No);
  373. if (dlg == QMessageBox::No) {
  374. return;
  375. }
  376. //发送post消息
  377. if(m_byHttpReqConfigOk > 0){
  378. //组织项目编号
  379. if(m_dwProjectId <= 0){
  380. QMessageBox::critical(this, "提示", "请首先配置项目编号");
  381. return;
  382. }
  383. jsonObject["project_id"] = QJsonValue::fromVariant(QVariant(static_cast<quint64>(m_dwProjectId)));
  384. //设置消息源
  385. jsonObject["source_id"] = 3;//数据源于GUI网管;
  386. strResp = m_pHttpReq->sendPostReq(strApi, jsonObject);
  387. QMessageBox::information(this, "提示", strResp);
  388. }else{
  389. QMessageBox::critical(this, "提示", "http模块不可用,请先配置系统参数再尝试");
  390. }
  391. return;
  392. }
  393. //槽函数-上传基站基本参数-修改
  394. void MainDlg::slotUploadBtsBaseParamUpdate(QString strApi, QJsonObject jsonObject){
  395. QString strResp = "";
  396. //二次确认
  397. QMessageBox::StandardButton dlg;
  398. dlg = QMessageBox::question(this, "提示", "确定要上传基站参数吗", QMessageBox::Yes|QMessageBox::No);
  399. if (dlg == QMessageBox::No) {
  400. return;
  401. }
  402. if(m_byHttpReqConfigOk > 0){
  403. //组织项目编号
  404. if(m_dwProjectId <= 0){
  405. QMessageBox::critical(this, "提示", "请首先配置项目编号");
  406. return;
  407. }
  408. jsonObject["project_id"] = QJsonValue::fromVariant(QVariant(static_cast<quint64>(m_dwProjectId)));
  409. //组织基站ID
  410. if(m_dwBtsId < 1000){
  411. QMessageBox::critical(this, "提示", "请配置正确的基站编号");
  412. return;
  413. }
  414. jsonObject["bts_id"] = QJsonValue::fromVariant(QVariant(static_cast<quint64>(m_dwBtsId)));
  415. //设置消息源
  416. jsonObject["source_id"] = 3;//数据源于GUI网管
  417. //发送消息
  418. strResp = m_pHttpReq->sendPostReq(strApi, jsonObject);
  419. QMessageBox::information(this, "提示", strResp);
  420. }else{
  421. QMessageBox::critical(this, "提示", "http模块不可用,请先配置系统参数再尝试");
  422. }
  423. return;
  424. }
  425. //发送升级报文
  426. //pbyData:升级模块传过来的OAM消息
  427. //byCmdType:命令类型
  428. //wLen:OAM消息长度
  429. void MainDlg::slotOamSendUpgradeMsg(quint8 *pbyData, quint8 byCmdType, quint16 dataLen){
  430. quint16 wOamMsgLen = dataLen + PS_FRAME_MIN_LEN;
  431. QByteArray dataList;
  432. qint64 wSendLen = 0;
  433. quint16 wPacketNo = 0;
  434. //上一个通信包还没有返回
  435. if(m_byPacketNo != MAINDLG_DEFAULT_PACKET_NO){
  436. m_byPacketNo = MAINDLG_DEFAULT_PACKET_NO;
  437. return;
  438. }
  439. //生成协议报文
  440. memset(m_abyTmpData, 0, PS_FRAME_MAX_LEN);
  441. wPacketNo = m_objPs->PsGenApMsg(MCP_B, byCmdType, pbyData, dataLen, m_abyTmpData, &wOamMsgLen);
  442. //重新组织数据
  443. for(quint16 i = 0; i < wOamMsgLen; i++){
  444. dataList.append(m_abyTmpData[i]);
  445. }
  446. //将协议报文发送到串口
  447. wSendLen = sendDataToUart(dataList);
  448. if(wSendLen != wOamMsgLen){
  449. QMessageBox::critical(this, "提示", "升级报文发送失败");
  450. emit signalNoticeUpgradeFail();//通知升级模块,升级失败
  451. }
  452. m_byPacketNo = wPacketNo;
  453. m_pUpgradeTimer->start();
  454. return;
  455. }
  456. //协议栈上行响应信号-升级命令成功槽函数
  457. void MainDlg::PsUlRespSignalUpgradeOkSlot(quint8 *pbyData){
  458. LTV_B_T *pstLtv = (LTV_B_T*)pbyData;
  459. quint16 wCommand = pstLtv->wTag;// 监控命令
  460. m_pUpgradeTimer->stop();//停止定时器
  461. m_byPacketNo = MAINDLG_DEFAULT_PACKET_NO;
  462. //通知升级模块
  463. emit signalNoticeUpgradeOk(wCommand);
  464. return;
  465. }
  466. //协议栈上行响应信号-升级命令失败槽函数
  467. void MainDlg::PsUlRespSignalUpgradeFailSlot(){
  468. m_pUpgradeTimer->stop();//停止定时器
  469. m_byPacketNo = MAINDLG_DEFAULT_PACKET_NO;
  470. //通知升级模块
  471. emit signalNoticeUpgradeFail();
  472. return;
  473. }
  474. //升级模块通知需要重启启动
  475. void MainDlg::slotUpgradeRestart(){
  476. emit ui->pushButtonRestart->click();//重启设备
  477. }
  478. //配置项目编号
  479. void MainDlg::setProjectId(quint32 dwProjectId){
  480. m_dwProjectId = dwProjectId;
  481. QString hexStr = QString::number(dwProjectId, 16);
  482. hexStr = hexStr.rightJustified(8, '0');//右侧对齐,输出8位字符,不足8位的左侧用0填充
  483. hexStr = hexStr.toUpper();
  484. ui->labelPorjectId->setText(hexStr);
  485. return;
  486. }
  487. //查询项目编号
  488. quint32 MainDlg::getPorjectId(){
  489. return m_dwProjectId;
  490. }
  491. //配置基站编号
  492. void MainDlg::mainDlgSetBtsId(quint32 dwBtsId){
  493. m_dwBtsId = dwBtsId;
  494. ui->labelBtsId->setText(QString::number(m_dwBtsId));
  495. return;
  496. }
  497. //设备类型下拉框槽函数
  498. void MainDlg::slotDeviceTypeChanged(int index){
  499. m_dwDeviceType = index;//设备类型
  500. if(m_dwTabIndex == 1){
  501. m_pOamBaseParam->updateUi();
  502. }else if(m_dwTabIndex == 3){
  503. m_pOamSyncParam->updateUi();
  504. }else if(m_dwTabIndex == 4){
  505. m_pOamConfigParam->updateUi();
  506. }else if(m_dwTabIndex == 5){
  507. m_pOamInstallParam->updateUi();
  508. }else if(m_dwTabIndex == 6){
  509. m_pOamBtsParam->updateUi();
  510. }
  511. }
  512. //查询设备类型
  513. int MainDlg::getDeviceType(){
  514. return m_dwDeviceType;
  515. }
  516. //tab页面切换
  517. void MainDlg::slotTabSwitch(int index){
  518. m_dwTabIndex = index;//保存tab索引
  519. if(index == 1){//设备基本参数
  520. m_pOamBaseParam->updateUi();
  521. }else if(index == 3){
  522. m_pOamSyncParam->updateUi();
  523. }else if(index == 4){
  524. m_pOamConfigParam->updateUi();
  525. }else if(index == 5){
  526. m_pOamInstallParam->updateUi();
  527. }else if(index == 6){
  528. m_pOamBtsParam->updateUi();
  529. }
  530. }
  531. void MainDlg::stopUpgradeTimer(){
  532. m_pUpgradeTimer->stop();
  533. }