Windows PC (以後 Windows と呼ぶ) と Macbook (以後、Mac と呼ぶ) を1組のキーボード・マウスで切り替えながら普段作業しています。 中央の 4k ディスプレイ (以後、メインディスプレイと呼ぶ) も Windows、Mac で共有し、必要に応じて切り替えています。
そんな構成ですが、ちょっとした不満がありました。
音楽を再生して作業するとき、Windows から再生しています。 そのため Mac で作業中のとき、音量を変えたり、次の曲に変える程度のときにもキーボード・マウスを切り替える必要がありました。
メインディスプレイの切り替えが Windows からしかできない事情があり、「Windows 側で Mac の画面を映す」操作をしてからキーボード・マウスの切り替えを Mac 側に替える必要がありました。Mac 側ではメインディスプレイ切り替えについては何もできないためです。
メインディスプレイの切り替えを忘れて Mac 側にキーボード・マウスに切り替えるとまた Windows 側に戻らないとならず、大変めんどくさい・・・。
HDMI 切替器という手段もあるのでは?と思いの方もいらっしゃると思いますし、私自身も HDMI 切替器持っていたのですが、結果的に使えませんでした。ややこしい話なので割愛しますが、Mac の罠といったところです。
そうした軽い不満を抱えていた日々でしたが、特に何もせず。 そんな折、タッチ液晶付きのマイコン開発ボードのプレゼントキャンペーンがあるらしい!と。 更にそれを使ったコンテストも開催されている!と。
渡りに船ということで応募したところ、当選しました。 そしてコンテストというプレッシャーがあったので、頑張って開発できました。 ありがたいことです。ありがとうございます。
動機で語った不満はすべて解決できました。 自画自賛ですが、めちゃめちゃ便利です。
音楽アプリの MainWindowHandle を保持しておき、操作する際は音楽アプリを Foreground に遷移したうえで SendKey しています。
音量についてはもともと使っていた常駐型の音量調整アプリがあったので、そこに対して同様の操作をしています。
こちらもディスプレイのメーカーから提供されている常駐型の切り替えアプリがあるので、切り替えアプリの MainWindowHandle を保持しておき、操作する際は切り替えアプリを Foreground に遷移したうえで SendKey しています。
音楽プレーヤー制御、メインディスプレイ切り替えだけでも便利だったのですが、せっかくだったのでエンジニアなら普段よく見ているであろう「タスクマネージャー」の CPU、メモリ、GPU の使用率を表示してみました。
ここは本当にこだわりポイントかもしれません。 Windows では様々なシステムの情報を取得する手段があるのですが、今回は「タスクマネージャー」の数値と一致させたかったので、色々試してみて同じ結果が出るようにしました。
数値だけでも便利なのですが、時系列でグラフ表示する画面も追加しました。 こちらも「タスクマネージャー」合わせて 60 秒表示します。
TouchGFX にグラフ表示用の Widget 「Dynamic Graph」が用意されていたのですぐ実現できました。 基本的には addDataPoint() を実行していくだけなので、使い勝手が良かったです。
今回の作品は常に PC と接続して使うものなので、バックライト制御をすることで私の目にも地球にも優しくなるようにしました。エコ。
STM32U5G9J-DK2 の User Manual を眺めていると、バックライトが PWM と繋がっておりました (Figure 4. STM32U5G9J-DK2 hardware block diagram より)。 これはバックライトの明るさを変えられるかも?と思っていたのですが、STM32CubeMX でみると GPIO Output になっていて、しばらく悩んでいたのですが原因が分かりました。
TouchGFX で生成したコードはバックライトが "GPIO Output" になってしまうようで、最初から STM32CubeMX でプロジェクト生成し、LTDC を有効化すると TIM3_CH4 にちゃんとなっていました。設定もちゃんとされている。
そのため、その設定をメモっておいて TouchGFX プロジェクトの方に適用したところ、しっかり PWM 制御できました。無操作で30秒経過後はちょっと暗く、60秒経過後は完全消灯にしています。
この調査には友人の ヌキヲ に協力してもらいました。感謝。
あるものは全部使ってしまえということで、User ボタン、User LED (赤、緑) も使っています。 User ボタンはバックライト点灯・消灯切り替えに利用しています。User LED (緑) は点灯時はバックライト消灯を示します。エコの緑。
User LED (赤) は警告の赤ということで、異常が起きたときに点灯します。具体的には以下の状態を示します。
Client-Server モデルで動作しています。STM32U5G9J-DK2 が Client (以後、Client と呼ぶ)、Windows PC が Server (以後、Server と呼ぶ) となります。Client と Server は ST-Link の VCP (Virtual COM Port) によって通信します。
このあとは Client プログラムからのコマンドに応じて、Server プログラムが PC 上の操作を行ったり、情報を返したりします。