admin管理员组文章数量:1582016
当今的非标设备,对于客户来说,使用越简单越方便越好,有时候客户不想通过手工去关工控机,只要PLC端关闭后,工控机也自动关闭,这在QT中很容易实现。
首先PLC与工控机上的上位机是正常连接的,只要PLC给上位机发送一个关机指令(自己协商定义),上位机中稍作处理就能自动关机,下边直接来看QT接收socket信息的槽函数clientReadData(),这里的关机指令我们假定为"SHUTDOWN",及收到该指令后便启动关机操作,QT中提供了QProcess类来执行第三方程序,这里只给出了关键部分的代码
connect(tcpSocket, SIGNAL(readyRead()), this, SLOT(clientReadData()));
//接收数据
void clientReadData()
{
QString msg = tcpSocket->readAll();
f ("SHUTDOWN" == msg)
{
QProcess pro; //通过QProcess类来执行第三方程序
QString cmd = QString("shutdown -s -t 0"); //shutdown -s -t 0 是window下的关机命令,
pro.start(cmd); //执行命令cmd
pro.waitForStarted();
pro.waitForFinished();
close(); //关闭上位机
}
}
上述代码,当服务器发来"SHUTDWON",便自动关机,知道这个功能,我们便可以使用定时器自己完成一个定时关机的软件了。
对于QProcess,如果我们想启动一个别的应用程序,如记事本程序,那么如下:
QProcess pro;
QString cmd = QString("C:\\Windows\\System32\\notepad.exe"); //也可换成别的应用程序路径,那么启动的就是对应的应用程序
pro.start(cmd);
pro.waitForStarted();
pro.waitForFinished();
版权声明:本文标题:QT实现自动关机 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1727888718a1136175.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论