2016-07-13 10 views
2

私はQtアプリケーションで作業しており、バッテリーの状態(充電、パーセンテージなど)を監視したいと考えています。 statusueventなどのファイルが/sys/class/power_supply/batteryディレクトリにあり、必要なすべての情報があります。これらのファイルは、充電器の接続/切断時に更新されています。私はQFileSystemWatcherクラスを使ってみましたが、それらのファイルのタイムスタンプは内容によって変化していないため動作しませんでした。バッテリーの状態を監視する他の方法はありますか?Linuxのバッテリー状況を監視してください

これを行うにはタイマー/スレッドを使用できますが、OS(DebianArm)で利用可能な他のオプションを調べたいと思います。

+1

参照[この質問](http://stackoverflow.com/q/22803469/1329652)または[その質問](http://stackoverflow.com/q/23146915/ 1329652)。 'uevent'インターフェースが必要なものだと思います。 –

+1

'QFileSystemWatcher'はLinuxのinotifyに依存しています。これは' sysfs'と 'procfs'ではサポートされていません(http://comments.gmane.org/gmane.linux.file-systems/83641)。適切なファイルに対して 'select'または' poll'を実行して、必要な振る舞いを得る必要があります。 –

+0

あなたはDバスを見てみることもできます。そこにはたくさんのメッセージがあります。おそらくそれはあなたを助けるでしょう。 – Adam

答えて

1

私がコメントで述べたように、D-Busを見ることもできます。

あなたが見なければならない特別:変更

  • 信号() - 何かの変更、それはあなたに通知します[3]

とプロパティ[2]

  • エネルギー
  • EnergyEmpty
  • EnergyFull

QT5はDバス[4] [5]をサポートします。試験に

シェルコマンド:

dbus-send --print-reply \ 
      --system \ 
      --dest=org.freedesktop.UPower \ 
      /org/freedesktop/UPower/devices/battery_BAT0 \ # change BAT0 to proper value - you can check it with d-feet [6] 
      org.freedesktop.DBus.Properties.GetAll \ 
      string:org.freedesktop.UPower.Device 

d-feet

  1. https://upower.freedesktop.org/docs/UPower.html
  2. https://upower.freedesktop.org/docs/Device.html
  3. https://upower.freedesktop.org/docs/Device.html#Device::Changed
  4. http://doc.qt.io/qt-5/qtdbus-index.html
  5. http://doc.qt.io/qt-5/examples-dbus.html
  6. https://wiki.gnome.org/action/show/Apps/DFeet?action=show&redirect=DFeet
+0

バッテリーやライン電源オブジェクトの信号が放出されないようです。 これは私に90%の道を与えましたが、結局のところ、タイマーでポーリングする必要があります。つまり、質問者が説明したようにファイルをチェックするよりも優れていません。 – Tozar

関連する問題