oamconfigparam.cpp 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458
  1. #include "oamconfigparam.h"
  2. #include "ui_oamconfigparam.h"
  3. #include "maindlg.h"
  4. OamConfigParam::OamConfigParam(QWidget *parent)
  5. : QDialog(parent)
  6. , ui(new Ui::OamConfigParam)
  7. {
  8. ui->setupUi(this);
  9. m_pMainDlg = static_cast<MainDlg*>(parent);//保存上级窗口指针
  10. init();//模块初始化
  11. }
  12. OamConfigParam::~OamConfigParam()
  13. {
  14. delete ui;
  15. }
  16. //模块初始化
  17. void OamConfigParam::init(){
  18. m_dwDeviceType = m_pMainDlg->getDeviceType();
  19. initUi();
  20. configSignalSlot();
  21. }
  22. //初始化UI
  23. void OamConfigParam::initUi(){
  24. QString strText = "";
  25. //初始化DA开关
  26. ui->comboBoxDaSwitch->addItem("请选择",0);
  27. ui->comboBoxDaSwitch->addItem("关闭",1);
  28. ui->comboBoxDaSwitch->addItem("打开",2);
  29. //DA衰减
  30. ui->comboBoxDaGain->addItem("请选择", 0);
  31. for(quint16 i = 255; i > 128; i--){
  32. strText = "-" + QString::number((255 - i)*0.5) + "dB";
  33. ui->comboBoxDaGain->addItem(strText, i);
  34. }
  35. //初始化PA开关
  36. ui->comboBoxPaSwitch->addItem("请选择", 0);
  37. ui->comboBoxPaSwitch->addItem("关闭",1);
  38. ui->comboBoxPaSwitch->addItem("打开",2);
  39. //PA增益
  40. ui->comboBoxPaGain->addItem("请选择", 0);
  41. ui->comboBoxPaGain->addItem("低", 20);
  42. ui->comboBoxPaGain->addItem("中", 26);
  43. ui->comboBoxPaGain->addItem("高", 32);
  44. ui->comboBoxPaGain->addItem("最高", 36);
  45. updateUi();
  46. }
  47. //更新ui
  48. void OamConfigParam::updateUi(){
  49. m_dwDeviceType = m_pMainDlg->getDeviceType();
  50. if(m_dwDeviceType != 0){
  51. switchBtnFlag(false);
  52. selectAllNoItem();
  53. }else{
  54. switchBtnFlag(true);
  55. }
  56. }
  57. //配置界面按钮信号与槽
  58. void OamConfigParam::configSignalSlot(){
  59. connect(ui->pushButtonAllSel, &QPushButton::clicked, this,&this->selectAllItem);//全选
  60. connect(ui->pushButtonAllNoSel, &QPushButton::clicked, this,&this->selectAllNoItem);//全不选
  61. connect(ui->pushButtonClear, &QPushButton::clicked, this,&this->clearAllItem);//清空
  62. connect(ui->pushButtonQuery, &QPushButton::clicked, this,&this->queryParam);//查询参数
  63. connect(ui->pushButtonConfig, &QPushButton::clicked, this,&this->configParam);//设置参数
  64. connect(ui->pushButtonUpload, &QPushButton::clicked, this,&this->uploadData);//上传参数
  65. //将消息发送到主控模块
  66. connect(this, &this->SignalSendQueryMsg, m_pMainDlg, &m_pMainDlg->slotOamSendQueryMsg);
  67. connect(this, &this->SignalSendConfigMsg, m_pMainDlg, &m_pMainDlg->slotOamSendConfigMsg);
  68. connect(this, &this->SignalUploadBtsBaseParamUpdate, m_pMainDlg, &m_pMainDlg->slotUploadBtsBaseParamUpdate);//上传数据
  69. }
  70. //全选
  71. void OamConfigParam::selectAllItem(){
  72. ui->checkBoxDaSwitch->setChecked(true);
  73. ui->checkBoxDaGain->setChecked(true);
  74. ui->checkBoxPaSwitch->setChecked(true);
  75. ui->checkBoxPaGain->setChecked(true);
  76. }
  77. //全不选
  78. void OamConfigParam::selectAllNoItem(){
  79. ui->checkBoxDaSwitch->setChecked(false);
  80. ui->checkBoxDaGain->setChecked(false);
  81. ui->checkBoxPaSwitch->setChecked(false);
  82. ui->checkBoxPaGain->setChecked(false);
  83. }
  84. //清空参数
  85. void OamConfigParam::clearAllItem(){
  86. QString strText = "";
  87. ui->comboBoxDaSwitch->setCurrentIndex(0);
  88. ui->comboBoxDaGain->setCurrentIndex(0);
  89. ui->comboBoxPaSwitch->setCurrentIndex(0);
  90. ui->comboBoxPaGain->setCurrentIndex(0);
  91. }
  92. //切换按钮状态
  93. //byFlag:开关状态,true:可用,false:不可用
  94. void OamConfigParam::switchBtnFlag(bool byFlag){
  95. ui->pushButtonAllSel->setEnabled(byFlag);
  96. ui->pushButtonAllNoSel->setEnabled(byFlag);
  97. ui->pushButtonClear->setEnabled(byFlag);
  98. ui->pushButtonQuery->setEnabled(byFlag);
  99. ui->pushButtonConfig->setEnabled(byFlag);
  100. ui->pushButtonUpload->setEnabled(byFlag);
  101. }
  102. //查询参数
  103. void OamConfigParam::queryParam(){
  104. quint8 abyData[PS_FRAME_MCPA_PAYLOAD_LEN];
  105. quint8 *pbyHead = abyData;
  106. quint16 wLen = 0;
  107. LTV_T stLtv;
  108. //禁用按钮
  109. switchBtnFlag(false);
  110. memset(abyData, 0, PS_FRAME_MCPA_PAYLOAD_LEN);
  111. memset((void*)&stLtv, 0, sizeof(LTV_T));
  112. if(ui->checkBoxDaSwitch->isChecked()){//DAC开关
  113. stLtv.wLen = 5;
  114. stLtv.wTag = ORDER_CONFIG_DAC_SWITCH;
  115. memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
  116. wLen = wLen + stLtv.wLen;
  117. pbyHead = pbyHead + stLtv.wLen;
  118. }
  119. if(ui->checkBoxDaGain->isChecked()){//DAC增益
  120. stLtv.wLen = 5;
  121. stLtv.wTag = ORDER_CONFIG_DAC_GAIN;
  122. memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
  123. wLen = wLen + stLtv.wLen;
  124. pbyHead = pbyHead + stLtv.wLen;
  125. }
  126. if(ui->checkBoxPaSwitch->isChecked()){//PA开关
  127. stLtv.wLen = 5;
  128. stLtv.wTag = ORDER_CONFIG_PA_SWITCH;
  129. memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
  130. wLen = wLen + stLtv.wLen;
  131. pbyHead = pbyHead + stLtv.wLen;
  132. }
  133. if(ui->checkBoxPaGain->isChecked()){//PA增益
  134. stLtv.wLen = 5;
  135. stLtv.wTag = ORDER_CONFIG_PA_GAIN;
  136. memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
  137. wLen = wLen + stLtv.wLen;
  138. pbyHead = pbyHead + stLtv.wLen;
  139. }
  140. if(wLen > PS_FRAME_MCPA_PAYLOAD_LEN){
  141. QMessageBox::information(this,"提示", "数据长度超过报文最大值,请减少查询项");
  142. switchBtnFlag(true);
  143. return;
  144. }
  145. //将参数发送给主控模块
  146. if(wLen > 0){
  147. emit SignalSendQueryMsg(abyData, wLen);
  148. }else{
  149. QMessageBox::information(this,"提示", "请至少选择一项管理项");
  150. }
  151. //启用按钮
  152. switchBtnFlag(true);
  153. return;
  154. }
  155. //显示参数
  156. void OamConfigParam::showParam(LTV_T *pstData){
  157. QString strText = "";
  158. quint8 byTmp = 0;
  159. quint8 byIndex = 0;
  160. quint8 byLen = pstData->wLen - 4;
  161. //将数据显示在界面上
  162. if(pstData->wTag == ORDER_CONFIG_DAC_SWITCH){//DA开关
  163. memcpy(&byTmp, pstData->abyData, byLen);
  164. byTmp += 1;
  165. ui->comboBoxDaSwitch->setCurrentIndex(byTmp);
  166. }else if(pstData->wTag == ORDER_CONFIG_DAC_GAIN){//DA衰减
  167. memcpy(&byTmp, pstData->abyData, byLen);
  168. byIndex = (quint8)ui->comboBoxDaGain->findData(QVariant(byTmp));
  169. ui->comboBoxDaGain->setCurrentIndex(byIndex);
  170. }else if(pstData->wTag == ORDER_CONFIG_PA_SWITCH){//PA开关
  171. memcpy(&byTmp, pstData->abyData, byLen);
  172. byTmp += 1;
  173. ui->comboBoxPaSwitch->setCurrentIndex(byTmp);
  174. }else if(pstData->wTag == ORDER_CONFIG_PA_GAIN){//PA增益
  175. memcpy(&byTmp, pstData->abyData, byLen);
  176. byIndex = (quint8)ui->comboBoxPaGain->findData(QVariant(byTmp));
  177. ui->comboBoxPaGain->setCurrentIndex(byIndex);
  178. }
  179. return;
  180. }
  181. //配置参数
  182. void OamConfigParam::configParam(){
  183. quint8 abyData[PS_FRAME_MCPA_PAYLOAD_LEN];
  184. quint8 *pbyHead = abyData;
  185. quint16 wLen = 0;
  186. LTV_T stLtv;
  187. quint8 byTmp = 0;
  188. QVariant varTmp;
  189. //禁用按钮
  190. switchBtnFlag(false);
  191. memset(abyData, 0, PS_FRAME_MCPA_PAYLOAD_LEN);
  192. memset((void*)&stLtv, 0, sizeof(LTV_T));
  193. //DA开关
  194. if(ui->checkBoxDaSwitch->isChecked()){
  195. memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN);
  196. stLtv.wLen = 5;
  197. stLtv.wTag = ORDER_CONFIG_DAC_SWITCH;
  198. varTmp = ui->comboBoxDaSwitch->currentData();
  199. byTmp = (quint8)varTmp.toInt();
  200. if(byTmp <= 0){
  201. QMessageBox::critical(this, "提示", "请选择DA开关");
  202. switchBtnFlag(true);
  203. return;
  204. }
  205. byTmp-= 1;
  206. memcpy((void*)stLtv.abyData, &byTmp, (stLtv.wLen - 4));
  207. memcpy(pbyHead, &stLtv, stLtv.wLen);
  208. wLen = wLen + stLtv.wLen;
  209. pbyHead = pbyHead + stLtv.wLen;
  210. }
  211. //DA增益
  212. if(ui->checkBoxDaGain->isChecked()){
  213. memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN);
  214. stLtv.wLen = 5;
  215. stLtv.wTag = ORDER_CONFIG_DAC_GAIN;
  216. varTmp = ui->comboBoxDaGain->currentData();
  217. byTmp = (quint8)varTmp.toInt();
  218. if(byTmp <= 0){
  219. QMessageBox::critical(this, "提示", "请选择DA增益");
  220. switchBtnFlag(true);
  221. return;
  222. }
  223. memcpy((void*)stLtv.abyData, &byTmp, (stLtv.wLen - 4));
  224. memcpy(pbyHead, &stLtv, stLtv.wLen);
  225. wLen = wLen + stLtv.wLen;
  226. pbyHead = pbyHead + stLtv.wLen;
  227. }
  228. //PA开关
  229. if(ui->checkBoxPaSwitch->isChecked()){
  230. memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN);
  231. stLtv.wLen = 5;
  232. stLtv.wTag = ORDER_CONFIG_PA_SWITCH;
  233. varTmp = ui->comboBoxPaSwitch->currentData();
  234. byTmp = (quint8)varTmp.toInt();
  235. if(byTmp <= 0){
  236. QMessageBox::critical(this, "提示", "请选择PA开关");
  237. switchBtnFlag(true);
  238. return;
  239. }
  240. byTmp -= 1;
  241. memcpy((void*)stLtv.abyData, &byTmp, (stLtv.wLen - 4));
  242. memcpy(pbyHead, &stLtv, stLtv.wLen);
  243. wLen = wLen + stLtv.wLen;
  244. pbyHead = pbyHead + stLtv.wLen;
  245. }
  246. //DA增益
  247. if(ui->checkBoxPaGain->isChecked()){
  248. memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN);
  249. stLtv.wLen = 5;
  250. stLtv.wTag = ORDER_CONFIG_PA_GAIN;
  251. varTmp = ui->comboBoxPaGain->currentData();
  252. byTmp = (quint8)varTmp.toInt();
  253. if(byTmp <= 0){
  254. QMessageBox::critical(this, "提示", "请选择PA增益");
  255. switchBtnFlag(true);
  256. return;
  257. }
  258. memcpy((void*)stLtv.abyData, &byTmp, (stLtv.wLen - 4));
  259. memcpy(pbyHead, &stLtv, stLtv.wLen);
  260. wLen = wLen + stLtv.wLen;
  261. pbyHead = pbyHead + stLtv.wLen;
  262. }
  263. if(wLen > PS_FRAME_MCPA_PAYLOAD_LEN){
  264. QMessageBox::information(this,"提示", "数据长度超过报文最大值,请减少查设置项");
  265. switchBtnFlag(true);
  266. return;
  267. }
  268. //将参数发送给主控模块
  269. if(wLen > 0){
  270. emit SignalSendConfigMsg(abyData, wLen, 0);
  271. }else{
  272. QMessageBox::information(this,"提示", "请至少选择一项管理项");
  273. }
  274. switchBtnFlag(true);
  275. return;
  276. }
  277. //保存参数槽函数
  278. void OamConfigParam::saveParamSlot(){
  279. quint8 abyData[5] = {0};
  280. LTV_T *pstLtv = (LTV_T*)abyData;
  281. //二次确认
  282. QMessageBox::StandardButton dlg;
  283. dlg = QMessageBox::question(this, "提示", "确定要保存参数吗", QMessageBox::Yes|QMessageBox::No);
  284. if (dlg == QMessageBox::No) {
  285. return;
  286. }
  287. //组织消息
  288. memset((void*)abyData, 0, 5);
  289. pstLtv->wLen = 5;
  290. pstLtv->wTag = ORDER_CONFIG_SAVE_PARAM;
  291. //发送消息
  292. emit SignalSendConfigMsg(abyData, 5, 0);
  293. return;
  294. }
  295. //重启设备槽函数
  296. void OamConfigParam::restartSlot(){
  297. quint8 abyData[5];
  298. LTV_T *pstLtv = (LTV_T*)abyData;
  299. //二次确认
  300. QMessageBox::StandardButton dlg;
  301. dlg = QMessageBox::question(this, "提示", "确定要重启设备吗", QMessageBox::Yes|QMessageBox::No);
  302. if (dlg == QMessageBox::No) {
  303. return;
  304. }
  305. //组织消息
  306. memset((void*)abyData, 0, 5);
  307. pstLtv->wLen = 5;
  308. pstLtv->wTag = ORDER_CONFIG_RESTART;
  309. //发送消息
  310. emit SignalSendConfigMsg(abyData, 5, ORDER_CONFIG_RESTART);
  311. return;
  312. }
  313. //重置设备参数
  314. void OamConfigParam::resetParamSlot(){
  315. quint8 abyData[5];
  316. LTV_T *pstLtv = (LTV_T*)abyData;
  317. //二次确认
  318. QMessageBox::StandardButton dlg;
  319. dlg = QMessageBox::question(this, "提示", "重置参数后,系统会自动保存参数。确定要重置设备参数吗?", QMessageBox::Yes|QMessageBox::No);
  320. if (dlg == QMessageBox::No) {
  321. return;
  322. }
  323. //组织消息
  324. memset((void*)abyData, 0, 5);
  325. pstLtv->wLen = 5;
  326. pstLtv->wTag = ORDER_CONFIG_RESET_PARAM;//重置设备参数
  327. //发送消息
  328. emit SignalSendConfigMsg(abyData, 5, ORDER_CONFIG_RESET_PARAM);
  329. return;
  330. }
  331. //上传数据
  332. void OamConfigParam::uploadData(){
  333. QJsonObject jsonObject; //定义一个json对象
  334. quint8 byTmp = 0;
  335. QVariant varTmp;
  336. //禁用按钮
  337. switchBtnFlag(false);
  338. //DA开关
  339. if(ui->checkBoxDaSwitch->isChecked()){
  340. varTmp = ui->comboBoxDaSwitch->currentData();
  341. byTmp = (quint8)varTmp.toInt();
  342. if(byTmp <= 0){
  343. QMessageBox::critical(this, "提示", "请选择DA开关");
  344. switchBtnFlag(true);
  345. return;
  346. }
  347. jsonObject["da_switch"] = byTmp;
  348. }
  349. //DA增益
  350. if(ui->checkBoxDaGain->isChecked()){
  351. varTmp = ui->comboBoxDaGain->currentData();
  352. byTmp = (quint8)varTmp.toInt();
  353. if(byTmp <= 0){
  354. QMessageBox::critical(this, "提示", "请选择DA增益");
  355. switchBtnFlag(true);
  356. return;
  357. }
  358. jsonObject["da_gain"] = byTmp;
  359. }
  360. //PA开关
  361. if(ui->checkBoxPaSwitch->isChecked()){
  362. varTmp = ui->comboBoxPaSwitch->currentData();
  363. byTmp = (quint8)varTmp.toInt();
  364. if(byTmp <= 0){
  365. QMessageBox::critical(this, "提示", "请选择PA开关");
  366. switchBtnFlag(true);
  367. return;
  368. }
  369. jsonObject["pa_switch"] = byTmp;
  370. }
  371. //PA增益
  372. if(ui->checkBoxPaGain->isChecked()){
  373. varTmp = ui->comboBoxPaGain->currentData();
  374. byTmp = (quint8)varTmp.toInt();
  375. if(byTmp <= 0){
  376. QMessageBox::critical(this, "提示", "请选择PA增益");
  377. switchBtnFlag(true);
  378. return;
  379. }
  380. jsonObject["pa_gain"] = byTmp;
  381. }
  382. //启用按钮
  383. switchBtnFlag(true);
  384. //发送post请求
  385. emit SignalUploadBtsBaseParamUpdate("guiUploadBtsBaseParamUpdate", jsonObject);
  386. return;
  387. }