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") 注释。没有例外,我从我的太阳能充电器获取数据。非常感谢!
添加回答
举报