2

USBシリアルケーブルを介してデスクトップPCにマイクロコントローラーを接続しようとしています。私のデスクトップ PC の OS は 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シリアルケーブルを差し込むと、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コマンドでダイヤルアウトグループに追加されます。その結果、ターミナルソフト上でUSBシリアルデバイスと通信できるようになりました。

しかし、QSerialPort の問題を解決できません。誰にもアイデアはありますか?どんな助けでも大歓迎です。

前もって感謝します!

4

1 に答える 1

1

Frank が示唆したように、errorString() を使用していつでもエラー診断を取得できます。詳細については、例を参照してください。

問題を再現できませんが、あなたのコメントによると、あなたのシリアル ポートは既に別のプロセスで使用されているため、QtSerialPort の問題ではありません。新しい minicom セッションなど、他のソフトウェアではこれに問題があったはずです。

それが今働いていることをうれしく思います。:)

于 2013-12-14T15:27:54.007 に答える