You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Linux伪终端测试Qt QSerialPort应用?

嘿,我帮你把这段伪终端测试Qt串口应用的代码补全并梳理清楚,这样你就能顺利完成测试啦:

完整的伪终端测试实现代码
#include <QSerialPort>
#include <unistd.h>
#include <cstdio>

int main() {
    // 打开主伪终端设备
    QSerialPort master("/dev/ptmx");
    if (!master.open(QSerialPort::ReadWrite)) {
        fprintf(stderr, "Failed to open master ptmx device\n");
        return 1;
    }
    int master_fd = master.handle();

    // 获取从伪终端的设备名称
    constexpr size_t PTSNAME_BUFFER_LENGTH = 128;
    char ptsname_buffer[PTSNAME_BUFFER_LENGTH];
    if (ptsname_r(master_fd, ptsname_buffer, PTSNAME_BUFFER_LENGTH) != 0) {
        fprintf(stderr, "Failed to get slave pts name\n");
        master.close();
        return 1;
    }
    printf("Slave pseudo terminal path: %s\n", ptsname_buffer);

    // 授予从设备访问权限并解锁(这两步是必须的,否则从设备无法被正常访问)
    if (grantpt(master_fd) != 0) {
        fprintf(stderr, "Failed to grant pt access\n");
        master.close();
        return 1;
    }
    if (unlockpt(master_fd) != 0) {
        fprintf(stderr, "Failed to unlock pt\n");
        master.close();
        return 1;
    }

    // 现在把输出的从设备路径(比如/dev/pts/12)填到你的Qt串口应用里打开串口
    // 主设备端就能和串口应用双向收发数据了
    // 举个例子:给串口应用发一条测试消息
    master.write("Hello from pseudo terminal master!\n");
    master.flush();

    // 读取串口应用返回的消息
    QByteArray response = master.readAll();
    if (!response.isEmpty()) {
        printf("Received from serial app: %s", response.constData());
    }

    // 用完别忘了关闭设备
    master.close();
    return 0;
}
关键步骤说明
  • 打开/dev/ptmx:这是Linux系统中伪终端的主设备节点,所有伪终端的通信都是从这里发起的
  • ptsname_r:这是线程安全的获取从设备路径的方法,比非线程安全的ptsname更可靠
  • grantpt + unlockpt:这两步必须执行,grantpt会设置从设备的权限,让普通用户也能访问;unlockpt则解锁从设备,允许它被打开
注意事项
  • 编译时要记得链接Qt的SerialPort模块,在qmake项目文件里加上QT += serialport
  • 如果运行时遇到权限问题,可以尝试用sudo启动程序(不过正常情况下grantpt会处理好权限)
  • 测试流程:先运行这个伪终端主程序,复制输出的从设备路径,再启动你的Qt串口应用并选择这个路径打开串口,之后两边就能互相收发数据了

内容的提问来源于stack exchange,提问作者Dino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:45:37