168 lines
3.9 KiB
C++
168 lines
3.9 KiB
C++
#include "ziwai.h"
|
|
#include "ui_ziwai.h"
|
|
#include<QMessageBox>
|
|
#include<QProcess>
|
|
#include <Windows.h>
|
|
|
|
extern int i=0;
|
|
ziwai::ziwai(QWidget *parent)
|
|
: QWidget(parent)
|
|
, ui(new Ui::ziwai)
|
|
{
|
|
ui->setupUi(this);
|
|
timer = new QTimer(this);
|
|
|
|
connect(timer, SIGNAL(timeout()), this, SLOT(updateCountdown()));
|
|
remainingSeconds = 1800;
|
|
//qidong();
|
|
ui->radioButton->isChecked();
|
|
// ui->label->setFixedSize(300,300);
|
|
ui->pushButton->setFixedSize(76,37);
|
|
ui->pushButton_2->setFixedSize(76,37);
|
|
this->setWindowFlags(Qt::FramelessWindowHint); // 隐藏标题栏
|
|
this->setFixedSize(437,292);
|
|
this->setWindowFlags(Qt::FramelessWindowHint);//去除窗口边框
|
|
|
|
|
|
|
|
setAttribute(Qt::WA_TranslucentBackground);
|
|
}
|
|
|
|
ziwai::~ziwai()
|
|
{
|
|
delete ui;
|
|
}
|
|
bool ziwai::qidong()
|
|
{
|
|
foreach (const QSerialPortInfo &info,QSerialPortInfo::availablePorts())
|
|
{
|
|
QSerialPort serial;
|
|
serial.setPort(info);
|
|
if(serial.open(QIODevice::ReadWrite))
|
|
{
|
|
// SerialPort.setPortName(info.portName());
|
|
SerialPort.setPortName("COM5");
|
|
qDebug()<<info.portName();
|
|
}
|
|
}
|
|
// // 打开串口
|
|
// QSerialPort SerialPort;
|
|
// SerialPort.setPortName("COM5");
|
|
|
|
if(SerialPort.open(QIODevice::ReadWrite))
|
|
{
|
|
SerialPort.setBaudRate(QSerialPort::Baud9600);
|
|
SerialPort.setDataBits(QSerialPort::Data8);
|
|
SerialPort.setStopBits(QSerialPort::OneStop);
|
|
SerialPort.setParity(QSerialPort::NoParity);
|
|
SerialPort.setFlowControl(QSerialPort::NoFlowControl);
|
|
|
|
|
|
// QMessageBox::about(NULL, "提示", "串口连接成功");
|
|
return true;
|
|
// QTimer::singleShot(100,this,[=](){writedata();dingshiqi();});
|
|
}
|
|
|
|
else
|
|
{
|
|
|
|
|
|
}
|
|
}
|
|
void ziwai::writedata(QString w)
|
|
{
|
|
/*QByteArray hexData = w.toLatin1()*/;
|
|
|
|
//QTimer::singleShot(100,this,[=](){dingshiqi();});
|
|
}
|
|
|
|
void ziwai::kaishang()
|
|
{
|
|
SerialPort.write("$320381E");
|
|
qDebug()<<"开通道2";
|
|
|
|
}
|
|
void ziwai::readdata()
|
|
{
|
|
QByteArray receivedHexData = SerialPort.readAll();
|
|
// QByteArray originalData = QByteArray::fromHex(receivedHexData);
|
|
// QString result = QString::fromLatin1(originalData);
|
|
qDebug()<<receivedHexData;
|
|
|
|
|
|
}
|
|
|
|
void ziwai::dingshiqi()
|
|
{
|
|
|
|
timer->start(1000);
|
|
}
|
|
//取消
|
|
void ziwai::on_pushButton_clicked()
|
|
{
|
|
// QString write="A0 01 00 A1";
|
|
// writedata(write);
|
|
QByteArray hexData = QByteArray::fromHex("A00100A1");
|
|
SerialPort.write(hexData);
|
|
|
|
remainingSeconds=1800;
|
|
timer->stop();
|
|
this->close();
|
|
ui->pushButton_2->setText("开始");
|
|
ui->pushButton_2->setEnabled(true);
|
|
}
|
|
void ziwai::updateCountdown(){
|
|
remainingSeconds--;
|
|
if (remainingSeconds == 0) {
|
|
timer->stop();
|
|
ui->label->setText("杀菌结束");
|
|
QByteArray hexData = QByteArray::fromHex("A00100A1");
|
|
SerialPort.write(hexData);
|
|
if(i==0){
|
|
qDebug()<<"马上关机";
|
|
timer->stop();
|
|
this->close();
|
|
|
|
remainingSeconds = 1800;
|
|
QTimer::singleShot(500,this,[=](){
|
|
|
|
QString program = "C:/WINDOWS/system32/shutdown.exe";
|
|
QStringList arguments;
|
|
arguments << "-s";
|
|
QProcess *myProcess = new QProcess();
|
|
myProcess->start(program, arguments);
|
|
});
|
|
|
|
|
|
}
|
|
|
|
} else {
|
|
QString timeText = QString::number(remainingSeconds) + "s";
|
|
ui->label->setText(timeText);
|
|
}
|
|
};
|
|
//开始
|
|
void ziwai::on_pushButton_2_clicked()
|
|
{
|
|
QByteArray hexData = QByteArray::fromHex("A00101A2");
|
|
SerialPort.write(hexData);
|
|
ui->pushButton_2->setText("已开始");
|
|
ui->pushButton_2->setEnabled(false);
|
|
QTimer::singleShot(10,this,[=](){dingshiqi();});
|
|
}
|
|
|
|
|
|
void ziwai::on_radioButton_clicked()
|
|
{
|
|
if(!ui->radioButton->isChecked())
|
|
{
|
|
i=1;
|
|
qDebug()<<"不会关机";
|
|
}
|
|
if(ui->radioButton->isChecked())
|
|
{ i=0;
|
|
qDebug()<<"会关机";
|
|
}
|
|
}
|
|
|