個人情報保護方針 お支払いについて お問い合わせ |
Qt5によるLinux GUI プログラミングLinuxのディストリビューション、バージョンと開発環境 現在現役のWindowsは10/11で、32bit/64bitぐらいの違いしかありません。64bitアプリケーションは32bitWindowsでは使えませんが、おおむねWindows7/8時代のアプリケーションもほとんど動作します。ところがLinuxではそうはいきません。LinuxはRedhat/Debian/CentOS/Ubunthなど多くの種類があり、コマンドや操作方法デスクトップ画面のレイアウトや操作方法もいろいろです。異なるディストリビューションでもOSのカーネルは同じだったりしますが、バイナリレベルで同じものが動くとは限りません。Linuxのソフトウェアは通常レポジトリと呼ばれるサーバーからそのディストリビューション、そのバージョンに応じたものがダウンロードされる仕組みになっています。つまり使用したいソフトウェアがそのディストリビューション、そのバージョンでサポートされていなければ使用できません。たとえばQt5をQt5ができる前のバージョンのLinuxで使うことはできないのです。 したがって、Qt5を用いたアプリケーションは特定のOSのディストリビューションとバージョンに限って対応することになります。バージョンが異なるLinuxでコンパイルしたものは動かないことも多々あります。お客様が使用したいLinuxがある場合には、そのLinuxでの開発環境を用意させていただくことになると思いますが、まずは標準としてRaspberryPiと親和性の高い Ubunth20.04とRaspberry pi OS(bullseye)を中心にサポートしていきたいと考えています。 libusbを用いたUSBデバイスへのアクセス プライムシステムズ社からはLinuxのCUIプログラム用として、libusbを用いたUSB2.0 (Smart-USB Plus)用のSUPサンプルとUSB3.0 (Smart-USB Sigma)用のSUSサンプルを無償提供しています。Raspberry Pi OSにて動作確認済みのようです。SUPサンプルはlibusb1.0用、SUSサンプルはlibusb0.1用となっています。Linuxで使用されているlibusbのバージョンは長い間0.1でしたが、最近はlibusb1.0がインストールされいてるようです。Ubunth20.04には1.0がインストールされていますのでlibusb1.0を使用することにしました。libusb0.1とlibusb1.0には互換性がありません。 libusbを使うとUSBデバイスの検索、オープンと、コントロール転送、バルク転送などを行うことができます。これをWindowsのSUP/SUS APIと同じ関数名、同じ機能の関数を用意することでWindowsのC#/WPFで行った処理と同様の処理ができるようにしました。ただしQt5で使用できるように引数はQString等のQtのクラスで定義します。これらの作業によって、USB経由でプライムシステムズ社製FPGAボードにアクセスするGUIアプリを作成することができるようになりました。 プライムシステムズ社でWindows版を無償提供しているリファレンスソフトウェアRefApp7と同等のアプリケーションを作成してみました。このアプリケーションが動作するということは基本的に同社のFPGAとの通信が可能ということになります。まだ基本的なボタンやコンボボックスしかできていませんが、徐々にWPFアプリでできることがQt5でできるようにしていきます。 Raspberry Pi LinuxのGUIアプリが作成できるということはRaspberry Piや類似した小型組み込みボードでスタンドアロンの液晶やタッチパネルをもちいたGUIのシステムができるということになります。RaspberryPiの40ピンのGPIOで接続される各種I/Oボードだけでなく、プライムシステムズ社製のFPGAボードをUSB経由で接続するほか、新しく発売されるCM4MBシステム開発ボードで、FPGAとLinuxをPCIe接続した小型スタンドアロンシステムを構築することも可能になります。これまで、WindowsCEやWindows Embedded等のシステムも納入してきましたが、Linuxで同様のことができればOSのライセンス料も不要になりより安価でシステムが構築できそうです。 |