jianbin.chang常健彬 ce734d1af1 厂家提供原始代码
2025-07-17 08:39:15 +08:00

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()<<"会关机";
}
}