Qt 5.1 使用 QSerialPort 的串行通信

Qt 5.1 Serial Comunication using QSerialPort

本文关键字:通信 QSerialPort 使用 Qt      更新时间:2023-10-16

我正在尝试使用Qt配置与串行电位的通信,这是我在Qt中的第一个应用程序,根据许多线程,我编写了这段代码:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSerialPort>
QSerialPort serial;
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), 
                                         ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    serial.open(QSerialPort::ReadWrite);
    serial.setPortName("ttyACM0");
    serial.setBaudRate(QSerialPort::Baud9600);
    serial.setDataBits(QSerialPort::Data8);
    serial.setParity(QSerialPort::NoParity);
    serial.setStopBits(QSerialPort::OneStop);
    serial.setFlowControl(QSerialPort::NoFlowControl);
    serial.write("hello");
}
MainWindow::~MainWindow()
{
    delete ui;
    serial.close();
}

编译器告诉我,当我构建项目时,设备没有打开。

您是否确保

该设备可以打开?如果这是一个 *nix 系统,请尝试:

ls -l  /sys/class/tty/ttyUSB* ### if USB device or 
ls -l /sys/class/tty/ttyACM* ### if ACM, whatever that is

你应该得到一个指向设备目录的符号链接,至少你在 Linux 上是这样。

此外,您的代码构建良好,但是我认为它实际上并没有运行.

此外,看起来QSerialPort还有一个名为"isOpen"的方法(继承自QioDevice),如果设备已经打开,则返回一个布尔值,您可能应该在打开和关闭之前使用该布尔值以了解设备的实际状态是什么。

我已经反对使用serial.open(QIODevice::ReadWrite)的设备并且它运行了。感谢您的帮助。