mainwidget.cpp 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541
  1. #include "mainwidget.h"
  2. #include "ui_mainwidget.h"
  3. #include "Data_Ctrl.h"
  4. #include <QMessageBox>
  5. #include <QDir>
  6. MainWidget::MainWidget(QWidget *parent)
  7. : QWidget(parent)
  8. , ui(new Ui::MainWidget)
  9. {
  10. ui->setupUi(this);
  11. ui->serialCB->clear();
  12. m_USBCtrl.SerialPortInit();
  13. connect(Data_Ctrl::getData()->serialPort,SIGNAL(readyRead()),this,SLOT(manual_serialPortReadyRead()));/*手动连接槽函数*/
  14. InitUI();
  15. InitConnect();
  16. // 定时发送-定时器
  17. timSend = new QTimer;
  18. timSend->setInterval(1000);// 设置默认定时时长1000ms
  19. connect(timSend, &QTimer::timeout, this, [=](){
  20. on_Button_tx_clicked();
  21. });
  22. //QString currentPath = QDir::currentPath();
  23. m_TotalCHNum=24;
  24. m_CurPhase=1;
  25. for (int i=0;i<64;i++) {
  26. m_PDUCHInfo[i].CHNum=i+1;
  27. m_PDUCHInfo[i].CHName.sprintf("CH%d", i+1);
  28. }
  29. InitCHTable(m_TotalCHNum,true);
  30. _timer_update_info = new QTimer(this);
  31. _timer_update_info->setInterval(1000);
  32. connect(_timer_update_info, SIGNAL(timeout()), this, SLOT(UpdateStatusInfo()));
  33. _timer_update_info->start();
  34. }
  35. MainWidget::~MainWidget()
  36. {
  37. delete ui;
  38. }
  39. void MainWidget::InitUI()
  40. {
  41. //通过QSerialPortInfo查找可用串口
  42. foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
  43. {
  44. ui->serialCB->addItem(info.portName());
  45. }
  46. // 发送、接收计数清零
  47. sendNum = 0;
  48. recvNum = 0;
  49. // 状态栏的收、发计数标签
  50. lblSendNum = new QLabel(this);
  51. lblRecvNum = new QLabel(this);
  52. lblPortState = new QLabel(this);
  53. lblPortState->setText("Connected");
  54. //设置串口状态标签为绿色 表示已连接状态
  55. lblPortState->setStyleSheet("color:red");
  56. // 设置标签最小大小
  57. lblSendNum->setMinimumSize(100, 20);
  58. lblRecvNum->setMinimumSize(100, 20);
  59. lblPortState->setMinimumSize(550, 20);
  60. setNumOnLabel(lblSendNum, "S: ", sendNum);
  61. setNumOnLabel(lblRecvNum, "R: ", recvNum);
  62. // 从右往左依次添加
  63. ui->horizontalLayout_7->addWidget(lblPortState);
  64. ui->horizontalLayout_7->addWidget(lblSendNum);
  65. ui->horizontalLayout_7->addWidget(lblRecvNum);
  66. ui->pushButton_L1->setIcon(QIcon("resource/Started.png"));
  67. ui->pushButton_L2->setIcon(QIcon("resource/Reset.png"));
  68. ui->pushButton_L3->setIcon(QIcon("resource/Reset.png"));
  69. ui->pushButton_ALLOPEN->setIcon(QIcon("resource/open.png"));
  70. ui->pushButton_ALLCLOSE->setIcon(QIcon("resource/close.png"));
  71. }
  72. void MainWidget::InitCHTable(int CHNum,bool initFlag)
  73. {
  74. if(CHNum>64) return;
  75. if(initFlag)
  76. {
  77. ui->tableWidget_CHInfo->setColumnCount(10);
  78. ui->tableWidget_CHInfo->setRowCount(CHNum);
  79. QStringList pTableHeadList;
  80. pTableHeadList<< "通道" << "名称" << "相位" << "电压(V)" << "电流(A)"<< "功率(W)" << "功率因数" << "耗电量(kWh)" << "状态" << "操作";
  81. ui->tableWidget_CHInfo->setHorizontalHeaderLabels(pTableHeadList);
  82. ui->tableWidget_CHInfo->setEditTriggers(QAbstractItemView::NoEditTriggers);
  83. ui->tableWidget_CHInfo->setSelectionBehavior(QAbstractItemView::SelectRows);
  84. ui->tableWidget_CHInfo->setSelectionMode(QAbstractItemView::SingleSelection);
  85. ui->tableWidget_CHInfo->verticalHeader()->hide();
  86. ui->tableWidget_CHInfo->setFont(QFont("Helvetica"));
  87. ui->tableWidget_CHInfo->setColumnWidth(0, 60);
  88. ui->tableWidget_CHInfo->setColumnWidth(1, 100);
  89. ui->tableWidget_CHInfo->setColumnWidth(2, 100);
  90. ui->tableWidget_CHInfo->setColumnWidth(3, 100);
  91. ui->tableWidget_CHInfo->setColumnWidth(4, 100);
  92. ui->tableWidget_CHInfo->setColumnWidth(5, 100);
  93. ui->tableWidget_CHInfo->setColumnWidth(6, 100);
  94. ui->tableWidget_CHInfo->setColumnWidth(7, 100);
  95. ui->tableWidget_CHInfo->setColumnWidth(8, 80);
  96. ui->tableWidget_CHInfo->setColumnWidth(9, 80);
  97. }
  98. ui->tableWidget_CHInfo->clearContents();
  99. for (int i = 0; i < CHNum;i++)
  100. {
  101. ui->tableWidget_CHInfo->setRowHeight(i, 50);
  102. QString chid;
  103. chid.sprintf("%d", m_PDUCHInfo[i].CHNum);
  104. QTableWidgetItem *newItem0 = new QTableWidgetItem(chid);
  105. newItem0->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
  106. ui->tableWidget_CHInfo->setItem(i, 0, newItem0);
  107. QTableWidgetItem *newItem1 = new QTableWidgetItem(m_PDUCHInfo[i].CHName);
  108. newItem1->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
  109. ui->tableWidget_CHInfo->setItem(i, 1, newItem1);
  110. QTableWidgetItem *newItem3;
  111. if (0 == m_PDUCHInfo[i].CHPhase)
  112. newItem3 = new QTableWidgetItem("L1");
  113. else if (1 == m_PDUCHInfo[i].CHPhase)
  114. newItem3 = new QTableWidgetItem("L2");
  115. else if (2 == m_PDUCHInfo[i].CHPhase)
  116. newItem3 = new QTableWidgetItem("L3");
  117. else newItem3 = new QTableWidgetItem("Null");
  118. newItem3->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
  119. ui->tableWidget_CHInfo->setItem(i, 2, newItem3);
  120. QString chV;
  121. chV.sprintf("%0.3f", m_PDUCHInfo[i].CHVoltage);
  122. QTableWidgetItem *newItem4 = new QTableWidgetItem(chV);
  123. newItem4->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
  124. ui->tableWidget_CHInfo->setItem(i, 3, newItem4);
  125. QString chI;
  126. chI.sprintf("%0.3f", m_PDUCHInfo[i].CHCurrent);
  127. QTableWidgetItem *newItem5 = new QTableWidgetItem(chI);
  128. newItem5->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
  129. ui->tableWidget_CHInfo->setItem(i, 4, newItem5);
  130. QString chP;
  131. chP.sprintf("%0.3f", m_PDUCHInfo[i].CHPower);
  132. QTableWidgetItem *newItem6 = new QTableWidgetItem(chP);
  133. newItem6->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
  134. ui->tableWidget_CHInfo->setItem(i, 5, newItem6);
  135. QString chF;
  136. chF.sprintf("%0.3f", m_PDUCHInfo[i].CHFactor);
  137. QTableWidgetItem *newItem7 = new QTableWidgetItem(chF);
  138. newItem7->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
  139. ui->tableWidget_CHInfo->setItem(i, 6, newItem7);
  140. QString chC;
  141. chC.sprintf("%0.3f", m_PDUCHInfo[i].CHConsumption);
  142. QTableWidgetItem *newItem8 = new QTableWidgetItem(chC);
  143. newItem8->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
  144. ui->tableWidget_CHInfo->setItem(i, 7, newItem8);
  145. QTableWidgetItem *newItem9;
  146. if (m_PDUCHInfo[i].CHStatus)
  147. newItem9=new QTableWidgetItem(QIcon("resource/open.png"), "接通");
  148. else newItem9 = new QTableWidgetItem(QIcon("resource/close.png"), "断开");
  149. newItem9->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
  150. ui->tableWidget_CHInfo->setItem(i, 8, newItem9);
  151. QPushButton* buttonoper;
  152. if (m_PDUCHInfo[i].CHStatus)
  153. buttonoper=new QPushButton(QStringLiteral("OFF"), ui->tableWidget_CHInfo);
  154. else buttonoper=new QPushButton(QStringLiteral("ON"), ui->tableWidget_CHInfo);
  155. buttonoper->setFixedSize(60, 23);
  156. auto cellWidget = new QWidget(this);
  157. auto layout = new QHBoxLayout(cellWidget);
  158. layout ->addWidget(buttonoper);
  159. cellWidget->setLayout(layout);
  160. ui->tableWidget_CHInfo->setCellWidget(i, 9, cellWidget);
  161. }
  162. }
  163. void MainWidget::InitConnect()
  164. {
  165. connect(ui->pb_Debug,SIGNAL(clicked()),this,SLOT(slot_changeDebugMode()));
  166. connect(ui->Button_checkserial,SIGNAL(clicked()),this,SLOT(on_Button_checkserial_clicked()));
  167. connect(ui->Button_openserial,SIGNAL(clicked()),this,SLOT(on_Button_openserial_clicked()));
  168. connect(ui->Button_clearrecive,SIGNAL(clicked()),this,SLOT(on_Button_clearrecive_clicked()));
  169. connect(ui->Button_tx,SIGNAL(clicked()),this,SLOT(on_Button_tx_clicked()));
  170. connect(ui->Button_cleartx,SIGNAL(clicked()),this,SLOT(on_Button_cleartx_clicked()));
  171. }
  172. void MainWidget::manual_serialPortReadyRead()
  173. {
  174. QByteArray recBuf = Data_Ctrl::getData()->serialPort->readAll();;
  175. QString str_rev;
  176. // 接收字节计数
  177. recvNum += recBuf.size();
  178. // 状态栏显示计数值
  179. setNumOnLabel(lblRecvNum, "R: ", recvNum);
  180. if(ui->check_hex_recive->checkState() == false){
  181. if(ui->check_timestamp->checkState() == Qt::Checked){
  182. QDateTime nowtime = QDateTime::currentDateTime();
  183. str_rev = "[" + nowtime.toString("yyyy-MM-dd hh:mm:ss") + "] ";
  184. str_rev += QString(recBuf).append("\r\n");
  185. }
  186. else{
  187. // 在当前位置插入文本,不会发生换行。如果没有移动光标到文件结尾,会导致文件超出当前界面显示范围,界面也不会向下滚动。
  188. //ui->recvEdit->appendPlainText(buf);
  189. if(ui->check_changeline->checkState() == Qt::Checked){
  190. str_rev = QString(recBuf).append("\r\n");
  191. }
  192. else
  193. {
  194. str_rev = QString(recBuf);
  195. }
  196. }
  197. }else{
  198. // 16进制显示,并转换为大写
  199. QString str1 = recBuf.toHex().toUpper();//.data();
  200. // 添加空格
  201. QString str2;
  202. for(int i = 0; i<str1.length (); i+=2)
  203. {
  204. str2 += str1.mid (i,2);
  205. str2 += " ";
  206. }
  207. if(ui->check_timestamp->checkState() == Qt::Checked)
  208. {
  209. QDateTime nowtime = QDateTime::currentDateTime();
  210. str_rev = "[" + nowtime.toString("yyyy-MM-dd hh:mm:ss") + "] ";
  211. str_rev += str2.append("\r\n");
  212. }
  213. else
  214. {
  215. if(ui->check_changeline->checkState() == Qt::Checked)
  216. str_rev += str2.append("\r\n");
  217. else
  218. str_rev = str2;
  219. }
  220. }
  221. ui->recive_Edit->insertPlainText(str_rev);
  222. ui->recive_Edit->moveCursor(QTextCursor::End);
  223. }
  224. void MainWidget::on_Button_openserial_clicked()
  225. {
  226. if(ui->baudrate_CB->currentText()=="1200")
  227. Data_Ctrl::getData()->baudRate=QSerialPort::Baud1200;
  228. else if(ui->baudrate_CB->currentText()=="2400")
  229. Data_Ctrl::getData()->baudRate=QSerialPort::Baud2400;
  230. else if(ui->baudrate_CB->currentText()=="4800")
  231. Data_Ctrl::getData()->baudRate=QSerialPort::Baud4800;
  232. else if(ui->baudrate_CB->currentText()=="9600")
  233. Data_Ctrl::getData()->baudRate=QSerialPort::Baud9600;
  234. else if(ui->baudrate_CB->currentText()=="19200")
  235. Data_Ctrl::getData()->baudRate=QSerialPort::Baud19200;
  236. else if(ui->baudrate_CB->currentText()=="38400")
  237. Data_Ctrl::getData()->baudRate=QSerialPort::Baud38400;
  238. else if(ui->baudrate_CB->currentText()=="57600")
  239. Data_Ctrl::getData()->baudRate=QSerialPort::Baud57600;
  240. else if(ui->baudrate_CB->currentText()=="115200")
  241. Data_Ctrl::getData()->baudRate=QSerialPort::Baud115200;
  242. // 获取串口数据位
  243. if(ui->databit_CB->currentText()=="8")
  244. Data_Ctrl::getData()->dataBits=QSerialPort::Data5;
  245. else if(ui->databit_CB->currentText()=="7")
  246. Data_Ctrl::getData()->dataBits=QSerialPort::Data6;
  247. else if(ui->databit_CB->currentText()=="6")
  248. Data_Ctrl::getData()->dataBits=QSerialPort::Data7;
  249. else if(ui->databit_CB->currentText()=="5")
  250. Data_Ctrl::getData()->dataBits=QSerialPort::Data8;
  251. // 获取串口停止位
  252. if(ui->stopbit_CB->currentText()=="1")
  253. Data_Ctrl::getData()->stopBits=QSerialPort::OneStop;
  254. else if(ui->stopbit_CB->currentText()=="1.5")
  255. Data_Ctrl::getData()->stopBits=QSerialPort::OneAndHalfStop;
  256. else if(ui->stopbit_CB->currentText()=="2")
  257. Data_Ctrl::getData()->stopBits=QSerialPort::TwoStop;
  258. // 获取串口奇偶校验位
  259. if(ui->checkbit_CB->currentText() == "None"){
  260. Data_Ctrl::getData()->checkBits = QSerialPort::NoParity;
  261. }else if(ui->checkbit_CB->currentText() == "Odd"){
  262. Data_Ctrl::getData()->checkBits = QSerialPort::OddParity;
  263. }else if(ui->checkbit_CB->currentText() == "Even"){
  264. Data_Ctrl::getData()->checkBits = QSerialPort::EvenParity;
  265. }
  266. // 初始化串口属性,设置 端口号、波特率、数据位、停止位、奇偶校验位数
  267. Data_Ctrl::getData()->serialPort->setPortName(ui->serialCB->currentText());
  268. // 根据初始化好的串口属性,打开串口
  269. // 如果打开成功,反转打开按钮显示和功能。打开失败,无变化,并且弹出错误对话框。
  270. if(ui->Button_openserial->text() == "打开串口"){
  271. if(m_USBCtrl.SeralPortCtrl(SeralCtrlType::Seral_Open)){
  272. //QMessageBox::
  273. ui->Button_openserial->setText("关闭串口");
  274. // 让端口号下拉框不可选,避免误操作(选择功能不可用,控件背景为灰色)
  275. ui->serialCB->setEnabled(false);
  276. }else{
  277. QMessageBox::critical(this, "错误提示", "串口打开失败!!!\r\n该串口可能被占用\r\n请选择正确的串口");
  278. }
  279. //statusBar 状态栏显示端口状态
  280. QString sm = "%1 OPENED, %2, 8, NONE, 1";
  281. QString status = sm.arg(Data_Ctrl::getData()->serialPort->portName()).arg(Data_Ctrl::getData()->serialPort->baudRate());
  282. lblPortState->setText(status);
  283. lblPortState->setStyleSheet("color:green");
  284. }else{
  285. m_USBCtrl.SeralPortCtrl(SeralCtrlType::Seral_Close);
  286. ui->Button_openserial->setText("打开串口");
  287. // 端口号下拉框恢复可选,避免误操作
  288. ui->serialCB->setEnabled(true);
  289. //statusBar 状态栏显示端口状态
  290. QString sm = "%1 CLOSED";
  291. QString status = sm.arg(Data_Ctrl::getData()->serialPort->portName());
  292. lblPortState->setText(status);
  293. lblPortState->setStyleSheet("color:red");
  294. }
  295. }
  296. /*发送数据*/
  297. void MainWidget::on_Button_tx_clicked()
  298. {
  299. QByteArray array;
  300. //Hex复选框
  301. if(ui->check_hexsend->checkState() == Qt::Checked){
  302. //array = QString2Hex(data); //HEX 16进制
  303. array = QByteArray::fromHex(ui->send_Edit->toPlainText().toUtf8()).data();
  304. }else{
  305. //array = data.toLatin1(); //ASCII
  306. array = ui->send_Edit->toPlainText().toLocal8Bit().data();
  307. }
  308. if(ui->check_sendnewline->checkState() == Qt::Checked){
  309. array.append("\r\n");
  310. }
  311. // 如发送成功,会返回发送的字节长度。失败,返回-1。
  312. int a = Data_Ctrl::getData()->serialPort->write(array);
  313. // 发送字节计数并显示
  314. if(a > 0)
  315. {
  316. // 发送字节计数
  317. sendNum += a;
  318. // 状态栏显示计数值
  319. setNumOnLabel(lblSendNum, "S: ", sendNum);
  320. }
  321. }
  322. void MainWidget::on_Button_clearrecive_clicked()
  323. {
  324. ui->recive_Edit->clear();
  325. // 清除发送、接收字节计数
  326. sendNum = 0;
  327. recvNum = 0;
  328. // 状态栏显示计数值
  329. setNumOnLabel(lblSendNum, "S: ", sendNum);
  330. setNumOnLabel(lblRecvNum, "R: ", recvNum);
  331. }
  332. void MainWidget::on_Button_cleartx_clicked()
  333. {
  334. ui->recive_Edit->clear();
  335. // 清除发送字节计数
  336. sendNum = 0;
  337. // 状态栏显示计数值
  338. setNumOnLabel(lblSendNum, "S: ", sendNum);
  339. }
  340. void MainWidget::on_check_autosend_stateChanged(int arg1)
  341. {
  342. // 获取复选框状态,未选为0,选中为2
  343. if(arg1 == 0){
  344. timSend->stop();
  345. // 时间输入框恢复可选
  346. ui->spin_sendtime->setEnabled(true);
  347. }else{
  348. // 对输入的值做限幅,小于10ms会弹出对话框提示
  349. if(ui->spin_sendtime->text().toInt() >= 10){
  350. timSend->start(ui->spin_sendtime->text().toInt());// 设置定时时长,重新计数
  351. // 让时间输入框不可选,避免误操作(输入功能不可用,控件背景为灰色)
  352. ui->spin_sendtime->setEnabled(false);
  353. }else{
  354. ui->check_autosend->setCheckState(Qt::Unchecked);
  355. QMessageBox::critical(this, "错误提示", "定时发送的最小间隔为 10ms\r\n请确保输入的值 >=10");
  356. }
  357. }
  358. }
  359. void MainWidget::on_Button_checkserial_clicked()
  360. {
  361. ui->serialCB->clear();
  362. //通过QSerialPortInfo查找可用串口
  363. foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
  364. {
  365. ui->serialCB->addItem(info.portName());
  366. }
  367. }
  368. void MainWidget::slot_changeDebugMode()
  369. {
  370. int nIndex=ui->stackedWidget->currentIndex();
  371. if(nIndex<2)
  372. {
  373. ui->stackedWidget->setCurrentIndex(2);
  374. }else
  375. {
  376. ui->stackedWidget->setCurrentIndex(1);
  377. }
  378. }
  379. void MainWidget::setNumOnLabel(QLabel *lbl, QString strS, long num)
  380. {
  381. // 标签显示
  382. QString strN;
  383. strN.sprintf("%ld", num);
  384. QString str = strS + strN;
  385. lbl->setText(str);
  386. }
  387. void MainWidget::on_pushButton_L1_clicked()
  388. {
  389. m_CurPhase=1;
  390. ui->pushButton_L1->setIcon(QIcon("resource/Started.png"));
  391. ui->pushButton_L2->setIcon(QIcon("resource/Reset.png"));
  392. ui->pushButton_L3->setIcon(QIcon("resource/Reset.png"));
  393. }
  394. void MainWidget::on_pushButton_L2_clicked()
  395. {
  396. m_CurPhase=2;
  397. ui->pushButton_L1->setIcon(QIcon("resource/Reset.png"));
  398. ui->pushButton_L2->setIcon(QIcon("resource/Started.png"));
  399. ui->pushButton_L3->setIcon(QIcon("resource/Reset.png"));
  400. }
  401. void MainWidget::on_pushButton_L3_clicked()
  402. {
  403. m_CurPhase=3;
  404. ui->pushButton_L1->setIcon(QIcon("resource/Reset.png"));
  405. ui->pushButton_L2->setIcon(QIcon("resource/Reset.png"));
  406. ui->pushButton_L3->setIcon(QIcon("resource/Started.png"));
  407. }
  408. void MainWidget::on_pushButton_ALLOPEN_clicked()
  409. {
  410. QMessageBox::StandardButton confimBtn = QMessageBox::question(this, "确认", "是否打开全部通道?", QMessageBox::Ok | QMessageBox::Cancel);
  411. if (confimBtn == QMessageBox::Cancel) {
  412. return;
  413. }
  414. else
  415. {
  416. return;
  417. }
  418. }
  419. void MainWidget::on_pushButton_ALLCLOSE_clicked()
  420. {
  421. QMessageBox::StandardButton confimBtn = QMessageBox::question(this, "确认", "是否关闭全部通道?", QMessageBox::Ok | QMessageBox::Cancel);
  422. if (confimBtn == QMessageBox::Cancel) {
  423. return;
  424. }
  425. else
  426. {
  427. return;
  428. }
  429. }
  430. void MainWidget::UpdateStatusInfo()
  431. {
  432. QString strTemp;
  433. //更新传感器
  434. strTemp.sprintf("%0.2f", m_PDUAllInfo.Sensor_Temperature);
  435. ui->label_temperature->setText(strTemp);
  436. strTemp.sprintf("%0.2f", m_PDUAllInfo.Sensor_Humidity);
  437. ui->label_humidity->setText(strTemp);
  438. strTemp.sprintf("%0.2f", m_PDUAllInfo.Sensor_WaterImmersion);//水浸温度
  439. //ui->label_temperature->setText(strTemp);
  440. strTemp.sprintf("%0.2f", m_PDUAllInfo.Sensor_INTemperature);//进液温度
  441. //ui->label_humidity->setText(strTemp);
  442. strTemp.sprintf("%0.2f", m_PDUAllInfo.Sensor_OUTTemperature);//出液温度
  443. // ui->label_humidity->setText(strTemp);
  444. //更新总体电源状态
  445. if(1==m_CurPhase)
  446. {
  447. strTemp.sprintf("%0.3f", m_PDUAllInfo.AllPower_L1);
  448. ui->lineEdit_TotalPower->setText(strTemp);
  449. strTemp.sprintf("%0.3f", m_PDUAllInfo.AllConsumption_L1);
  450. ui->lineEdit_TotalConsumption->setText(strTemp);
  451. }
  452. else if(2==m_CurPhase)
  453. {
  454. strTemp.sprintf("%0.3f", m_PDUAllInfo.AllPower_L2);
  455. ui->lineEdit_TotalPower->setText(strTemp);
  456. strTemp.sprintf("%0.3f", m_PDUAllInfo.AllConsumption_L2);
  457. ui->lineEdit_TotalConsumption->setText(strTemp);
  458. }
  459. else if(3==m_CurPhase)
  460. {
  461. strTemp.sprintf("%0.3f", m_PDUAllInfo.AllPower_L3);
  462. ui->lineEdit_TotalPower->setText(strTemp);
  463. strTemp.sprintf("%0.3f", m_PDUAllInfo.AllConsumption_L3);
  464. ui->lineEdit_TotalConsumption->setText(strTemp);
  465. }
  466. //更新通道信息
  467. for (int i=0;i<64;i++) {
  468. m_PDUCHInfo[i].CHVoltage+=0.432;
  469. m_PDUCHInfo[i].CHPower+=0.343;
  470. m_PDUCHInfo[i].CHCurrent+=0.112;
  471. m_PDUCHInfo[i].CHConsumption+=0.063;
  472. m_PDUCHInfo[i].CHFactor=0.983;
  473. m_PDUCHInfo[i].CHStatus=true;
  474. }
  475. InitCHTable(m_TotalCHNum,false);
  476. }