Java dbus 调制解调器管理器
Posted
技术标签:
【中文标题】Java dbus 调制解调器管理器【英文标题】:Java dbus ModemManager 【发布时间】:2021-06-09 16:57:53 【问题描述】:我正在尝试从 Java 中为 ModemManager 访问没有运气的 dbus。 我使用来自https://github.com/hypfvieh/dbus-java 的 dbus-java。 到目前为止我所做的是:
-
获取到总线的连接
DBusConnection conn = DBusConnection.getConnection(DBusConnection.DBusBusType.SYSTEM)
;
-
导入的 Introspection xml,在设备上生成(但我不确定这项工作是否正常)..
尝试连接到特定总线以处理信息:
Modem modem = conn.getRemoteObject("org.freedesktop.ModemManager1", "/org/freedesktop/ModemManager1/Modem", Modem.class)
-
连接处理程序以获取信息:
conn.addSigHandler(Modem.StateChanged.class, new DBusSigHandler<Modem.StateChanged>()
@Override
public void handle(Modem.StateChanged s)
System.out.println("State" + s._new);
);
结果.. 没有事件被触发。在设备上,我看到(使用 dbus-monitor --system)在我运行的所有时间都会触发事件。
例如,在 dbus-monitor 中我看到:
signal time=1615482074.152996 sender=:1.5 -> destination=(null destination) serial=478 path=/org/freedesktop/ModemManager1/Modem/0; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged
string "org.freedesktop.ModemManager1.Modem"
array [
dict entry(
string "SignalQuality"
variant struct
uint32 80
boolean true
)
]
array [
]
有人能指出我正确的方向吗?我确定我做错了什么。 谢谢 吉安玛丽亚
【问题讨论】:
【参考方案1】:此设置中的第二个字符串是错误的:
Modem modem = conn.getRemoteObject("org.freedesktop.ModemManager1", "/org/freedesktop/ModemManager1/Modem", Modem.class)
应该是完整的对象路径;例如对于索引 0 处的调制解调器:
Modem modem = conn.getRemoteObject("org.freedesktop.ModemManager1", "/org/freedesktop/ModemManager1/Modem/0", Modem.class)
【讨论】:
以上是关于Java dbus 调制解调器管理器的主要内容,如果未能解决你的问题,请参考以下文章