A4A : Lâché dans la nature, malingre

Bonjour,

Voici la première version de mon projet Ada for Automation présenté ici :
http://slo-ist.fr/ada4autom

Soyez indulgent, je balbutie en Ada et c’est le résultat de mes balbutiements que j’expose à votre sagacité.

Côté code, j’étudierai vos remarques avec attention et tâcherai de me conformer de mon mieux aux règles que j’ai trouvées ici :
http://en.wikibooks.org/wiki/Ada_Style_Guide

Ce wikibook m’est d’une grande aide aussi :
http://en.wikibooks.org/wiki/Ada_Programming

Ce n’est certes pas aussi fouillé que le Barnes, le Burns and Wellings ou le Mc Cormick qui trônent sur mon bureau mais c’est quelque fois plus rapide d’y trouver un exemple et les explications qui vont avec, avec le copier-coller en plus…

Je bute sur le binding de :
http://libmodbus.org/

Cela fonctionne en Client et en Serveur, voyez dans le dossier « test » mais je ne suis pas satisfait de ma solution pour la fonction :
http://libmodbus.org/site_media/html/modbus_mapping_new.html

Quant au reste, c’est exploratoire… Ada, c’est trop fort ! 😉

Je n’ai pas trop d’avis sur la « forge » susceptible d’accueillir ce projet, aussi en voilà une archive :
http://slo-ist.fr/Download/A4A/A4A_V06_20130124.7z

Je suis preneur de vos avis sur la question de la « forge » comme sur cette production en général et je vous en remercie d’avance.

Normalement ça doit compiler sans problème. Après tout, c’est du Ada.

Si c’est compilé avec succès, on trouve dans le dossier « exe » l’ensemble des binaires.

Les plus « drôles » sont :

  • « test_libmodbus_server_many » qui implémente un serveur Modbus TCP répondant à de multiples clients, il est dérivé de celui que l’on trouve dans les sources de libmodbus, « bandwidth-server-many-up.c »,
  • et « test_libmodbus_client2 « , inspiré de « unit-test-client.c », que vous pouvez exécuter en plusieurs instances, et qui discutera volontiers avec le précédent.

Comme la documentation est encore dans ma tête, voici quelques informations sur Ada for Automation :

  • c’est un framework, c’est à dire du code pour vous permettre d’écrire vos propres applications. Il est nécessaire d’y ajouter le code de votre application pour qu’il en sorte quelque chose d’utile.
  • il vous faudra apprendre Ada, doucement mais sûrement, pour l’utiliser. Cependant la disponibilité du code source vous y aidera et si vous connaissez le langage ST pour « Structured Text » vous serez surpris par une certaine familiarité.
  • c’est un langage compilé et il faudra apprendre à utiliser les outils et les techniques de debug.
  • en principe, votre code devrait se trouver dans le paquetage « A4A.Application ». Mais vous pouvez faire ce que vous voulez du moment que vous respectez la licence.
  • le framework organise les tâches comme celles que l’on trouve dans un automate, cycliques, périodiques ou événementielles, dans le paquetage « A4A.Kernel », et les tâches appellent les fonctions que vous définissez dans le paquetage « A4A.Application ». Dans ce paquetage, on trouve également les données et les objets de votre application.
  • le paquetage « A4A.Library » fournit une librairie de fonctions comme « Conversion » et de composants comme « Timers » et « Devices ». Cette librairie n’est pas très étoffée pour le moment…
  • le paquetage « A4A.Protocols » ne fournit pour le moment qu’un binding vers la librairie « libmodbus », ce qui permet déjà d’implémenter un serveur Modbus TCP pour la connexion d’un superviseur ou un client pour piloter un module d’entrées / sorties serveur Modbus TCP. Je n’ai pas encore eu le temps de réaliser le binding des fonctions Modbus RTU mais ça ne me semble pas hors de portée. Si cela intéresse quelqu’un, je peux réaliser un binding de la librairie du pilote pour les cartes Hilscher cifX… 😉
  • enfin, votre application pourra être soit en mode console, soit avec une interface graphique avec GtkAda.
  • et, cerise sur le gâteau, elle pourra s’exécuter tant sous Linux que sous Windows® par simple recompilation sur la plate-forme de votre choix.

Si la licence choisie, GMGPL, n’évoque rien pour vous et que vous vous demandez ce qu’il est légal de faire avec une telle licence, voyez avec votre juriste favori ou avec les gens de chez AdaCore, qui fournissent les outils Ada que j’utilise et qui ont conçu cette licence.
J’avoue ma grande incompétence dans ce domaine. N’hésitez pas à m’éclairer.

Je consulte régulièrement les forums Ada et notamment :
https://groups.google.com/forum/?fromgroups=#!forum/fr.comp.lang.ada

Si vos questions portent sur Ada, de très compétentes et sympathiques personnes pourront y répondre.
J’espère pour ma part pouvoir répondre à celles que vous poserez sur Ada for Automation.

Bien sûr, c’est un projet libre et je ne manquerai pas d’intégrer vos contributions si elles servent le projet.

Cordialement,
Stéphane