在 dbus 接口上调用方法时出现 GLib-GIO-CRITICAL 错误
GLib-GIO-CRITICAL error While invoking a method on dbus interface
我正在使用 lgi 动态 Lua 绑定到基于 GObject 的库以通过 dbus.Below 在应用程序之间进行通信是我的 method_call 的 dbus-send 命令输出的一部分申请。
方法return sender=:1.2 -> dest=:1.19 reply_serial=2
数组[
dict entry(
string "XYZ"
variant int32 1
)
dict entry(
string "ABC"
variant int32 0
)
dict entry(
string "EFG"
variant string "str"
)
dict entry(
string "HIJ"
variant string "8c011401-4836-4889-8fa5-32ddb894a97a"
)
dict entry(
string "KLM"
variant string "dummy"
)
现在我想在上面的输出中设置 "DEF" 值,签名为 'a{sv}'。下面是我为执行相同操作而编写的代码:
local lgi=require 'lgi'
local Gio=lgi.require 'Gio'
local GLib=lgi.GLib
local db=require 'debugger'
local factory=function()
return Gio.bus_get_sync(Gio.BusType.SYSTEM)
end
local bus=factory()
local j=GLib.Variant.new('s','value')
local k2=GLib.Variant('a{sv}',{DEF=j})
str,err=bus:call_sync('org.destination','/my/application/obj_path','org.destination.path','Method_name',k2,nil,Gio.DBusConnectionFlags.NONE,-1)
if err then
print(err)
else
print(str)
end
当我运行上面的脚本时,我遇到了以下错误:
(进程:19120):GLib-GIO-CRITICAL **:g_dbus_connection_call_sync_internal:断言'(参数== NULL)|| g_variant_is_of_type(参数,G_VARIANT_TYPE_TUPLE)'失败。
如何设置以上值?我哪里做错了?有人可以帮助我吗?
提前致谢。
该错误非常清楚地告诉您问题出在哪里。 call_sync 的 "parameter" 参数(C API 中的 g_dbus_connection_call_sync)需要是一个元组。你提供了一本字典。更改 k2 使其成为元组变体。
我正在使用 lgi 动态 Lua 绑定到基于 GObject 的库以通过 dbus.Below 在应用程序之间进行通信是我的 method_call 的 dbus-send 命令输出的一部分申请。
方法return sender=:1.2 -> dest=:1.19 reply_serial=2
数组[
dict entry(
string "XYZ"
variant int32 1
)
dict entry(
string "ABC"
variant int32 0
)
dict entry(
string "EFG"
variant string "str"
)
dict entry(
string "HIJ"
variant string "8c011401-4836-4889-8fa5-32ddb894a97a"
)
dict entry(
string "KLM"
variant string "dummy"
)
现在我想在上面的输出中设置 "DEF" 值,签名为 'a{sv}'。下面是我为执行相同操作而编写的代码:
local lgi=require 'lgi'
local Gio=lgi.require 'Gio'
local GLib=lgi.GLib
local db=require 'debugger'
local factory=function()
return Gio.bus_get_sync(Gio.BusType.SYSTEM)
end
local bus=factory()
local j=GLib.Variant.new('s','value')
local k2=GLib.Variant('a{sv}',{DEF=j})
str,err=bus:call_sync('org.destination','/my/application/obj_path','org.destination.path','Method_name',k2,nil,Gio.DBusConnectionFlags.NONE,-1)
if err then
print(err)
else
print(str)
end
当我运行上面的脚本时,我遇到了以下错误:
(进程:19120):GLib-GIO-CRITICAL **:g_dbus_connection_call_sync_internal:断言'(参数== NULL)|| g_variant_is_of_type(参数,G_VARIANT_TYPE_TUPLE)'失败。
如何设置以上值?我哪里做错了?有人可以帮助我吗?
提前致谢。
该错误非常清楚地告诉您问题出在哪里。 call_sync 的 "parameter" 参数(C API 中的 g_dbus_connection_call_sync)需要是一个元组。你提供了一本字典。更改 k2 使其成为元组变体。