2 回答

TA貢獻1859條經驗 獲得超6個贊
為什么獲取所有依賴項是一項艱巨的任務?dbus-java 庫和依賴項都可以在 maven 中心獲得,所以一個合適的 maven 項目應該是開箱即用的。
回到主題:
您不必實現GetValue()
,但您需要一個合適的 java 接口用于BusItem
.
據我在 victronenergy ( https://www.victronenergy.com/live/open_source:ccgx:d-bus )的文檔中看到,您的界面不正確。
您提供SetDefault()
/GetDefault()
方法,這些方法僅適用于com.victronenergy.settings
對象,但您想檢索一個com.victronenergy.BusItem
(不是com.victronenergy.settings
包的一部分)。
這是一個錯誤。第二個錯誤是:您為BusItem
類使用了錯誤的包名。
在您的情況下,DBus 將嘗試javadbus.BusItem
使用連接的 BusAddress 未提供的路徑解析對象com.victronenergy.solarcharger.ttyUSB0
。
本BusItem
類必須在包裝com.victronenergy
或你必須使用注解@DBusInterfaceName("com.victronenergy.BusItem")
。
注釋將告訴 DBus 庫忽略 java 包/類名并使用注釋中提供的名稱。

TA貢獻1853條經驗 獲得超18個贊
Inteface BusItem 由來自https://dbus.freedesktop.org/doc/dbus-java/dbus-java/dbus-javase10.html的 CreateInterface-Script和來自 Introspect() 的 XML創建
但是你解決了我真正的問題。我現在使用了 @DBusInterfaceName("com.victronenergy.BusItem") 注釋。沒有例外,我從我的太陽能充電器獲取數據。非常感謝!
添加回答
舉報