🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fr.comp.lang.ada
Article #76

Re: Ada for Automation

#76
From: slos
Date: Thu, 31 Jan 2013 20:55
85 lines
3938 bytes
Le mercredi 30 janvier 2013 19:04:36 UTC+1, Ludovic Brenta a écrit :
> Je suppose que nous sommes tous trop occupés à préparer
> 
> le FOSDEM pour répondre en détail...
> 
> 
> 
> En quelques mots très rapides:
> 
> 
> 
> - n'utilise pas System.Address mais un type accès
> 
>   vers le record.  Ajoute pragma Convention (C) au
> 
>   type accès.
> 
> 
> 
> - pour les tableaux qui sont dans le record, utilise
> 
>   des instances de Interfaces.C.Pointers (ARM B.3.2).
> 
>   Dans le record, chaque "int" deviendra un
> 
>   Interfaces.C.ptrdiff_t et chaque pointeur vers
> 
>   tableau deviendra un Interfaces.C.Pointers.Pointer.
> 
> 
> 
> Autre solution: les 4 longueurs peuvent devenir 4
> 
> discriminants du record, les 4 tableaux étant contraints
> 
> par ces discriminants.  Je ne suis pas sûr que ça
> 
> marcherait mais ça vaut peut-être le coup d'essayer.
> 
> 
> 
> -- 
> 
> Ludovic Brenta.

Bonjour Monsieur BRENTA,

Merci d'avoir pris le temps de me répondre.

J'ai un peu épluché le sujet de l'interface avec le C, c'est une des raisons de ce binding libmodbus, explorer cette problématique, et les solutions sont assez diverses...

Il y a effectivement Interfaces.C et fils mais j'ai également trouvé, sur le web :
http://en.wikibooks.org/wiki/Ada_Programming/Types/access
http://www.adaic.org/resources/add_content/standards/05rm/html/RM-B-3.html notamment à partir du point 62

et bien sûr les sources Ada comme CairoAda de Monsieur CARBONNE ou autres comme celles de GNAT et librairies, sockets...

Ce n'est pas simple de s'y retrouver entre les System.Address, typés ou non, les System.Address_To_Access_Conversions, les paramètres access dans les fonctions...

Et comme souvent, c'est en regardant le problème sous un autre angle que la solution devient plus simple :

La fonction que je souhaitais intégrer dans mon binding "modbus_mapping_new" ne fait qu'allouer les différents tableaux et cette structure est ensuite transmise en paramètre de la fonction sensée répondre à la requête.

Je pense donc qu'il vaut mieux que je crée ma structure en Ada, sur laquelle je pourrai travailler à loisir, et que je passe le "pointeur" à la fonction :
http://libmodbus.org/site_media/html/modbus_reply.html

Je code ceci et vous fais un retour.

Merci encore,
Cordialement;
Stéphane
http://slo-ist.fr/ada4autom
Technical Details
Message-ID: <68c47595-b951-4fad-8cfe-149b777a046b@googlegroups.com>
Path: arc1-ca.pugleaf.net!k2ni3907qap.0!nntp.google.com!p13no7541359qai.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
References: <4e7e5467-fe89-4d55-8b46-80e3cd8af9f8@googlegroups.com> <ce90c01c-2d8c-4a0c-83d7-1a8d8bab8e7f@googlegroups.com> <044ae18c-9854-4f47-9b8e-b740dffe20f8@googlegroups.com>

Show Full Headers
Complete Article Headers
X-Google-Thread: 43d0c745c,3ec9ea2623601032
X-Google-Attributes: gid43d0c745c,public,usenet
X-Google-NewGroupId: yes
X-Google-Language: FRENCH,ASCII
X-Received: by 10.224.110.68 with SMTP id m4mr5049563qap.2.1359665717800;
        Thu, 31 Jan 2013 12:55:17 -0800 (PST)
X-Received: by 10.49.12.238 with SMTP id b14mr1033713qec.18.1359665717757;
 Thu, 31 Jan 2013 12:55:17 -0800 (PST)
Path: arc1-ca.pugleaf.net!k2ni3907qap.0!nntp.google.com!p13no7541359qai.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: fr.comp.lang.ada
Date: Thu, 31 Jan 2013 12:55:17 -0800 (PST)
In-Reply-To: <044ae18c-9854-4f47-9b8e-b740dffe20f8@googlegroups.com>
Complaints-To: groups-abuse@google.com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=80.119.168.166;
 posting-account=O3LyFwoAAACc1uh60ZcOUmAGdDmGsEcV
NNTP-Posting-Host: 80.119.168.166
References: <4e7e5467-fe89-4d55-8b46-80e3cd8af9f8@googlegroups.com>
 <ce90c01c-2d8c-4a0c-83d7-1a8d8bab8e7f@googlegroups.com> <044ae18c-9854-4f47-9b8e-b740dffe20f8@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <68c47595-b951-4fad-8cfe-149b777a046b@googlegroups.com>
Subject: Re: Ada for Automation
From: slos <new.stephane.los@gmail.com>
Injection-Date: Thu, 31 Jan 2013 20:55:17 +0000
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable