es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La configuración de propiedad de Gdbus desde el cliente no funciona.

Basándome en el ejemplo de “hello world” de fatmimin, he agregado una propiedad a la interfaz:

<property name="Sputulant" type="i" access="readwrite"></property>

Al ejecutar “make gen”, se generan dos funciones llamadas:

min_min_bus_gdbus_set_sputulant()
min_min_bus_gdbus_get_sputulant()

No he agregado ningún código en server.c para “conectar” esta propiedad (de la misma manera que se hace con g_signal_connect() en el método Hello World).

Cuando llamo a estas funciones desde el cliente, solo la función de obtener (get) funciona. No puedo establecer (set) el valor.

Sin embargo, utilizando la herramienta gdbus sí funciona:

gdbus call -e -d com.fatminmin -o /com/fatminmin/GDBUS -m org.freedesktop.DBus.Properties.Set "com.fatminmin.GDBUS" "Sputulant" "<123>"

He estado investigando esto durante días y no encuentro ningún código de muestra para propiedades ni ninguna otra sugerencia. ¿Qué estoy haciendo mal aquí?

Gracias de antemano.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Según la información proporcionada, parece que el problema puede residir en el código en server.c que no se conecta correctamente a la propiedad. Sin ver el código, es difícil proporcionar una solución específica. Sin embargo, aquí hay algunas sugerencias generales:

    • Asegúrese de que la propiedad esté correctamente definida en el archivo XML de la interfaz y que se especifique el tipo de acceso correcto (en este caso, lectura/escritura).
    • En el código del servidor, use g_object_class_install_property() para instalar la propiedad y especificar las funciones de obtener/establecer.
    • En el código del servidor, use g_signal_connect() para conectar la propiedad a una función de devolución de llamada que se llamará cuando cambie el valor de la propiedad (si corresponde).
    • Al llamar a la función de establecer desde el cliente, asegúrese de pasar el tipo de dato correcto (en este caso, un entero).
    • Verifique si hay mensajes de error en los registros del servidor y del cliente.

    Si estas sugerencias no resuelven el problema, puede ser útil proporcionar más información sobre el código y el entorno utilizado.

Comments are closed.