QSerialPort 无法在 Ubuntu 上打开"/dev/ttyUSB0"

QSerialPort fails to open "/dev/ttyUSB0" on Ubuntu

本文关键字:dev ttyUSB0 Ubuntu QSerialPort      更新时间:2023-10-16

我正在尝试通过USB串行电缆将微控制器与台式电脑连接。我台式电脑的操作系统是Ubuntu 13.10。USB串行电缆为TTL-232R-3V3(FTDI)。

这是我的源代码。当运行程序时,它以失败告终。(在这种情况下,控制台上会打印"失败"。)

#include <QCoreApplication>
#include <QtSerialPort/QtSerialPort>
#include <QtSerialPort/QSerialPortInfo>
QT_USE_NAMESPACE
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    // Example use QSerialPortInfo
    QSerialPort serial("/dev/ttyUSB0");
    if (serial.open(QIODevice::ReadWrite)){
        qDebug() << "Passn";
        serial.close();
    } else {
        qDebug() << "Failn";
    }
    return a.exec();
}

根据本文,以下语句必须添加到.pro文件中。

QT += serialport

当USB串行电缆插入时,它在Ubuntu上被识别为"/dev/ttyUSB0"。它似乎运行良好。

$dmesg | grep ttyUSB
>>[   27.653383] usb 6-1: FTDI USB Serial Device converter now attached to ttyUSB0
$ls -la | grep ttyUSB
>> crw-rw----   1 root dialout 188,   0 12月 14 17:30 ttyUSB0

为了避免权限问题,我的用户名通过gpasswd命令添加到dialout组。因此,我可以在终端软件上与USB串行设备进行通信。

但我无法解决QSerialPort问题。有人有什么想法吗?如有任何帮助,我们将不胜感激。

提前感谢!

正如Frank所建议的,您总是可以使用errorString()获得错误诊断。有关详细信息,请参阅我们的示例。

我无法重现该问题,但根据您的评论,您的串行端口已被另一个进程使用,因此这意味着它不是QtSerialPort问题。任何其他软件都会有这个问题,例如一个新的微型通信会话。

很高兴它现在起作用了。:)