【问题标题】:Java dbus ModemManagerJava dbus 调制解调器管理器
【发布时间】:2021-06-09 16:57:53
【问题描述】:

我正在尝试从 Java 中为 ModemManager 访问没有运气的 dbus。 我使用来自https://github.com/hypfvieh/dbus-java 的 dbus-java。 到目前为止我所做的是:

  1. 获取到总线的连接

DBusConnection conn = DBusConnection.getConnection(DBusConnection.DBusBusType.SYSTEM);

  1. 导入的 Introspection xml,在设备上生成(但我不确定这项工作是否正常)..
  2. 尝试连接到特定总线以处理信息:
Modem modem = conn.getRemoteObject("org.freedesktop.ModemManager1", "/org/freedesktop/ModemManager1/Modem", Modem.class)
  1. 连接处理程序以获取信息:
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 [
   ]

有人能指出我正确的方向吗?我确定我做错了什么。 谢谢 吉安玛丽亚

【问题讨论】:

    标签: dbus


    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-02
      • 2019-04-22
      • 2016-04-04
      • 2023-02-14
      • 1970-01-01
      相关资源
      最近更新 更多