Bonjour à tous,
je suis en train d'écrire un petit logiciel qui sert à piloter et à configurer des circuits intégrés. Ces circuits intégrés sont ce qu'on appelle des ASICs, c'est à dire qu'ils ont été spécifiquement conçus pour l'expérience pour laquelle je travaille. Ce ne sont donc pas des composants "standards", mais ça n'est pas vraiment important.
Avec ce petit logiciel nous sommes capables, entre autre chose de stocker une valeur dans un registre de configuration, relire cette valeur, injecter un signal sur le circuit, lire la ou les valeurs qui sortent du circuit suite à cette injection et les afficher dans de beaux histogrammes et plein d'autres choses, La liste est longue :)
J'écris ce logiciel en Qt5/C++ pour avoir une interface graphique, c'est franchement plus simple en période de test. J'ai pris soin de séparer la partie graphique et les autres parties, comme par exemple la communication, les calculs…
Le graphique c'est bien mais des fois on voudrait bien automatiser certaines taches ou créer des procédures et surtout que n'importe qui puisse écrire des procédures. L'idée c'est d'avoir une sorte de langage très simple pour écrire des suites d'instructions, éventuellement une instruction if/else, boucle type for. Un petit interpréteur rudimentaire va lire ces suites d'instructions depuis un fichier texte et exécuter ces suite d'instructions. Par exemple :
- écrire_dans_registre, adresse_registre, données_registre;
- attendre, temps attente;
- lire_registre, adresse_registre, afficher_valeur;
- injecter_sur_circuit, adresse_circuit, valeur_injection;
- lire_valeur_codée_par_adc, stocker_dans_vecteur valeur_codée_par_adc
- tracer_vecteur_dans_graph;
- …
J'ai pensé à plusieurs chose comme par exemple du yaml ou peut être du xml mais je ne sais pas si c'est le mieux pour faire ca… Dans tous les cas faut que ca reste simple, à faire et à prendre en main car ni moi, ni les gens qui vont utiliser cette fonctionnalité ne sommes codeurs. On maîtrise tous, à des degrés différents, l'outil informatique mais on est pas des experts de haut vol, juste des gens motivés pour faire le travail au mieux :)
Je me tourne vers vous pour avoir votre avis et savoir comment vous vous y prendriez pour faire une telle chose car je sèche un peu.
Merci d'avance pour votre aide et vos réponse.
Bonne journée
Olivier
# Piste(s)
Posté par AncalagonTotof . Évalué à 3.
Oulala, ça n'a pas l'air simple au niveau humain.
Bon, est-ce qu'on peut faire la supposition suivante ? Vu que
donc au moins une personne est assez qualifiée pour coder une sorte d’interpréteur et toutes les "actions" découlant de l'interprétation des commandes du fichier ?
Ça suppose de ne pas pousser le bouchon trop loin, par exemple : pas de vérification de syntaxe ou pas trop poussée.
Partant de là, il est assez simple de lire un fichier ligne par ligne grâce à Qt. STFW si je peux me permettre : des choses autour de QFile, readLine (de tête).
Ensuite, pour chaque ligne, un .split(" ") par exemple, pour séparer en "mots".
Après, oserais-je dire : yapuka ?
[^] # Re: Piste(s)
Posté par Olivier LEMAIRE (site web personnel) . Évalué à 1.
Bonjour et merci pour ta réponse.
Alors c'est pas toujours facile pour tout mais on s'en sort.
Bin c'est justement parce que je trouvais pas vraiment sur internet que je suis venu demander à des vrais gens :) Et puis surtout, ne pas réinventer la roue. Pour l'instant je pensais effectivement faire simple avec du pseudo-script, sans boucle ni condition… une ligne = (une instruction + ses arguments). Je ne garde que ce qui est utile sur la ligne, si il y en a plus je jette. Lecture séquentielle, pas de vérif ou presque. Ce qui correspond à lire un fichier ligne par ligne, split, interprète, exécute les instructions et recommence jusqu'à la fin du fichier.
Les logiciels de traitement de texte sont à la rédaction ce que la 2CV est à l'automobile, une vieille voiture dont on se souvient avec nostalgie mais technologiquement dépassée
# le boulot est deja fait
Posté par NeoX . Évalué à 2.
tu as donc une partie graphique, qui prend les infos de l'utilisateur
et une partie "communication" qui envoie ces infos à l'appareil.
à toi de coder une partie script pour envoyer la bonne serie de commande à partir d'un fichier.
ca pourrait etre, histoire d'être à la mode :
- un fichier json, c'est un ensemble de couples paramètre/valeur
ou
- du scripting ansile pour ensuite jouer un "playbook" qui va automatiser une sequence de commande
# Artillerie lourde
Posté par flavien75 . Évalué à 3.
C'est surement totalement sur-dimensionné, mais tu peux aussi intégrer l'interpréteur Lua dans ton logiciel.
Les vrais naviguent en -42
[^] # Re: Artillerie lourde
Posté par Olivier LEMAIRE (site web personnel) . Évalué à 1.
bonjour et merci pour ta réponse.
C'est séduisant comme proposition mais dans un premier temps probablement trop compliqué. Il faut que je propose un démonstrateur rapidement… Et vu que je ne saurai pas comment m'y prendre, je vais faire simple.
Les logiciels de traitement de texte sont à la rédaction ce que la 2CV est à l'automobile, une vieille voiture dont on se souvient avec nostalgie mais technologiquement dépassée
# if, boucle
Posté par _kaos_ . Évalué à 4.
Salut,
Tout le début me semble assez jouable.
Par contre, pour le
if
, lefor
(ou tout autre boucle), j'ai peur d'une grosse galère enyaml
ouxml
, pour toi et tes utilisateurs.Sûr, c'est faisable, je pense par exemple à helm, mais quelle galère… rien qu'à l'usage.
Face au problème et s'il y a des contraintes de temps, j'opterais pour cette voie :
- se baser sur un langage de script (python ?) afin de bénéficier de sa REPL,
- développer un module spécifique contenant les fonctions de base,
- le charger automatiquement lors de l'évaluation.
Si jamais ça t'inspire…
Python n'est qu'un exemple ;)
Matricule 23415
# syntaxe ligne de commande
Posté par goeb . Évalué à 2. Dernière modification le 03 novembre 2020 à 21:40.
Tu pourrais inventer une syntaxe simple ressemblant à un script shell, mais très simplifié :
Avantages :
- ça reste simple
- tu peux l'adapter à ton besoin
Inconvénients :
- tu dois le coder toi-même
- ça pourrait être trop simple et trop limité
Exemple :
# Python et CPython
Posté par SSHNuke0 . Évalué à 1.
Pourquoi pas écrire une petite lib en python du genre wrapper avec CPython pour appeler le code métier ?
Comme ça tes utilisateurs "n'ont plus" qu'à coder en python leur interaction et taches dont ils ont besoin :)
[^] # Re: Python et CPython
Posté par SSHNuke0 . Évalué à 1.
Quoique… je me demande si appeler du C++ a l'aide de CPython ne demande pas quelques prérequis en plus…
(ABI toussa, toussa)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.