int WorkThread::adb_shell_uart_test(QString temp) { QProcess process; QStringList args; args << "/c" << "adb shell"; process.start("cmd.exe",args); process.waitForStarted(); QString command1 = QString("stty -F /dev/tty%1 -echo\n").arg(temp); QString command2 = QString("cat dev/tty%1 &\n").arg(temp); QString command3 = QString("echo 1234 > dev/tty%1\r\n").arg(temp); QByteArray byteArray1 = command1.toUtf8(); // 将字符串编码为 UTF-8 格式的字节数组 QByteArray byteArray2 = command2.toUtf8(); QByteArray byteArray3 = command3.toUtf8(); process.write( byteArray1); process.write( byteArray2); process.write( byteArray3); process.waitForBytesWritten(); process.closeWriteChannel(); process.waitForFinished(5000); // 等待进程执行完毕 QString output = process.readAllStandardOutput(); qDebug() << "TEST:"; qDebug() << output; QString result = output.right(5); if(result == " 1234"){ return 0; }else{ return -1; } }
时间: 2024-03-29 20:41:25 浏览: 118
使用Python来做一个屏幕录制工具的操作代码
这段代码是一个在 Qt 中调用 adb 命令行工具执行串口测试的函数。具体实现如下:
1. 创建一个 `QProcess` 对象 `process`。
2. 创建一个 `QStringList` 对象 `args`,并向其添加两个参数:`/c` 和 `adb shell`。这两个参数会被传递给 `cmd.exe`,并告诉它执行 `adb shell` 命令。
3. 调用 `process.start()` 启动 `cmd.exe` 进程,并将 `args` 作为参数传递给它。这样就可以启动一个 adb shell 子进程。
4. 调用 `process.waitForStarted()` 等待子进程启动完成。
5. 构造三个命令字符串:`command1`、`command2` 和 `command3`,分别用于设置串口属性、启动串口监听和向串口发送数据。
6. 将命令字符串转换为 UTF-8 编码的字节数组,并通过 `process.write()` 向子进程输入这些命令。
7. 调用 `process.closeWriteChannel()` 关闭子进程的写通道。
8. 调用 `process.waitForFinished()` 等待子进程执行完毕,最多等待 5 秒。
9. 调用 `process.readAllStandardOutput()` 读取子进程的标准输出,并将其存储到 `output` 变量中。
10. 判断 `output` 中的最后五个字符是否为 " 1234",如果是,则返回 0,表示测试通过;否则返回 -1,表示测试失败。
需要注意的是,该函数中执行了一些 adb shell 命令,因此需要确保 adb 工具已经正确安装,并且在系统环境变量中设置了 adb 工具的路径。另外,该函数中使用了 `cmd.exe` 命令行解释器来启动 adb shell 子进程,因此该函数只能在 Windows 系统中运行。
阅读全文