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

次に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");

}
}

}

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

このQ&Aに関連する最新のQ&A

意味 prop」に関するQ&A: propped upの意味

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で質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

Qfind -execの末尾の{} \;の意味

末尾の{} \;を省略するとexecオプションが正しくうごきません。
これはいったい何を意味しているのでしょう?
今までは、おまじないと思っていましたが、正しい意味を知りたくなりました。

Aベストアンサー

> {}
findの条件式に一致したファイルのファイル名に置き換えられます。

> \;
「;」は、execで実行するコマンドのコマンドラインの最後を意味します。
ただ、「;」はシェルで意味を持っている文字なので、シェルによって展開されないように、つまり文字「;」そのものとするために「\」でエスケープします。

Qfind -perm -o+w -exec ls -la {} \;

タイトルのコマンドに関しまして、条件(他のユーザーに書き込み権限が与えられているファイルを検索)にマッチしたファイルの詳細を表示するコマンドで間違いないと思いますが、『{}』 は何を指しているのでしょうか?
これが、ワイルドカードの『{}』を表しており、中身を指定していないのならば、[]でも代用できるはず。と思い、

$find -perm -o+w -exec ls -la [] \;

としたら、lsコマンドに怒られてしまいました。
{}を指定しなかった場合は、期待に沿わない実行結果(マッチしたファイルの数だけ ls -la が実行される)が得られます。

『{}』は、何を意味しているのでしょうか?

ご回答の程、お願いします。

Aベストアンサー

man find
で終わるとアレなので:
-exec を使うと条件を満たす各ファイルに対してコマンドを実行しますが, そのコマンド中に {} があるとそれは「条件を満たすファイルのファイル名」に置き換わります.

Q"${0%/*}"の内容について

linuxで、シェルスクリプトを作成しているのですが、
あるページを参考にしていたところ、

"${0%/*}" 内容がでてきました。(参考ページは、cd "${0%/*}" と記述されていました。)

確認のために、下記ファイルを作成し、
echo "${0%/*}" でどういった内容になるのか確認してみました。


■シェルスクリプトの内容(ファイル:kakunin.sh)
#!/bin/sh
echo "${0%/*}"

(1)shで、シェルスクリプト実行
# sh kakunin.sh
kakunin.sh ←結果

(2).(ドット)により実行。
# ./kakunin.sh
. ←結果(. ドット)

結果が異なっています。

"${0%/*}"は何を意味しているのでしょうか。
なぜ、(1)と(2)で、実行結果が異なるのでしょうか。

御教示お願いします。

Aベストアンサー

man bash より。

${parameter%word}
${parameter%%word}
パターンに後方一致した部分を取り除く。 word が展開され、パス名展開の場合と同じようなパターンを作ります。 このパターンが parameter を展開した値の末尾の部分とマッチする場合、展開結果は parameter を展開した値から最短一致パターン (``%'' の場合) または最長一致パターン (``%%'' の場合) を取り除いたものになります。 parameter が @ または * である場合、 パターンを削除する操作は全ての位置パラメータに順番に適用され、 展開結果はリストとして得られます。 parameter が @ または * が添字になっている配列変数である場合、 パターンを削除する操作は配列の全ての要素に順番に適用され、 展開結果はリストとして得られます。

「/ があればそれとそれ以降の文字を削除する」 という意味です。
/が複数ある場合は最後の / 以降を削除。

Qfindコマンドの場合だけなぜ末尾に{}や\;が必要なのか?

なぜ findのexecの場合だけファイル名を表す{}や、コマンドの終了を表す\;が必要になるのでしょうか?
他のコマンドはわざわざ終了を明示的に示していないのにfindだけこのような記述をするのが不思議です。

Aベストアンサー

「他のコマンドを実行する」ためにfind自身への引数なのか他コマンドへの引数なのかを区別する必要があるために\;が必要で、
ファイル名を引数のどこに置くのかを指定するために{}が必要だからです

find ~ -exec hoge -xxx \;
この場合FileAが見つかったとしてFileAは引数のどこにおいてhogeを実行すべきですか?
hoge -xxx FileA ですか hoge FileA -xxx ですか?

find ~ -exec hoge {} -printf %p
-printf %p はfindのオプションとして解釈すべきですか、それともhogeの引数として渡すべきですか?それとも両方?

Qシェルスクリプトの「{} \;」部分の意味は?グーグル等でも検索できない状態です。

以下のようなシェルスクリプトを見かけますが、「{} \;」部分の意味が分かりません。記号なので、グーグル等でも検索できない状態です。

#二日前のファイルを削除
find /backup -mtime +1 -maxdepth 1 -name '*.zip' -exec rm -f {} \;

上記のようなシェルスクリプトの「{} \;」部分は、どのような意味があるのでしょうか?特にプログラムと違いシェルスクリプトは;(コロン)で終わる必要がないのに、終わっているのが不思議です。


よろしくお願いします。

Aベストアンサー

find(1)のマニュアルを読んでください。

-exec はそこまでの条件に合致したファイルやディレクトリ対して、後につづくコマンドを実行するものです。
{} は実行時にその合致したファイル/ディレクトリ名に置き換わります。
;は-execで実行するコマンドの終了を示す印です。 ; はシェルでは特殊な意味を持つので、\でその意味をキャンセルします。
( {}も特殊な意味を持つので、 \{\} とするか '{}' とするかがよいのですが)

例えば
-mtime +1 -maxdepth 1 -name '*.zip'
に対して
/backup/foo/bar.zip
というファイルが条件に合っていたとすると, -execは
rm -f /backup/foo/bar.zip
を実行します。 {} = /backup/foo/bar.zip です。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報