oamnetworkparam.cpp 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365
  1. #include "oamnetworkparam.h"
  2. #include "ui_oamnetworkparam.h"
  3. #include "maindlg.h"
  4. OamNetworkParam::OamNetworkParam(QWidget *parent)
  5. : QDialog(parent)
  6. , ui(new Ui::OamNetworkParam)
  7. {
  8. ui->setupUi(this);
  9. m_pMainDlg = static_cast<MainDlg*>(parent);//保存上级窗口指针
  10. InitUi();
  11. configSignalSlot();
  12. }
  13. OamNetworkParam::~OamNetworkParam()
  14. {
  15. delete ui;
  16. }
  17. void OamNetworkParam::InitUi(){
  18. //初始化PA开关
  19. ui->comboBoxSwitch->addItem("请选择", 0);
  20. ui->comboBoxSwitch->addItem("关闭",1);
  21. ui->comboBoxSwitch->addItem("打开",2);
  22. }
  23. //配置界面按钮信号与槽
  24. void OamNetworkParam::configSignalSlot(){
  25. connect(ui->pushButtonAllSel, &QPushButton::clicked, this,&this->selectAllItem);//全选
  26. connect(ui->pushButtonAllNoSel, &QPushButton::clicked, this,&this->selectAllNoItem);//全不选
  27. connect(ui->pushButtonClear, &QPushButton::clicked, this,&this->clearAllItem);//清空
  28. connect(ui->pushButtonQuery, &QPushButton::clicked, this,&this->queryParam);//查询参数
  29. connect(ui->pushButtonConfig, &QPushButton::clicked, this,&this->configParam);//设置参数
  30. connect(ui->pushButtonUpload, &QPushButton::clicked, this,&this->uploadData);//上传参数
  31. //将消息发送到主控模块
  32. connect(this, &this->SignalSendQueryMsg, m_pMainDlg, &m_pMainDlg->slotOamSendQueryMsg);
  33. connect(this, &this->SignalSendConfigMsg, m_pMainDlg, &m_pMainDlg->slotOamSendConfigMsg);
  34. connect(this, &this->SignalUploadBtsBaseParamUpdate, m_pMainDlg, &m_pMainDlg->slotUploadBtsBaseParamUpdate);//上传数据
  35. }
  36. //全选
  37. void OamNetworkParam::selectAllItem(){
  38. ui->checkBoxSwitch->setChecked(true);
  39. ui->checkBoxWifiName->setChecked(true);
  40. ui->checkBoxWifiPwd->setChecked(true);
  41. ui->checkBoxServiceIp->setChecked(true);
  42. ui->checkBoxServicePort->setChecked(true);
  43. }
  44. //全不选
  45. void OamNetworkParam::selectAllNoItem(){
  46. ui->checkBoxSwitch->setChecked(false);
  47. ui->checkBoxWifiName->setChecked(false);
  48. ui->checkBoxWifiPwd->setChecked(false);
  49. ui->checkBoxServiceIp->setChecked(false);
  50. ui->checkBoxServicePort->setChecked(false);
  51. }
  52. //清空参数
  53. void OamNetworkParam::clearAllItem(){
  54. QString strText = "";
  55. ui->comboBoxSwitch->setCurrentIndex(0);
  56. ui->lineEditWifiName->setText(strText);
  57. ui->lineEditWifiPwd->setText(strText);
  58. ui->lineEditServiceIp->setText(strText);
  59. ui->spinBoxServicePort->setValue(0);
  60. }
  61. //切换按钮状态
  62. //byFlag:开关状态,true:可用,false:不可用
  63. void OamNetworkParam::switchBtnFlag(bool byFlag){
  64. ui->pushButtonAllSel->setEnabled(byFlag);
  65. ui->pushButtonAllNoSel->setEnabled(byFlag);
  66. ui->pushButtonClear->setEnabled(byFlag);
  67. ui->pushButtonQuery->setEnabled(byFlag);
  68. ui->pushButtonConfig->setEnabled(byFlag);
  69. }
  70. //查询参数
  71. void OamNetworkParam::queryParam(){
  72. quint8 abyData[PS_FRAME_MCPA_PAYLOAD_LEN];
  73. quint8 *pbyHead = abyData;
  74. quint16 wLen = 0;
  75. LTV_T stLtv;
  76. memset(abyData, 0, PS_FRAME_MCPA_PAYLOAD_LEN);
  77. memset((void*)&stLtv, 0, sizeof(LTV_T));
  78. //禁用按钮
  79. switchBtnFlag(false);
  80. //网管使能开关
  81. if(ui->checkBoxSwitch->isChecked()){
  82. stLtv.wLen = 5;
  83. stLtv.wTag = ORDER_NETWORK_SWITCH;
  84. memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
  85. wLen = wLen + stLtv.wLen;
  86. pbyHead = pbyHead + stLtv.wLen;
  87. }
  88. if(ui->checkBoxWifiName->isChecked()){
  89. stLtv.wLen = 24;
  90. stLtv.wTag = ORDER_NETWORK_WIFI_NAME;
  91. memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
  92. wLen = wLen + stLtv.wLen;
  93. pbyHead = pbyHead + stLtv.wLen;
  94. }
  95. if(ui->checkBoxWifiPwd->isChecked()){
  96. stLtv.wLen = 24;
  97. stLtv.wTag = ORDER_NETWORK_WIFI_PWD;
  98. memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
  99. wLen = wLen + stLtv.wLen;
  100. pbyHead = pbyHead + stLtv.wLen;
  101. }
  102. if(ui->checkBoxServiceIp->isChecked()){
  103. stLtv.wLen = 36;
  104. stLtv.wTag = ORDER_NETWORK_SERVICE_IP;
  105. memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
  106. wLen = wLen + stLtv.wLen;
  107. pbyHead = pbyHead + stLtv.wLen;
  108. }
  109. if(ui->checkBoxServicePort->isChecked()){
  110. stLtv.wLen = 6;
  111. stLtv.wTag = ORDER_NETWORK_SERVICE_PORT;
  112. memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
  113. wLen = wLen + stLtv.wLen;
  114. pbyHead = pbyHead + stLtv.wLen;
  115. }
  116. if(wLen > PS_FRAME_MCPA_PAYLOAD_LEN){
  117. QMessageBox::information(this,"提示", "数据长度超过报文最大值,请减少查询项");
  118. switchBtnFlag(true);
  119. return;
  120. }
  121. //将参数发送给主控模块
  122. if(wLen > 0){
  123. emit SignalSendQueryMsg(abyData, wLen);
  124. }else{
  125. QMessageBox::information(this,"提示", "请至少选择一项管理项");
  126. }
  127. switchBtnFlag(true);
  128. return;
  129. }
  130. //显示参数
  131. void OamNetworkParam::showParam(LTV_T *pstData){
  132. QString strText = "";
  133. quint16 wTmp = 0;
  134. quint8 byLen = pstData->wLen-4;
  135. //将数据显示在界面上
  136. if(pstData->wTag == ORDER_NETWORK_WIFI_NAME){
  137. strText = QString::fromUtf8((char *)pstData->abyData, strlen((char*)pstData->abyData));
  138. strText = strText.trimmed();
  139. ui->lineEditWifiName->setText(strText);
  140. }else if(pstData->wTag == ORDER_NETWORK_WIFI_PWD){
  141. strText = QString::fromUtf8((char *)pstData->abyData, strlen((char*)pstData->abyData));
  142. strText = strText.trimmed();
  143. ui->lineEditWifiPwd->setText(strText);
  144. }else if(pstData->wTag == ORDER_NETWORK_SERVICE_IP){
  145. strText = QString::fromUtf8((char *)pstData->abyData, strlen((char*)pstData->abyData));
  146. strText = strText.trimmed();
  147. ui->lineEditServiceIp->setText(strText);
  148. }else if(pstData->wTag == ORDER_NETWORK_SERVICE_PORT){
  149. memcpy(&wTmp, pstData->abyData, byLen);
  150. ui->spinBoxServicePort->setValue(wTmp);
  151. }else if(pstData->wTag == ORDER_NETWORK_SWITCH){
  152. memcpy(&wTmp, pstData->abyData, byLen);
  153. wTmp += 1;
  154. ui->comboBoxSwitch->setCurrentIndex(wTmp);
  155. }
  156. return;
  157. }
  158. //配置参数
  159. void OamNetworkParam::configParam(){
  160. quint8 abyData[PS_FRAME_MCPA_PAYLOAD_LEN];
  161. quint8 *pbyHead = abyData;
  162. quint16 wLen = 0;
  163. LTV_T stLtv;
  164. QString strText = "";
  165. quint32 dwCoord = 0;
  166. QByteArray tmp;
  167. char *pchTmp = NULL;
  168. QByteArray byteArray;
  169. quint8 byCharLen = 0;
  170. quint8 byTmp = 0;
  171. QVariant varTmp;
  172. //禁用按钮
  173. switchBtnFlag(false);
  174. memset(abyData, 0, PS_FRAME_MCPA_PAYLOAD_LEN);
  175. memset((void*)&stLtv, 0, sizeof(LTV_T));
  176. if(ui->checkBoxSwitch->isChecked()){
  177. memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN);
  178. stLtv.wLen = 5;
  179. stLtv.wTag = ORDER_NETWORK_SWITCH;
  180. varTmp = ui->comboBoxSwitch->currentData();
  181. byTmp = (quint8)varTmp.toInt();
  182. if(byTmp <= 0){
  183. QMessageBox::critical(this, "提示", "请选择网管使能开关");
  184. switchBtnFlag(true);
  185. return;
  186. }
  187. byTmp-= 1;
  188. memcpy((void*)stLtv.abyData, &byTmp, (stLtv.wLen - 4));
  189. memcpy(pbyHead, &stLtv, stLtv.wLen);
  190. wLen = wLen + stLtv.wLen;
  191. pbyHead = pbyHead + stLtv.wLen;
  192. }
  193. if(ui->checkBoxWifiName->isChecked()){
  194. memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN);
  195. stLtv.wLen = 24;
  196. stLtv.wTag = ORDER_NETWORK_WIFI_NAME;
  197. strText = ui->lineEditWifiName->text();
  198. strText = strText.trimmed();
  199. byteArray = strText.toUtf8();
  200. byCharLen = byteArray.size();
  201. if(byCharLen > ( stLtv.wLen - 4)){
  202. QMessageBox::information(this, "提示", "字符长度超过最大值"+QString::number(byCharLen));
  203. switchBtnFlag(true);//启用按钮
  204. return;
  205. }
  206. memcpy((void*)stLtv.abyData, byteArray.constData(), byCharLen);
  207. memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
  208. wLen = wLen + stLtv.wLen;
  209. pbyHead = pbyHead + stLtv.wLen;
  210. }
  211. if(ui->checkBoxWifiPwd->isChecked()){
  212. memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN);
  213. stLtv.wLen = 24;
  214. stLtv.wTag = ORDER_NETWORK_WIFI_PWD;
  215. strText = ui->lineEditWifiPwd->text();
  216. strText = strText.trimmed();
  217. byteArray = strText.toUtf8();
  218. byCharLen = byteArray.size();
  219. if(byCharLen > ( stLtv.wLen - 4)){
  220. QMessageBox::information(this, "提示", "字符长度超过最大值"+QString::number(byCharLen));
  221. switchBtnFlag(true);//启用按钮
  222. return;
  223. }
  224. memcpy((void*)stLtv.abyData, byteArray.constData(), byCharLen);
  225. memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
  226. wLen = wLen + stLtv.wLen;
  227. pbyHead = pbyHead + stLtv.wLen;
  228. }
  229. if(ui->checkBoxServiceIp->isChecked()){
  230. memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN);
  231. stLtv.wLen = 36;
  232. stLtv.wTag = ORDER_NETWORK_SERVICE_IP;
  233. strText = ui->lineEditServiceIp->text();
  234. strText = strText.trimmed();
  235. byteArray = strText.toUtf8();
  236. byCharLen = byteArray.size();
  237. if(byCharLen > ( stLtv.wLen - 4)){
  238. QMessageBox::information(this, "提示", "字符长度超过最大值"+QString::number(byCharLen));
  239. switchBtnFlag(true);//启用按钮
  240. return;
  241. }
  242. memcpy((void*)stLtv.abyData, byteArray.constData(), byCharLen);
  243. memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
  244. wLen = wLen + stLtv.wLen;
  245. pbyHead = pbyHead + stLtv.wLen;
  246. }
  247. if(ui->checkBoxServicePort->isChecked()){
  248. memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN);
  249. stLtv.wLen = 6;
  250. stLtv.wTag = ORDER_NETWORK_SERVICE_PORT;
  251. dwCoord = ui->spinBoxServicePort->value();
  252. memcpy((void*)stLtv.abyData, &dwCoord, (stLtv.wLen - 4));
  253. memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
  254. wLen = wLen + stLtv.wLen;
  255. pbyHead = pbyHead + stLtv.wLen;
  256. }
  257. if(wLen > PS_FRAME_MCPA_PAYLOAD_LEN){
  258. QMessageBox::information(this,"提示", "数据长度超过报文最大值,请减少配置项");
  259. switchBtnFlag(true);
  260. return;
  261. }
  262. //将参数发送给主控模块
  263. if(wLen > 0){
  264. emit SignalSendConfigMsg(abyData, wLen, 0);
  265. }else{
  266. QMessageBox::information(this,"提示", "请至少选择一项管理项");
  267. }
  268. //启用按钮
  269. switchBtnFlag(true);
  270. return;
  271. }
  272. //上传数据
  273. void OamNetworkParam::uploadData(){
  274. QJsonObject jsonObject; //定义一个json对象
  275. QString strText = "";
  276. quint32 dwPort = 0;
  277. quint8 bySwitch = 0;
  278. quint8 byTmp = 0;
  279. QVariant varTmp;
  280. //禁用按钮
  281. switchBtnFlag(false);
  282. //网管使能开关
  283. if(ui->checkBoxSwitch->isChecked()){
  284. varTmp = ui->comboBoxSwitch->currentData();
  285. bySwitch = (quint8)varTmp.toInt();
  286. bySwitch -= 1;
  287. jsonObject["network_switch"] = bySwitch;
  288. }
  289. if(ui->checkBoxWifiName->isChecked()){
  290. strText = ui->lineEditWifiName->text();
  291. strText = strText.trimmed();
  292. jsonObject["wifi_name"] = strText;
  293. }
  294. if(ui->checkBoxWifiPwd->isChecked()){
  295. strText = ui->lineEditWifiPwd->text();
  296. strText = strText.trimmed();
  297. jsonObject["wifi_pwd"] = strText;
  298. }
  299. if(ui->checkBoxServiceIp->isChecked()){
  300. strText = ui->lineEditServiceIp->text();
  301. strText = strText.trimmed();
  302. jsonObject["service_ip"] = strText;
  303. }
  304. if(ui->checkBoxServicePort->isChecked()){
  305. dwPort = ui->spinBoxServicePort->value();
  306. jsonObject["service_port"] = QJsonValue::fromVariant(QVariant(static_cast<quint64>(dwPort)));
  307. }
  308. //启用按钮
  309. switchBtnFlag(true);
  310. //发送post请求
  311. emit SignalUploadBtsBaseParamUpdate("guiUploadBtsBaseParamUpdate", jsonObject);
  312. return;
  313. }