mainwidget.cpp 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548
  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. {
  148. newItem9=new QTableWidgetItem(QIcon("resource/open.png"), "接通");
  149. newItem9->setData(Qt::BackgroundRole, QBrush(QColor(0, 255 , 0, 60)));
  150. }
  151. else
  152. {
  153. newItem9 = new QTableWidgetItem(QIcon("resource/close.png"), "断开");
  154. newItem9->setData(Qt::BackgroundRole, QBrush(QColor(255, 69,0, 60)));
  155. }
  156. newItem9->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
  157. ui->tableWidget_CHInfo->setItem(i, 8, newItem9);
  158. QPushButton* buttonoper;
  159. if (m_PDUCHInfo[i].CHStatus)
  160. buttonoper=new QPushButton(QStringLiteral("OFF"), ui->tableWidget_CHInfo);
  161. else buttonoper=new QPushButton(QStringLiteral("ON"), ui->tableWidget_CHInfo);
  162. buttonoper->setFixedSize(60, 23);
  163. auto cellWidget = new QWidget(this);
  164. auto layout = new QHBoxLayout(cellWidget);
  165. layout ->addWidget(buttonoper);
  166. cellWidget->setLayout(layout);
  167. ui->tableWidget_CHInfo->setCellWidget(i, 9, cellWidget);
  168. }
  169. }
  170. void MainWidget::InitConnect()
  171. {
  172. connect(ui->pb_Debug,SIGNAL(clicked()),this,SLOT(slot_changeDebugMode()));
  173. connect(ui->Button_checkserial,SIGNAL(clicked()),this,SLOT(on_Button_checkserial_clicked()));
  174. connect(ui->Button_openserial,SIGNAL(clicked()),this,SLOT(on_Button_openserial_clicked()));
  175. connect(ui->Button_clearrecive,SIGNAL(clicked()),this,SLOT(on_Button_clearrecive_clicked()));
  176. connect(ui->Button_tx,SIGNAL(clicked()),this,SLOT(on_Button_tx_clicked()));
  177. connect(ui->Button_cleartx,SIGNAL(clicked()),this,SLOT(on_Button_cleartx_clicked()));
  178. }
  179. void MainWidget::manual_serialPortReadyRead()
  180. {
  181. QByteArray recBuf = Data_Ctrl::getData()->serialPort->readAll();;
  182. QString str_rev;
  183. // 接收字节计数
  184. recvNum += recBuf.size();
  185. // 状态栏显示计数值
  186. setNumOnLabel(lblRecvNum, "R: ", recvNum);
  187. if(ui->check_hex_recive->checkState() == false){
  188. if(ui->check_timestamp->checkState() == Qt::Checked){
  189. QDateTime nowtime = QDateTime::currentDateTime();
  190. str_rev = "[" + nowtime.toString("yyyy-MM-dd hh:mm:ss") + "] ";
  191. str_rev += QString(recBuf).append("\r\n");
  192. }
  193. else{
  194. // 在当前位置插入文本,不会发生换行。如果没有移动光标到文件结尾,会导致文件超出当前界面显示范围,界面也不会向下滚动。
  195. //ui->recvEdit->appendPlainText(buf);
  196. if(ui->check_changeline->checkState() == Qt::Checked){
  197. str_rev = QString(recBuf).append("\r\n");
  198. }
  199. else
  200. {
  201. str_rev = QString(recBuf);
  202. }
  203. }
  204. }else{
  205. // 16进制显示,并转换为大写
  206. QString str1 = recBuf.toHex().toUpper();//.data();
  207. // 添加空格
  208. QString str2;
  209. for(int i = 0; i<str1.length (); i+=2)
  210. {
  211. str2 += str1.mid (i,2);
  212. str2 += " ";
  213. }
  214. if(ui->check_timestamp->checkState() == Qt::Checked)
  215. {
  216. QDateTime nowtime = QDateTime::currentDateTime();
  217. str_rev = "[" + nowtime.toString("yyyy-MM-dd hh:mm:ss") + "] ";
  218. str_rev += str2.append("\r\n");
  219. }
  220. else
  221. {
  222. if(ui->check_changeline->checkState() == Qt::Checked)
  223. str_rev += str2.append("\r\n");
  224. else
  225. str_rev = str2;
  226. }
  227. }
  228. ui->recive_Edit->insertPlainText(str_rev);
  229. ui->recive_Edit->moveCursor(QTextCursor::End);
  230. }
  231. void MainWidget::on_Button_openserial_clicked()
  232. {
  233. if(ui->baudrate_CB->currentText()=="1200")
  234. Data_Ctrl::getData()->baudRate=QSerialPort::Baud1200;
  235. else if(ui->baudrate_CB->currentText()=="2400")
  236. Data_Ctrl::getData()->baudRate=QSerialPort::Baud2400;
  237. else if(ui->baudrate_CB->currentText()=="4800")
  238. Data_Ctrl::getData()->baudRate=QSerialPort::Baud4800;
  239. else if(ui->baudrate_CB->currentText()=="9600")
  240. Data_Ctrl::getData()->baudRate=QSerialPort::Baud9600;
  241. else if(ui->baudrate_CB->currentText()=="19200")
  242. Data_Ctrl::getData()->baudRate=QSerialPort::Baud19200;
  243. else if(ui->baudrate_CB->currentText()=="38400")
  244. Data_Ctrl::getData()->baudRate=QSerialPort::Baud38400;
  245. else if(ui->baudrate_CB->currentText()=="57600")
  246. Data_Ctrl::getData()->baudRate=QSerialPort::Baud57600;
  247. else if(ui->baudrate_CB->currentText()=="115200")
  248. Data_Ctrl::getData()->baudRate=QSerialPort::Baud115200;
  249. // 获取串口数据位
  250. if(ui->databit_CB->currentText()=="8")
  251. Data_Ctrl::getData()->dataBits=QSerialPort::Data5;
  252. else if(ui->databit_CB->currentText()=="7")
  253. Data_Ctrl::getData()->dataBits=QSerialPort::Data6;
  254. else if(ui->databit_CB->currentText()=="6")
  255. Data_Ctrl::getData()->dataBits=QSerialPort::Data7;
  256. else if(ui->databit_CB->currentText()=="5")
  257. Data_Ctrl::getData()->dataBits=QSerialPort::Data8;
  258. // 获取串口停止位
  259. if(ui->stopbit_CB->currentText()=="1")
  260. Data_Ctrl::getData()->stopBits=QSerialPort::OneStop;
  261. else if(ui->stopbit_CB->currentText()=="1.5")
  262. Data_Ctrl::getData()->stopBits=QSerialPort::OneAndHalfStop;
  263. else if(ui->stopbit_CB->currentText()=="2")
  264. Data_Ctrl::getData()->stopBits=QSerialPort::TwoStop;
  265. // 获取串口奇偶校验位
  266. if(ui->checkbit_CB->currentText() == "None"){
  267. Data_Ctrl::getData()->checkBits = QSerialPort::NoParity;
  268. }else if(ui->checkbit_CB->currentText() == "Odd"){
  269. Data_Ctrl::getData()->checkBits = QSerialPort::OddParity;
  270. }else if(ui->checkbit_CB->currentText() == "Even"){
  271. Data_Ctrl::getData()->checkBits = QSerialPort::EvenParity;
  272. }
  273. // 初始化串口属性,设置 端口号、波特率、数据位、停止位、奇偶校验位数
  274. Data_Ctrl::getData()->serialPort->setPortName(ui->serialCB->currentText());
  275. // 根据初始化好的串口属性,打开串口
  276. // 如果打开成功,反转打开按钮显示和功能。打开失败,无变化,并且弹出错误对话框。
  277. if(ui->Button_openserial->text() == "打开串口"){
  278. if(m_USBCtrl.SeralPortCtrl(SeralCtrlType::Seral_Open)){
  279. //QMessageBox::
  280. ui->Button_openserial->setText("关闭串口");
  281. // 让端口号下拉框不可选,避免误操作(选择功能不可用,控件背景为灰色)
  282. ui->serialCB->setEnabled(false);
  283. }else{
  284. QMessageBox::critical(this, "错误提示", "串口打开失败!!!\r\n该串口可能被占用\r\n请选择正确的串口");
  285. }
  286. //statusBar 状态栏显示端口状态
  287. QString sm = "%1 OPENED, %2, 8, NONE, 1";
  288. QString status = sm.arg(Data_Ctrl::getData()->serialPort->portName()).arg(Data_Ctrl::getData()->serialPort->baudRate());
  289. lblPortState->setText(status);
  290. lblPortState->setStyleSheet("color:green");
  291. }else{
  292. m_USBCtrl.SeralPortCtrl(SeralCtrlType::Seral_Close);
  293. ui->Button_openserial->setText("打开串口");
  294. // 端口号下拉框恢复可选,避免误操作
  295. ui->serialCB->setEnabled(true);
  296. //statusBar 状态栏显示端口状态
  297. QString sm = "%1 CLOSED";
  298. QString status = sm.arg(Data_Ctrl::getData()->serialPort->portName());
  299. lblPortState->setText(status);
  300. lblPortState->setStyleSheet("color:red");
  301. }
  302. }
  303. /*发送数据*/
  304. void MainWidget::on_Button_tx_clicked()
  305. {
  306. QByteArray array;
  307. //Hex复选框
  308. if(ui->check_hexsend->checkState() == Qt::Checked){
  309. //array = QString2Hex(data); //HEX 16进制
  310. array = QByteArray::fromHex(ui->send_Edit->toPlainText().toUtf8()).data();
  311. }else{
  312. //array = data.toLatin1(); //ASCII
  313. array = ui->send_Edit->toPlainText().toLocal8Bit().data();
  314. }
  315. if(ui->check_sendnewline->checkState() == Qt::Checked){
  316. array.append("\r\n");
  317. }
  318. // 如发送成功,会返回发送的字节长度。失败,返回-1。
  319. int a = Data_Ctrl::getData()->serialPort->write(array);
  320. // 发送字节计数并显示
  321. if(a > 0)
  322. {
  323. // 发送字节计数
  324. sendNum += a;
  325. // 状态栏显示计数值
  326. setNumOnLabel(lblSendNum, "S: ", sendNum);
  327. }
  328. }
  329. void MainWidget::on_Button_clearrecive_clicked()
  330. {
  331. ui->recive_Edit->clear();
  332. // 清除发送、接收字节计数
  333. sendNum = 0;
  334. recvNum = 0;
  335. // 状态栏显示计数值
  336. setNumOnLabel(lblSendNum, "S: ", sendNum);
  337. setNumOnLabel(lblRecvNum, "R: ", recvNum);
  338. }
  339. void MainWidget::on_Button_cleartx_clicked()
  340. {
  341. ui->recive_Edit->clear();
  342. // 清除发送字节计数
  343. sendNum = 0;
  344. // 状态栏显示计数值
  345. setNumOnLabel(lblSendNum, "S: ", sendNum);
  346. }
  347. void MainWidget::on_check_autosend_stateChanged(int arg1)
  348. {
  349. // 获取复选框状态,未选为0,选中为2
  350. if(arg1 == 0){
  351. timSend->stop();
  352. // 时间输入框恢复可选
  353. ui->spin_sendtime->setEnabled(true);
  354. }else{
  355. // 对输入的值做限幅,小于10ms会弹出对话框提示
  356. if(ui->spin_sendtime->text().toInt() >= 10){
  357. timSend->start(ui->spin_sendtime->text().toInt());// 设置定时时长,重新计数
  358. // 让时间输入框不可选,避免误操作(输入功能不可用,控件背景为灰色)
  359. ui->spin_sendtime->setEnabled(false);
  360. }else{
  361. ui->check_autosend->setCheckState(Qt::Unchecked);
  362. QMessageBox::critical(this, "错误提示", "定时发送的最小间隔为 10ms\r\n请确保输入的值 >=10");
  363. }
  364. }
  365. }
  366. void MainWidget::on_Button_checkserial_clicked()
  367. {
  368. ui->serialCB->clear();
  369. //通过QSerialPortInfo查找可用串口
  370. foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
  371. {
  372. ui->serialCB->addItem(info.portName());
  373. }
  374. }
  375. void MainWidget::slot_changeDebugMode()
  376. {
  377. int nIndex=ui->stackedWidget->currentIndex();
  378. if(nIndex<2)
  379. {
  380. ui->stackedWidget->setCurrentIndex(2);
  381. }else
  382. {
  383. ui->stackedWidget->setCurrentIndex(1);
  384. }
  385. }
  386. void MainWidget::setNumOnLabel(QLabel *lbl, QString strS, long num)
  387. {
  388. // 标签显示
  389. QString strN;
  390. strN.sprintf("%ld", num);
  391. QString str = strS + strN;
  392. lbl->setText(str);
  393. }
  394. void MainWidget::on_pushButton_L1_clicked()
  395. {
  396. m_CurPhase=1;
  397. ui->pushButton_L1->setIcon(QIcon("resource/Started.png"));
  398. ui->pushButton_L2->setIcon(QIcon("resource/Reset.png"));
  399. ui->pushButton_L3->setIcon(QIcon("resource/Reset.png"));
  400. }
  401. void MainWidget::on_pushButton_L2_clicked()
  402. {
  403. m_CurPhase=2;
  404. ui->pushButton_L1->setIcon(QIcon("resource/Reset.png"));
  405. ui->pushButton_L2->setIcon(QIcon("resource/Started.png"));
  406. ui->pushButton_L3->setIcon(QIcon("resource/Reset.png"));
  407. }
  408. void MainWidget::on_pushButton_L3_clicked()
  409. {
  410. m_CurPhase=3;
  411. ui->pushButton_L1->setIcon(QIcon("resource/Reset.png"));
  412. ui->pushButton_L2->setIcon(QIcon("resource/Reset.png"));
  413. ui->pushButton_L3->setIcon(QIcon("resource/Started.png"));
  414. }
  415. void MainWidget::on_pushButton_ALLOPEN_clicked()
  416. {
  417. QMessageBox::StandardButton confimBtn = QMessageBox::question(this, "确认", "是否打开全部通道?", QMessageBox::Ok | QMessageBox::Cancel);
  418. if (confimBtn == QMessageBox::Cancel) {
  419. return;
  420. }
  421. else
  422. {
  423. return;
  424. }
  425. }
  426. void MainWidget::on_pushButton_ALLCLOSE_clicked()
  427. {
  428. QMessageBox::StandardButton confimBtn = QMessageBox::question(this, "确认", "是否关闭全部通道?", QMessageBox::Ok | QMessageBox::Cancel);
  429. if (confimBtn == QMessageBox::Cancel) {
  430. return;
  431. }
  432. else
  433. {
  434. return;
  435. }
  436. }
  437. void MainWidget::UpdateStatusInfo()
  438. {
  439. QString strTemp;
  440. //更新传感器
  441. strTemp.sprintf("%0.2f", m_PDUAllInfo.Sensor_Temperature);
  442. ui->label_temperature->setText(strTemp);
  443. strTemp.sprintf("%0.2f", m_PDUAllInfo.Sensor_Humidity);
  444. ui->label_humidity->setText(strTemp);
  445. strTemp.sprintf("%0.2f", m_PDUAllInfo.Sensor_WaterImmersion);//水浸温度
  446. //ui->label_temperature->setText(strTemp);
  447. strTemp.sprintf("%0.2f", m_PDUAllInfo.Sensor_INTemperature);//进液温度
  448. //ui->label_humidity->setText(strTemp);
  449. strTemp.sprintf("%0.2f", m_PDUAllInfo.Sensor_OUTTemperature);//出液温度
  450. // ui->label_humidity->setText(strTemp);
  451. //更新总体电源状态
  452. if(1==m_CurPhase)
  453. {
  454. strTemp.sprintf("%0.3f", m_PDUAllInfo.AllPower_L1);
  455. ui->lineEdit_TotalPower->setText(strTemp);
  456. strTemp.sprintf("%0.3f", m_PDUAllInfo.AllConsumption_L1);
  457. ui->lineEdit_TotalConsumption->setText(strTemp);
  458. }
  459. else if(2==m_CurPhase)
  460. {
  461. strTemp.sprintf("%0.3f", m_PDUAllInfo.AllPower_L2);
  462. ui->lineEdit_TotalPower->setText(strTemp);
  463. strTemp.sprintf("%0.3f", m_PDUAllInfo.AllConsumption_L2);
  464. ui->lineEdit_TotalConsumption->setText(strTemp);
  465. }
  466. else if(3==m_CurPhase)
  467. {
  468. strTemp.sprintf("%0.3f", m_PDUAllInfo.AllPower_L3);
  469. ui->lineEdit_TotalPower->setText(strTemp);
  470. strTemp.sprintf("%0.3f", m_PDUAllInfo.AllConsumption_L3);
  471. ui->lineEdit_TotalConsumption->setText(strTemp);
  472. }
  473. //更新通道信息
  474. for (int i=0;i<64;i++) {
  475. m_PDUCHInfo[i].CHVoltage+=0.432;
  476. m_PDUCHInfo[i].CHPower+=0.343;
  477. m_PDUCHInfo[i].CHCurrent+=0.112;
  478. m_PDUCHInfo[i].CHConsumption+=0.063;
  479. m_PDUCHInfo[i].CHFactor=0.983;
  480. if(i%2==0)m_PDUCHInfo[i].CHStatus=true;
  481. }
  482. InitCHTable(m_TotalCHNum,false);
  483. }