| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548 |
- #include "mainwidget.h"
- #include "ui_mainwidget.h"
- #include "Data_Ctrl.h"
- #include <QMessageBox>
- #include <QDir>
- MainWidget::MainWidget(QWidget *parent)
- : QWidget(parent)
- , ui(new Ui::MainWidget)
- {
- ui->setupUi(this);
- ui->serialCB->clear();
- m_USBCtrl.SerialPortInit();
- connect(Data_Ctrl::getData()->serialPort,SIGNAL(readyRead()),this,SLOT(manual_serialPortReadyRead()));/*手动连接槽函数*/
- InitUI();
- InitConnect();
- // 定时发送-定时器
- timSend = new QTimer;
- timSend->setInterval(1000);// 设置默认定时时长1000ms
- connect(timSend, &QTimer::timeout, this, [=](){
- on_Button_tx_clicked();
- });
- //QString currentPath = QDir::currentPath();
- m_TotalCHNum=24;
- m_CurPhase=1;
- for (int i=0;i<64;i++) {
- m_PDUCHInfo[i].CHNum=i+1;
- m_PDUCHInfo[i].CHName.sprintf("CH%d", i+1);
- }
- InitCHTable(m_TotalCHNum,true);
- _timer_update_info = new QTimer(this);
- _timer_update_info->setInterval(1000);
- connect(_timer_update_info, SIGNAL(timeout()), this, SLOT(UpdateStatusInfo()));
- _timer_update_info->start();
- }
- MainWidget::~MainWidget()
- {
- delete ui;
- }
- void MainWidget::InitUI()
- {
- //通过QSerialPortInfo查找可用串口
- foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
- {
- ui->serialCB->addItem(info.portName());
- }
- // 发送、接收计数清零
- sendNum = 0;
- recvNum = 0;
- // 状态栏的收、发计数标签
- lblSendNum = new QLabel(this);
- lblRecvNum = new QLabel(this);
- lblPortState = new QLabel(this);
- lblPortState->setText("Connected");
- //设置串口状态标签为绿色 表示已连接状态
- lblPortState->setStyleSheet("color:red");
- // 设置标签最小大小
- lblSendNum->setMinimumSize(100, 20);
- lblRecvNum->setMinimumSize(100, 20);
- lblPortState->setMinimumSize(550, 20);
- setNumOnLabel(lblSendNum, "S: ", sendNum);
- setNumOnLabel(lblRecvNum, "R: ", recvNum);
- // 从右往左依次添加
- ui->horizontalLayout_7->addWidget(lblPortState);
- ui->horizontalLayout_7->addWidget(lblSendNum);
- ui->horizontalLayout_7->addWidget(lblRecvNum);
- ui->pushButton_L1->setIcon(QIcon("resource/Started.png"));
- ui->pushButton_L2->setIcon(QIcon("resource/Reset.png"));
- ui->pushButton_L3->setIcon(QIcon("resource/Reset.png"));
- ui->pushButton_ALLOPEN->setIcon(QIcon("resource/open.png"));
- ui->pushButton_ALLCLOSE->setIcon(QIcon("resource/close.png"));
- }
- void MainWidget::InitCHTable(int CHNum,bool initFlag)
- {
- if(CHNum>64) return;
- if(initFlag)
- {
- ui->tableWidget_CHInfo->setColumnCount(10);
- ui->tableWidget_CHInfo->setRowCount(CHNum);
- QStringList pTableHeadList;
- pTableHeadList<< "通道" << "名称" << "相位" << "电压(V)" << "电流(A)"<< "功率(W)" << "功率因数" << "耗电量(kWh)" << "状态" << "操作";
- ui->tableWidget_CHInfo->setHorizontalHeaderLabels(pTableHeadList);
- ui->tableWidget_CHInfo->setEditTriggers(QAbstractItemView::NoEditTriggers);
- ui->tableWidget_CHInfo->setSelectionBehavior(QAbstractItemView::SelectRows);
- ui->tableWidget_CHInfo->setSelectionMode(QAbstractItemView::SingleSelection);
- ui->tableWidget_CHInfo->verticalHeader()->hide();
- ui->tableWidget_CHInfo->setFont(QFont("Helvetica"));
- ui->tableWidget_CHInfo->setColumnWidth(0, 60);
- ui->tableWidget_CHInfo->setColumnWidth(1, 100);
- ui->tableWidget_CHInfo->setColumnWidth(2, 100);
- ui->tableWidget_CHInfo->setColumnWidth(3, 100);
- ui->tableWidget_CHInfo->setColumnWidth(4, 100);
- ui->tableWidget_CHInfo->setColumnWidth(5, 100);
- ui->tableWidget_CHInfo->setColumnWidth(6, 100);
- ui->tableWidget_CHInfo->setColumnWidth(7, 100);
- ui->tableWidget_CHInfo->setColumnWidth(8, 80);
- ui->tableWidget_CHInfo->setColumnWidth(9, 80);
- }
- ui->tableWidget_CHInfo->clearContents();
- for (int i = 0; i < CHNum;i++)
- {
- ui->tableWidget_CHInfo->setRowHeight(i, 50);
- QString chid;
- chid.sprintf("%d", m_PDUCHInfo[i].CHNum);
- QTableWidgetItem *newItem0 = new QTableWidgetItem(chid);
- newItem0->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
- ui->tableWidget_CHInfo->setItem(i, 0, newItem0);
- QTableWidgetItem *newItem1 = new QTableWidgetItem(m_PDUCHInfo[i].CHName);
- newItem1->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
- ui->tableWidget_CHInfo->setItem(i, 1, newItem1);
- QTableWidgetItem *newItem3;
- if (0 == m_PDUCHInfo[i].CHPhase)
- newItem3 = new QTableWidgetItem("L1");
- else if (1 == m_PDUCHInfo[i].CHPhase)
- newItem3 = new QTableWidgetItem("L2");
- else if (2 == m_PDUCHInfo[i].CHPhase)
- newItem3 = new QTableWidgetItem("L3");
- else newItem3 = new QTableWidgetItem("Null");
- newItem3->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
- ui->tableWidget_CHInfo->setItem(i, 2, newItem3);
- QString chV;
- chV.sprintf("%0.3f", m_PDUCHInfo[i].CHVoltage);
- QTableWidgetItem *newItem4 = new QTableWidgetItem(chV);
- newItem4->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
- ui->tableWidget_CHInfo->setItem(i, 3, newItem4);
- QString chI;
- chI.sprintf("%0.3f", m_PDUCHInfo[i].CHCurrent);
- QTableWidgetItem *newItem5 = new QTableWidgetItem(chI);
- newItem5->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
- ui->tableWidget_CHInfo->setItem(i, 4, newItem5);
- QString chP;
- chP.sprintf("%0.3f", m_PDUCHInfo[i].CHPower);
- QTableWidgetItem *newItem6 = new QTableWidgetItem(chP);
- newItem6->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
- ui->tableWidget_CHInfo->setItem(i, 5, newItem6);
- QString chF;
- chF.sprintf("%0.3f", m_PDUCHInfo[i].CHFactor);
- QTableWidgetItem *newItem7 = new QTableWidgetItem(chF);
- newItem7->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
- ui->tableWidget_CHInfo->setItem(i, 6, newItem7);
- QString chC;
- chC.sprintf("%0.3f", m_PDUCHInfo[i].CHConsumption);
- QTableWidgetItem *newItem8 = new QTableWidgetItem(chC);
- newItem8->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
- ui->tableWidget_CHInfo->setItem(i, 7, newItem8);
- QTableWidgetItem *newItem9;
- if (m_PDUCHInfo[i].CHStatus)
- {
- newItem9=new QTableWidgetItem(QIcon("resource/open.png"), "接通");
- newItem9->setData(Qt::BackgroundRole, QBrush(QColor(0, 255 , 0, 60)));
- }
- else
- {
- newItem9 = new QTableWidgetItem(QIcon("resource/close.png"), "断开");
- newItem9->setData(Qt::BackgroundRole, QBrush(QColor(255, 69,0, 60)));
- }
- newItem9->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
- ui->tableWidget_CHInfo->setItem(i, 8, newItem9);
- QPushButton* buttonoper;
- if (m_PDUCHInfo[i].CHStatus)
- buttonoper=new QPushButton(QStringLiteral("OFF"), ui->tableWidget_CHInfo);
- else buttonoper=new QPushButton(QStringLiteral("ON"), ui->tableWidget_CHInfo);
- buttonoper->setFixedSize(60, 23);
- auto cellWidget = new QWidget(this);
- auto layout = new QHBoxLayout(cellWidget);
- layout ->addWidget(buttonoper);
- cellWidget->setLayout(layout);
- ui->tableWidget_CHInfo->setCellWidget(i, 9, cellWidget);
- }
- }
- void MainWidget::InitConnect()
- {
- connect(ui->pb_Debug,SIGNAL(clicked()),this,SLOT(slot_changeDebugMode()));
- connect(ui->Button_checkserial,SIGNAL(clicked()),this,SLOT(on_Button_checkserial_clicked()));
- connect(ui->Button_openserial,SIGNAL(clicked()),this,SLOT(on_Button_openserial_clicked()));
- connect(ui->Button_clearrecive,SIGNAL(clicked()),this,SLOT(on_Button_clearrecive_clicked()));
- connect(ui->Button_tx,SIGNAL(clicked()),this,SLOT(on_Button_tx_clicked()));
- connect(ui->Button_cleartx,SIGNAL(clicked()),this,SLOT(on_Button_cleartx_clicked()));
- }
- void MainWidget::manual_serialPortReadyRead()
- {
- QByteArray recBuf = Data_Ctrl::getData()->serialPort->readAll();;
- QString str_rev;
- // 接收字节计数
- recvNum += recBuf.size();
- // 状态栏显示计数值
- setNumOnLabel(lblRecvNum, "R: ", recvNum);
- if(ui->check_hex_recive->checkState() == false){
- if(ui->check_timestamp->checkState() == Qt::Checked){
- QDateTime nowtime = QDateTime::currentDateTime();
- str_rev = "[" + nowtime.toString("yyyy-MM-dd hh:mm:ss") + "] ";
- str_rev += QString(recBuf).append("\r\n");
- }
- else{
- // 在当前位置插入文本,不会发生换行。如果没有移动光标到文件结尾,会导致文件超出当前界面显示范围,界面也不会向下滚动。
- //ui->recvEdit->appendPlainText(buf);
- if(ui->check_changeline->checkState() == Qt::Checked){
- str_rev = QString(recBuf).append("\r\n");
- }
- else
- {
- str_rev = QString(recBuf);
- }
- }
- }else{
- // 16进制显示,并转换为大写
- QString str1 = recBuf.toHex().toUpper();//.data();
- // 添加空格
- QString str2;
- for(int i = 0; i<str1.length (); i+=2)
- {
- str2 += str1.mid (i,2);
- str2 += " ";
- }
- if(ui->check_timestamp->checkState() == Qt::Checked)
- {
- QDateTime nowtime = QDateTime::currentDateTime();
- str_rev = "[" + nowtime.toString("yyyy-MM-dd hh:mm:ss") + "] ";
- str_rev += str2.append("\r\n");
- }
- else
- {
- if(ui->check_changeline->checkState() == Qt::Checked)
- str_rev += str2.append("\r\n");
- else
- str_rev = str2;
- }
- }
- ui->recive_Edit->insertPlainText(str_rev);
- ui->recive_Edit->moveCursor(QTextCursor::End);
- }
- void MainWidget::on_Button_openserial_clicked()
- {
- if(ui->baudrate_CB->currentText()=="1200")
- Data_Ctrl::getData()->baudRate=QSerialPort::Baud1200;
- else if(ui->baudrate_CB->currentText()=="2400")
- Data_Ctrl::getData()->baudRate=QSerialPort::Baud2400;
- else if(ui->baudrate_CB->currentText()=="4800")
- Data_Ctrl::getData()->baudRate=QSerialPort::Baud4800;
- else if(ui->baudrate_CB->currentText()=="9600")
- Data_Ctrl::getData()->baudRate=QSerialPort::Baud9600;
- else if(ui->baudrate_CB->currentText()=="19200")
- Data_Ctrl::getData()->baudRate=QSerialPort::Baud19200;
- else if(ui->baudrate_CB->currentText()=="38400")
- Data_Ctrl::getData()->baudRate=QSerialPort::Baud38400;
- else if(ui->baudrate_CB->currentText()=="57600")
- Data_Ctrl::getData()->baudRate=QSerialPort::Baud57600;
- else if(ui->baudrate_CB->currentText()=="115200")
- Data_Ctrl::getData()->baudRate=QSerialPort::Baud115200;
- // 获取串口数据位
- if(ui->databit_CB->currentText()=="8")
- Data_Ctrl::getData()->dataBits=QSerialPort::Data5;
- else if(ui->databit_CB->currentText()=="7")
- Data_Ctrl::getData()->dataBits=QSerialPort::Data6;
- else if(ui->databit_CB->currentText()=="6")
- Data_Ctrl::getData()->dataBits=QSerialPort::Data7;
- else if(ui->databit_CB->currentText()=="5")
- Data_Ctrl::getData()->dataBits=QSerialPort::Data8;
- // 获取串口停止位
- if(ui->stopbit_CB->currentText()=="1")
- Data_Ctrl::getData()->stopBits=QSerialPort::OneStop;
- else if(ui->stopbit_CB->currentText()=="1.5")
- Data_Ctrl::getData()->stopBits=QSerialPort::OneAndHalfStop;
- else if(ui->stopbit_CB->currentText()=="2")
- Data_Ctrl::getData()->stopBits=QSerialPort::TwoStop;
- // 获取串口奇偶校验位
- if(ui->checkbit_CB->currentText() == "None"){
- Data_Ctrl::getData()->checkBits = QSerialPort::NoParity;
- }else if(ui->checkbit_CB->currentText() == "Odd"){
- Data_Ctrl::getData()->checkBits = QSerialPort::OddParity;
- }else if(ui->checkbit_CB->currentText() == "Even"){
- Data_Ctrl::getData()->checkBits = QSerialPort::EvenParity;
- }
- // 初始化串口属性,设置 端口号、波特率、数据位、停止位、奇偶校验位数
- Data_Ctrl::getData()->serialPort->setPortName(ui->serialCB->currentText());
- // 根据初始化好的串口属性,打开串口
- // 如果打开成功,反转打开按钮显示和功能。打开失败,无变化,并且弹出错误对话框。
- if(ui->Button_openserial->text() == "打开串口"){
- if(m_USBCtrl.SeralPortCtrl(SeralCtrlType::Seral_Open)){
- //QMessageBox::
- ui->Button_openserial->setText("关闭串口");
- // 让端口号下拉框不可选,避免误操作(选择功能不可用,控件背景为灰色)
- ui->serialCB->setEnabled(false);
- }else{
- QMessageBox::critical(this, "错误提示", "串口打开失败!!!\r\n该串口可能被占用\r\n请选择正确的串口");
- }
- //statusBar 状态栏显示端口状态
- QString sm = "%1 OPENED, %2, 8, NONE, 1";
- QString status = sm.arg(Data_Ctrl::getData()->serialPort->portName()).arg(Data_Ctrl::getData()->serialPort->baudRate());
- lblPortState->setText(status);
- lblPortState->setStyleSheet("color:green");
- }else{
- m_USBCtrl.SeralPortCtrl(SeralCtrlType::Seral_Close);
- ui->Button_openserial->setText("打开串口");
- // 端口号下拉框恢复可选,避免误操作
- ui->serialCB->setEnabled(true);
- //statusBar 状态栏显示端口状态
- QString sm = "%1 CLOSED";
- QString status = sm.arg(Data_Ctrl::getData()->serialPort->portName());
- lblPortState->setText(status);
- lblPortState->setStyleSheet("color:red");
- }
- }
- /*发送数据*/
- void MainWidget::on_Button_tx_clicked()
- {
- QByteArray array;
- //Hex复选框
- if(ui->check_hexsend->checkState() == Qt::Checked){
- //array = QString2Hex(data); //HEX 16进制
- array = QByteArray::fromHex(ui->send_Edit->toPlainText().toUtf8()).data();
- }else{
- //array = data.toLatin1(); //ASCII
- array = ui->send_Edit->toPlainText().toLocal8Bit().data();
- }
- if(ui->check_sendnewline->checkState() == Qt::Checked){
- array.append("\r\n");
- }
- // 如发送成功,会返回发送的字节长度。失败,返回-1。
- int a = Data_Ctrl::getData()->serialPort->write(array);
- // 发送字节计数并显示
- if(a > 0)
- {
- // 发送字节计数
- sendNum += a;
- // 状态栏显示计数值
- setNumOnLabel(lblSendNum, "S: ", sendNum);
- }
- }
- void MainWidget::on_Button_clearrecive_clicked()
- {
- ui->recive_Edit->clear();
- // 清除发送、接收字节计数
- sendNum = 0;
- recvNum = 0;
- // 状态栏显示计数值
- setNumOnLabel(lblSendNum, "S: ", sendNum);
- setNumOnLabel(lblRecvNum, "R: ", recvNum);
- }
- void MainWidget::on_Button_cleartx_clicked()
- {
- ui->recive_Edit->clear();
- // 清除发送字节计数
- sendNum = 0;
- // 状态栏显示计数值
- setNumOnLabel(lblSendNum, "S: ", sendNum);
- }
- void MainWidget::on_check_autosend_stateChanged(int arg1)
- {
- // 获取复选框状态,未选为0,选中为2
- if(arg1 == 0){
- timSend->stop();
- // 时间输入框恢复可选
- ui->spin_sendtime->setEnabled(true);
- }else{
- // 对输入的值做限幅,小于10ms会弹出对话框提示
- if(ui->spin_sendtime->text().toInt() >= 10){
- timSend->start(ui->spin_sendtime->text().toInt());// 设置定时时长,重新计数
- // 让时间输入框不可选,避免误操作(输入功能不可用,控件背景为灰色)
- ui->spin_sendtime->setEnabled(false);
- }else{
- ui->check_autosend->setCheckState(Qt::Unchecked);
- QMessageBox::critical(this, "错误提示", "定时发送的最小间隔为 10ms\r\n请确保输入的值 >=10");
- }
- }
- }
- void MainWidget::on_Button_checkserial_clicked()
- {
- ui->serialCB->clear();
- //通过QSerialPortInfo查找可用串口
- foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
- {
- ui->serialCB->addItem(info.portName());
- }
- }
- void MainWidget::slot_changeDebugMode()
- {
- int nIndex=ui->stackedWidget->currentIndex();
- if(nIndex<2)
- {
- ui->stackedWidget->setCurrentIndex(2);
- }else
- {
- ui->stackedWidget->setCurrentIndex(1);
- }
- }
- void MainWidget::setNumOnLabel(QLabel *lbl, QString strS, long num)
- {
- // 标签显示
- QString strN;
- strN.sprintf("%ld", num);
- QString str = strS + strN;
- lbl->setText(str);
- }
- void MainWidget::on_pushButton_L1_clicked()
- {
- m_CurPhase=1;
- ui->pushButton_L1->setIcon(QIcon("resource/Started.png"));
- ui->pushButton_L2->setIcon(QIcon("resource/Reset.png"));
- ui->pushButton_L3->setIcon(QIcon("resource/Reset.png"));
- }
- void MainWidget::on_pushButton_L2_clicked()
- {
- m_CurPhase=2;
- ui->pushButton_L1->setIcon(QIcon("resource/Reset.png"));
- ui->pushButton_L2->setIcon(QIcon("resource/Started.png"));
- ui->pushButton_L3->setIcon(QIcon("resource/Reset.png"));
- }
- void MainWidget::on_pushButton_L3_clicked()
- {
- m_CurPhase=3;
- ui->pushButton_L1->setIcon(QIcon("resource/Reset.png"));
- ui->pushButton_L2->setIcon(QIcon("resource/Reset.png"));
- ui->pushButton_L3->setIcon(QIcon("resource/Started.png"));
- }
- void MainWidget::on_pushButton_ALLOPEN_clicked()
- {
- QMessageBox::StandardButton confimBtn = QMessageBox::question(this, "确认", "是否打开全部通道?", QMessageBox::Ok | QMessageBox::Cancel);
- if (confimBtn == QMessageBox::Cancel) {
- return;
- }
- else
- {
- return;
- }
- }
- void MainWidget::on_pushButton_ALLCLOSE_clicked()
- {
- QMessageBox::StandardButton confimBtn = QMessageBox::question(this, "确认", "是否关闭全部通道?", QMessageBox::Ok | QMessageBox::Cancel);
- if (confimBtn == QMessageBox::Cancel) {
- return;
- }
- else
- {
- return;
- }
- }
- void MainWidget::UpdateStatusInfo()
- {
- QString strTemp;
- //更新传感器
- strTemp.sprintf("%0.2f", m_PDUAllInfo.Sensor_Temperature);
- ui->label_temperature->setText(strTemp);
- strTemp.sprintf("%0.2f", m_PDUAllInfo.Sensor_Humidity);
- ui->label_humidity->setText(strTemp);
- strTemp.sprintf("%0.2f", m_PDUAllInfo.Sensor_WaterImmersion);//水浸温度
- //ui->label_temperature->setText(strTemp);
- strTemp.sprintf("%0.2f", m_PDUAllInfo.Sensor_INTemperature);//进液温度
- //ui->label_humidity->setText(strTemp);
- strTemp.sprintf("%0.2f", m_PDUAllInfo.Sensor_OUTTemperature);//出液温度
- // ui->label_humidity->setText(strTemp);
- //更新总体电源状态
- if(1==m_CurPhase)
- {
- strTemp.sprintf("%0.3f", m_PDUAllInfo.AllPower_L1);
- ui->lineEdit_TotalPower->setText(strTemp);
- strTemp.sprintf("%0.3f", m_PDUAllInfo.AllConsumption_L1);
- ui->lineEdit_TotalConsumption->setText(strTemp);
- }
- else if(2==m_CurPhase)
- {
- strTemp.sprintf("%0.3f", m_PDUAllInfo.AllPower_L2);
- ui->lineEdit_TotalPower->setText(strTemp);
- strTemp.sprintf("%0.3f", m_PDUAllInfo.AllConsumption_L2);
- ui->lineEdit_TotalConsumption->setText(strTemp);
- }
- else if(3==m_CurPhase)
- {
- strTemp.sprintf("%0.3f", m_PDUAllInfo.AllPower_L3);
- ui->lineEdit_TotalPower->setText(strTemp);
- strTemp.sprintf("%0.3f", m_PDUAllInfo.AllConsumption_L3);
- ui->lineEdit_TotalConsumption->setText(strTemp);
- }
- //更新通道信息
- for (int i=0;i<64;i++) {
- m_PDUCHInfo[i].CHVoltage+=0.432;
- m_PDUCHInfo[i].CHPower+=0.343;
- m_PDUCHInfo[i].CHCurrent+=0.112;
- m_PDUCHInfo[i].CHConsumption+=0.063;
- m_PDUCHInfo[i].CHFactor=0.983;
- if(i%2==0)m_PDUCHInfo[i].CHStatus=true;
- }
- InitCHTable(m_TotalCHNum,false);
- }
|