Problème de communication avec une librairie C

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Problème de communication avec une librairie C

Olivier Cruilles
Bonjour Benoit,

Je suis en train de développer un nouveau composant pour mes besoins basé sur la librairie 'liboping'.

Le gros du travail consiste pour moi a interfacer Gambas avec cette librairie.
Mon problème vient lorsque que je dois transmettre a certaines fonctions des chaines de caractère mais celles-ci doivent être des chaines de caractères terminée par le caractère null '\0'.

C'est sur cela que je bute.
Voici un exemple avec fonction:

ping_host_add - Add a host to a liboping object


SYNOPSIS

  #include <oping.h>
  int ping_host_add    (pingobj_t *obj, const char *host);
  int ping_host_remove (pingobj_t *obj, const char *host);


DESCRIPTION

The ping_host_add method tries to resolve the host argument, open a socket and associate everything with the liboping object obj.

The obj argument is a pointer to an liboping object, as returned by ping_construct(3).

The host parameter is a '\0' terminated string which is interpreted as a hostname or an IP address. Depending on the address family setting, set with ping_setopt(3), the hostname is resolved to an IPv4 or IPv6 address.

The ping_host_remove method looks for host within obj and remove it if found. It will close the socket and deallocate the memory, too.

The names passed to ping_host_add and ping_host_remove must match. This name can be queried using ping_iterator_get_info(3).


 
J'ai essayé de transmettre directement une variable de type STRING ou par le pointer de la variable ou par un stream en ecriture sur la memoire mais rien ne change.

Si tu as une idée de comment je dois faire.

Merci d'avance.

Olivier CRUILLES





------------------------------------------------------------------------------
LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
Remotely access PCs and mobile devices and provide instant support
Improve your efficiency, and focus on delivering more value-add services
Discover what IT Professionals Know. Rescue delivers
http://p.sf.net/sfu/logmein_12329d2d
_______________________________________________
Gambas-user-fr mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gambas-user-fr
Reply | Threaded
Open this post in threaded view
|

Re: Problème de communication avec une librairie C

Fabien Bodard-4
http://gambasdoc.org/help/dev/api/name/gb.tozerostring?fr&v3

c'est pas ça ?

jette un oeuil dans les sources de gambas (ex: gb.qt ou autre pour l'utilisation)... Je ne suis pas un pro en C :-)


Le 6 décembre 2012 09:41, <[hidden email]> a écrit :
Bonjour Benoit,

Je suis en train de développer un nouveau composant pour mes besoins basé sur la librairie 'liboping'.

Le gros du travail consiste pour moi a interfacer Gambas avec cette librairie.
Mon problème vient lorsque que je dois transmettre a certaines fonctions des chaines de caractère mais celles-ci doivent être des chaines de caractères terminée par le caractère null '\0'.

C'est sur cela que je bute.
Voici un exemple avec fonction:

ping_host_add - Add a host to a liboping object


SYNOPSIS

  #include <oping.h>
  int ping_host_add    (pingobj_t *obj, const char *host);
  int ping_host_remove (pingobj_t *obj, const char *host);


DESCRIPTION

The ping_host_add method tries to resolve the host argument, open a socket and associate everything with the liboping object obj.

The obj argument is a pointer to an liboping object, as returned by ping_construct(3).

The host parameter is a '\0' terminated string which is interpreted as a hostname or an IP address. Depending on the address family setting, set with ping_setopt(3), the hostname is resolved to an IPv4 or IPv6 address.

The ping_host_remove method looks for host within obj and remove it if found. It will close the socket and deallocate the memory, too.

The names passed to ping_host_add and ping_host_remove must match. This name can be queried using ping_iterator_get_info(3).


 
J'ai essayé de transmettre directement une variable de type STRING ou par le pointer de la variable ou par un stream en ecriture sur la memoire mais rien ne change.

Si tu as une idée de comment je dois faire.

Merci d'avance.

Olivier CRUILLES





------------------------------------------------------------------------------
LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
Remotely access PCs and mobile devices and provide instant support
Improve your efficiency, and focus on delivering more value-add services
Discover what IT Professionals Know. Rescue delivers
http://p.sf.net/sfu/logmein_12329d2d
_______________________________________________
Gambas-user-fr mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gambas-user-fr




--
Fabien Bodard

------------------------------------------------------------------------------
LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
Remotely access PCs and mobile devices and provide instant support
Improve your efficiency, and focus on delivering more value-add services
Discover what IT Professionals Know. Rescue delivers
http://p.sf.net/sfu/logmein_12329d2d
_______________________________________________
Gambas-user-fr mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gambas-user-fr
Reply | Threaded
Open this post in threaded view
|

Re: Problème de communication avec une librairie C

Olivier Cruilles
J'ai bien trouvé cette doc mais je n'ai pas su comment utiliser cette fonction: tozerostring

Je ne code pas en C, je fais tout en Gambas.

Cordialement,

Olivier Cruilles

Le 6 déc. 2012 à 09:48, Fabien Bodard <[hidden email]> a écrit :

http://gambasdoc.org/help/dev/api/name/gb.tozerostring?fr&v3

c'est pas ça ?

jette un oeuil dans les sources de gambas (ex: gb.qt ou autre pour l'utilisation)... Je ne suis pas un pro en C :-)


Le 6 décembre 2012 09:41, <[hidden email]> a écrit :
Bonjour Benoit,

Je suis en train de développer un nouveau composant pour mes besoins basé sur la librairie 'liboping'.

Le gros du travail consiste pour moi a interfacer Gambas avec cette librairie.
Mon problème vient lorsque que je dois transmettre a certaines fonctions des chaines de caractère mais celles-ci doivent être des chaines de caractères terminée par le caractère null '\0'.

C'est sur cela que je bute.
Voici un exemple avec fonction:

ping_host_add - Add a host to a liboping object


SYNOPSIS

  #include <oping.h>
  int ping_host_add    (pingobj_t *obj, const char *host);
  int ping_host_remove (pingobj_t *obj, const char *host);


DESCRIPTION

The ping_host_add method tries to resolve the host argument, open a socket and associate everything with the liboping object obj.

The obj argument is a pointer to an liboping object, as returned by ping_construct(3).

The host parameter is a '\0' terminated string which is interpreted as a hostname or an IP address. Depending on the address family setting, set with ping_setopt(3), the hostname is resolved to an IPv4 or IPv6 address.

The ping_host_remove method looks for host within obj and remove it if found. It will close the socket and deallocate the memory, too.

The names passed to ping_host_add and ping_host_remove must match. This name can be queried using ping_iterator_get_info(3).


 
J'ai essayé de transmettre directement une variable de type STRING ou par le pointer de la variable ou par un stream en ecriture sur la memoire mais rien ne change.

Si tu as une idée de comment je dois faire.

Merci d'avance.

Olivier CRUILLES





------------------------------------------------------------------------------
LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
Remotely access PCs and mobile devices and provide instant support
Improve your efficiency, and focus on delivering more value-add services
Discover what IT Professionals Know. Rescue delivers
http://p.sf.net/sfu/logmein_12329d2d
_______________________________________________
Gambas-user-fr mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gambas-user-fr




--
Fabien Bodard

------------------------------------------------------------------------------
LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
Remotely access PCs and mobile devices and provide instant support
Improve your efficiency, and focus on delivering more value-add services
Discover what IT Professionals Know. Rescue delivers
http://p.sf.net/sfu/logmein_12329d2d
_______________________________________________
Gambas-user-fr mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gambas-user-fr
Reply | Threaded
Open this post in threaded view
|

Re: Problème de communication avec une librairie C

Benoît Minisini
In reply to this post by Fabien Bodard-4
Le 06/12/2012 09:48, Fabien Bodard a écrit :
> http://gambasdoc.org/help/dev/api/name/gb.tozerostring?fr&v3
>
> c'est pas ça ?
>
> jette un oeuil dans les sources de gambas (ex: gb.qt ou autre pour
> l'utilisation)... Je ne suis pas un pro en C :-)
>

Non non rien à voir, ça c'est pour quand on écrit des composants en C/C++ !

Olivier: il me faut ton code source avec les déclarations "extern".

--
Benoît Minisini

------------------------------------------------------------------------------
LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
Remotely access PCs and mobile devices and provide instant support
Improve your efficiency, and focus on delivering more value-add services
Discover what IT Professionals Know. Rescue delivers
http://p.sf.net/sfu/logmein_12329d2d
_______________________________________________
Gambas-user-fr mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gambas-user-fr
Reply | Threaded
Open this post in threaded view
|

Re: Problème de communication avec une librairie C

Fabien Bodard-4
haaaa ok .. je croyais qu'il le faisait en C 


Le 6 décembre 2012 12:29, Benoît Minisini <[hidden email]> a écrit :
Le 06/12/2012 09:48, Fabien Bodard a écrit :
> http://gambasdoc.org/help/dev/api/name/gb.tozerostring?fr&v3
>
> c'est pas ça ?
>
> jette un oeuil dans les sources de gambas (ex: gb.qt ou autre pour
> l'utilisation)... Je ne suis pas un pro en C :-)
>

Non non rien à voir, ça c'est pour quand on écrit des composants en C/C++ !

Olivier: il me faut ton code source avec les déclarations "extern".

--
Benoît Minisini

------------------------------------------------------------------------------
LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
Remotely access PCs and mobile devices and provide instant support
Improve your efficiency, and focus on delivering more value-add services
Discover what IT Professionals Know. Rescue delivers
http://p.sf.net/sfu/logmein_12329d2d
_______________________________________________
Gambas-user-fr mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gambas-user-fr



--
Fabien Bodard

------------------------------------------------------------------------------
LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
Remotely access PCs and mobile devices and provide instant support
Improve your efficiency, and focus on delivering more value-add services
Discover what IT Professionals Know. Rescue delivers
http://p.sf.net/sfu/logmein_12329d2d
_______________________________________________
Gambas-user-fr mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gambas-user-fr
Reply | Threaded
Open this post in threaded view
|

Re: Problème de communication avec une librairie C

Olivier Cruilles
Bonsoir,

Merci pour vos réponses Benoit et Fabien.

En fait, j'ai beaucoup cherché et testé plein de solutions, tout en relisant les docs de Gambas ou j'ai trouvé mes réponses.

En effet le problème ne vient pas de Gambas qui comme tu le dis Benoit car Gambas transmet bien les chaine de caractères terminées par un caractère null.

Le problème vient en premier lieu de la librairie qui refuse de fonctionner si je ne suis pas root donc ça c'est réglé.

Je continu donc a chercher mes autres problèmes qui viennent surtout de ma compréhension de la librairie et pas de Gambas.


Pour info j'ai trouvé ça dans la doc qui m'a aidé:


Alloc
Pointeur = Alloc ( Chaîne AS String)
Alloue un bloc de mémoire contenant la Chaîne spécifiée et retourne un pointeur sur celle-ci.
La taille du bloc mémoire dépend de la longueur de la chaîne avec un octet en plus contenant le caractère null.

Voila, merci


Cordialement,

Olivier Cruilles

Le 6 déc. 2012 à 21:32, Fabien Bodard <[hidden email]> a écrit :

haaaa ok .. je croyais qu'il le faisait en C 


Le 6 décembre 2012 12:29, Benoît Minisini <[hidden email]> a écrit :
Le 06/12/2012 09:48, Fabien Bodard a écrit :
> http://gambasdoc.org/help/dev/api/name/gb.tozerostring?fr&v3
>
> c'est pas ça ?
>
> jette un oeuil dans les sources de gambas (ex: gb.qt ou autre pour
> l'utilisation)... Je ne suis pas un pro en C :-)
>

Non non rien à voir, ça c'est pour quand on écrit des composants en C/C++ !

Olivier: il me faut ton code source avec les déclarations "extern".

--
Benoît Minisini

------------------------------------------------------------------------------
LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
Remotely access PCs and mobile devices and provide instant support
Improve your efficiency, and focus on delivering more value-add services
Discover what IT Professionals Know. Rescue delivers
http://p.sf.net/sfu/logmein_12329d2d
_______________________________________________
Gambas-user-fr mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gambas-user-fr



--
Fabien Bodard
------------------------------------------------------------------------------
LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
Remotely access PCs and mobile devices and provide instant support
Improve your efficiency, and focus on delivering more value-add services
Discover what IT Professionals Know. Rescue delivers
http://p.sf.net/sfu/logmein_12329d2d_______________________________________________
Gambas-user-fr mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gambas-user-fr


------------------------------------------------------------------------------
LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
Remotely access PCs and mobile devices and provide instant support
Improve your efficiency, and focus on delivering more value-add services
Discover what IT Professionals Know. Rescue delivers
http://p.sf.net/sfu/logmein_12329d2d
_______________________________________________
Gambas-user-fr mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gambas-user-fr