QSerialPort无法在Ubuntu上打开“/ dev / ttyUSB0”

时间:2013-12-14 10:21:51

标签: c++ qt qtserialport

我尝试通过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() << "Pass\n";
        serial.close();
    } else {
        qDebug() << "Fail\n";
    }

    return a.exec();
}

根据this article,必须在.pro文件中添加以下语句。

QT += serialport

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

$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 命令添加到拨出组。因此,我可以通过终端软件与USB串行设备进行通信。

但我无法解决QSerialPort问题。有没有人有任何想法? 任何帮助将不胜感激。

提前致谢!

1 个答案:

答案 0 :(得分:1)

正如Frank建议的那样,您始终可以使用errorString()获取错误诊断信息。有关详细信息,请参阅我们的示例。

我无法重现此问题,但根据您的评论,您的串口已被其他进程使用,因此这意味着它不是QtSerialPort问题。任何其他软件都会遇到此问题,例如:一个新的minicom会议。

很高兴它现在有效。 :)