kenken 2014年5月8日 20時01分 お世話になります。yumiyaと申します。 Armadillo-840とQT quickでアプリを作っていこうかと思っていますが QT quickから実際のGPIOにどうアクセスしたら良いか悩んでいます C++との連携が必要かと思われますが、どこか参考などありましたら ご教示願えませんでしょうか。よろしくお願いします。 コメントを投稿するにはログインまたは登録をしてください コメント at_takuya.sasaki 2014年5月13日 14時42分 佐々木です。 GPIOの操作については、以下のマニュアルにあるように、sysfs経由での ファイルアクセスを利用されると思います。 http://manual.atmark-techno.com/armadillo-840/armadillo-840_product_man… ファイル操作をQt Quickから実施する方法ですが、私が以前試したのは、 Qt Quick2の拡張プラグインとして、ファイル操作部をC++で実装して、 Qt Quick2から呼び出すようにしました。 以下の本の、「6.5 C++での拡張」を参考にしました。 [Qt QuickではじめるクロスプラットフォームUIプログラミング](折戸孝行 (著)) 記憶を頼りにした手順ですが、以下のような感じです。 1) Qt Creatorのプロジェクトの作成で、[ライブラリ]-[Qt Quick2 Extention Plugin] を選択 2) オブジェクトクラス名やURIは任意に変更 3) QMLから呼び出すためのpublicメソッドを作成 その際ヘッダには、以下のようにQ_INVOKABLEをつける必要があり Ex:) Q_INVOKABLE QString TestMethod(QString) 4) ビルドするとsoファイルができるので、qmldirファイルと一緒に Armadilloの/lib/qt5/qml配下に、URIと同じよう ディレクトリ構成を作って配置。 Ex:) /lib/qt5/com.mycompany.qmlcomponents/xxx.so 4) 呼び出すQML側でimport定義 5) QML側でオブジェクトクラスを定義して、メソッドをコール Ex:) MyItem{ id: myitem } myitem.ReadFileString("/tmp/hoge") 細部に誤りがあるかもしれず、かつ、あまり他の方法を調べずに 実装したので、他にももっと簡単なやり方などがあるかとは思いますが、 ご参考になれば。 以上です。 コメントを投稿するにはログインまたは登録をしてください kenken 2014年5月14日 17時40分 佐々木様 書籍を入手して実験してみたいと思います。 ありがとうございました。 コメントを投稿するにはログインまたは登録をしてください
at_takuya.sasaki 2014年5月13日 14時42分 佐々木です。 GPIOの操作については、以下のマニュアルにあるように、sysfs経由での ファイルアクセスを利用されると思います。 http://manual.atmark-techno.com/armadillo-840/armadillo-840_product_man… ファイル操作をQt Quickから実施する方法ですが、私が以前試したのは、 Qt Quick2の拡張プラグインとして、ファイル操作部をC++で実装して、 Qt Quick2から呼び出すようにしました。 以下の本の、「6.5 C++での拡張」を参考にしました。 [Qt QuickではじめるクロスプラットフォームUIプログラミング](折戸孝行 (著)) 記憶を頼りにした手順ですが、以下のような感じです。 1) Qt Creatorのプロジェクトの作成で、[ライブラリ]-[Qt Quick2 Extention Plugin] を選択 2) オブジェクトクラス名やURIは任意に変更 3) QMLから呼び出すためのpublicメソッドを作成 その際ヘッダには、以下のようにQ_INVOKABLEをつける必要があり Ex:) Q_INVOKABLE QString TestMethod(QString) 4) ビルドするとsoファイルができるので、qmldirファイルと一緒に Armadilloの/lib/qt5/qml配下に、URIと同じよう ディレクトリ構成を作って配置。 Ex:) /lib/qt5/com.mycompany.qmlcomponents/xxx.so 4) 呼び出すQML側でimport定義 5) QML側でオブジェクトクラスを定義して、メソッドをコール Ex:) MyItem{ id: myitem } myitem.ReadFileString("/tmp/hoge") 細部に誤りがあるかもしれず、かつ、あまり他の方法を調べずに 実装したので、他にももっと簡単なやり方などがあるかとは思いますが、 ご参考になれば。 以上です。 コメントを投稿するにはログインまたは登録をしてください
at_takuya.sasaki
2014年5月13日 14時42分
佐々木です。
GPIOの操作については、以下のマニュアルにあるように、sysfs経由での
ファイルアクセスを利用されると思います。
http://manual.atmark-techno.com/armadillo-840/armadillo-840_product_man…
ファイル操作をQt Quickから実施する方法ですが、私が以前試したのは、
Qt Quick2の拡張プラグインとして、ファイル操作部をC++で実装して、
Qt Quick2から呼び出すようにしました。
以下の本の、「6.5 C++での拡張」を参考にしました。
[Qt QuickではじめるクロスプラットフォームUIプログラミング](折戸孝行 (著))
記憶を頼りにした手順ですが、以下のような感じです。
1) Qt Creatorのプロジェクトの作成で、[ライブラリ]-[Qt Quick2 Extention Plugin]
を選択
2) オブジェクトクラス名やURIは任意に変更
3) QMLから呼び出すためのpublicメソッドを作成
その際ヘッダには、以下のようにQ_INVOKABLEをつける必要があり
Ex:)
Q_INVOKABLE QString TestMethod(QString)
4) ビルドするとsoファイルができるので、qmldirファイルと一緒に
Armadilloの/lib/qt5/qml配下に、URIと同じよう
ディレクトリ構成を作って配置。
Ex:) /lib/qt5/com.mycompany.qmlcomponents/xxx.so
4) 呼び出すQML側でimport定義
5) QML側でオブジェクトクラスを定義して、メソッドをコール
Ex:)
MyItem{
id: myitem
}
myitem.ReadFileString("/tmp/hoge")
細部に誤りがあるかもしれず、かつ、あまり他の方法を調べずに
実装したので、他にももっと簡単なやり方などがあるかとは思いますが、
ご参考になれば。
以上です。