プロが教える店舗&オフィスのセキュリティ対策術

下記のコードを実行しますと、次の表示が出てデバイスが認識されます。

次にopenしたいわけですが、open出来ません。
ボーレートとかが設定されてないためか?

name:ttyUSB0 <---デバイスが認識されます。
Description:USB - Serial
Manufacturer:FTDI


Q1) 何とかオープン出来る方法があればお教えください?
この様な、簡単なコードでは旨く行かないのでしょうか?
尚、USBケーブルの先に、FTDIのuartのチップがついています。


#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>

void MainWindow::on_pushButton_clicked()
{
QString str;
//availablePorts()で利用可能なすべてのシリアルポートが取得できる
foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts()) {


str=QString("name:%1").arg(info.portName());
qDebug("%s",qPrintable(str));
str=QString("Description:%1").arg(info.description());
qDebug("%s",qPrintable(str));
str=QString("Manufacturer:%1").arg(info.manufacturer());
qDebug("%s",qPrintable(str));

// Example use QSerialPort
QSerialPort serial;
serial.setPort(info);
if (serial.open(QIODevice::ReadWrite)){ <ーーーopen出来ません============
qDebug("Serial port opened");
serial.close();
qDebug("Serial port opened");
}
else{
qDebug("Serial port not opened");

}
}

}

以上宜しくお願いします。

A 回答 (2件)

Qtだとか、Ubunutuでのプログラミングとかやったことありませんけど。




>ボーレートとかが設定されてないためか?

http://doc.qt.io/qt-5/qserialport.html#baudRate- …
とか、設定方法はドキュメントにあるようですけど。


>次にopenしたいわけですが、open出来ません。

http://doc.qt.io/qt-5/qserialport.html#open

error()で何らか情報取れる…みたいですが試してみましたか?
http://doc.qt.io/qt-5/qserialport.html#SerialPor …
のどれかの値で判別できるようですが。
    • good
    • 0
この回答へのお礼

下記の様に変更してみましたが、変わりないようです。

int nn=serial.open(QIODevice::ReadWrite);
if (nn>0){
qDebug("Serial port opened");
serial.close();
qDebug("Serial port opened");
}
else{
qDebug("Serial port not opened");

}

お礼日時:2017/04/20 19:14

>下記の様に変更してみましたが、変わりないようです。


>int nn=serial.open(QIODevice::ReadWrite);

open()の戻り値はboolなんですから、そりゃ意味ないでしょう。

>else{
>qDebug("Serial port not opened");
>}

で終わるのではなくて、
SerialPortError ErrNo = error();
とかやって、ErrNoには何が入りますか?
ってことなんですけど。
たとえば2が入っていればパーミッションの問題でアクセスできなかったんだな。
とか調べられるでしょう。
    • good
    • 0
この回答へのお礼

回答有難うございます

お礼日時:2017/04/21 09:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!