16,222
社区成员
发帖
与我相关
我的任务
分享
在控制台中执行结果如图
该图是两条指令,microcom -t 10000 -s 9600 /dev/ttyUSB1 和 AT+QNETDEVCTL=0,1,1
反馈 OK及以下的数据。
不知道Qt有没有方法能够执行上图语句。希望大牛帮帮忙,谢谢!!
你可以写个shell脚本,去做获取命令行结果,并做进一步的操作,用QProcess去调用脚本,QProcess获取最后的结果
@天外怪魔 @ClayQ @赵4老师
谢谢各位的回复!
我目前是使用QProcess做了些尝试,但都不能得到直接在控制台输入的结果。
第一种方式
// QString qstrCmd = QString("/bin/sh -c \"microcom -t 10000 -s 9600 /dev/ttyUSB1\"");
QString qstrCmd = QString("microcom -t 10000 -s 9600 /dev/ttyUSB1");
QProcess::execute(qstrCmd);
thread()->msleep(5000);
// /*QString*/ qstrCmd = QString("/bin/sh -c \"AT+QNETDEVCTL=1,1,1\""); //报异常
/*QString*/ qstrCmd = QString("AT+QNETDEVCTL=1,1,1");
QProcess::execute(qstrCmd);
第二种方式
QProcess microcomProcess;
// 设置microcom的命令行参数
QStringList arguments;
arguments << "-t" << "10000" << "-s" << "9600" << "/dev/ttyUSB1" ; // 根据你的设备和波特率修改
// 启动microcom进程
microcomProcess.start("microcom", arguments);
// 等待microcom启动
if (!microcomProcess.waitForStarted())
{
qDebug() << "Microcom didn't start";
// return -1;
}
// 向microcom写入AT指令
microcomProcess.write("AT+QNETDEVCTL=1,1,1"); // 报指令错误
// 等待数据从microcom可用
if (microcomProcess.waitForReadyRead())
{
// 读取microcom的输出并打印
QString output = microcomProcess.readAllStandardOutput();
qDebug() << output;
}
else
{
qDebug() << "No data received from microcom";
}
以上两种都是无法达到控制台输出的结果。
我不太清楚,Qt是否能实现控制台的这种操作。 第一条命令是打开microcom程序,换行但不是新的指令行,然后输入第二条指令,执行,执行完后会出现新的指令行。
使用QProcess就可以,你能说下使用QProcess后还有什么问题吗?
使用QProcess可以