maindlg.cpp 19 KB

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