QSerialPort не может открыть & quot; / dev / ttyUSB0 & quot; на Ubuntu

Я пытаюсь подключить микроконтроллер к настольному ПК через последовательный USB-кабель.
Операционная система моего настольного ПК — Ubuntu 13.10. Последовательный USB-кабель TTL-232R-3V3 (FTDI).

Вот мой исходный код. При запуске программы она заканчивается неудачей.
(В этом случае «Fail» был напечатан на консоли.)

#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();
}

В соответствии с Эта статья, следующее заявление должно быть добавлено в .pro файл.

QT += serialport

Когда последовательный USB-кабель подключен, он распознается как «/ dev / ttyUSB0» в 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

Чтобы избежать проблем с разрешением, мое имя пользователя добавляется в DialOut группа по gpasswd команда. В результате я могу связываться с последовательным USB-устройством через программное обеспечение терминала.

Но я не могу решить проблему QSerialPort. У кого-нибудь есть какие-либо идеи?
Любая помощь будет оценена.

Заранее спасибо!

3

Решение

Как предложил Фрэнк, вы всегда можете получить диагностику ошибок с помощью errorString (). Смотрите наши примеры для деталей.

Я не могу воспроизвести проблему, но на основании вашего комментария ваш последовательный порт уже использовался другим процессом, так что это означает, что это не проблема QtSerialPort. Любое другое программное обеспечение могло бы иметь проблемы с этим, например, новый сеанс миником.

Рад, что это работает сейчас. 🙂

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]