Quand une appli a besoin des résultats d'une autre

Signaler
Messages postés
1
Date d'inscription
mardi 4 juillet 2006
Statut
Membre
Dernière intervention
9 juillet 2006
-
Messages postés
571
Date d'inscription
vendredi 30 décembre 2005
Statut
Membre
Dernière intervention
12 juillet 2012
-
 Bonjour à tous,

 Pour vous mettre à mon niveau, disons qu'il y a une vingtaine d'année, je savais programmer en basic par lignes de commande et en assembleur sur des micro-contrôleur, depuis, je n'ai fais qu'utiliser des programmes tout prets.
 
Une application A.exe qui tourne sous XP élabore entre autres une valeur angulaire (nombre algébrique) à une fréquence qui est variable de 15 à 30 hertz.
 Je voudrais asservir une mécanique sur cet angle. Certains parleront de temps réel, en fait les mouvements sont lents et un point de mesure tous les 100 ms sur une valeur moyenne de cet angle sur 100ms devrait suffire.

 Le hard: une carte d'entrées-sorties genre USB I/O 24 intégrant un microcontrôleur ou Labjack U12 et une carte d'alimentation d'un moteur de vérin, soit à courant continu soit pas à pas.
 La solution élégante est le pas à pas mais il faut programmer des rampes à fréquence variable.

 Le soft: A.exe existe, la solution simple serait une dll ajoutées à celles de A pour assurer la transmission vers la sortie, ce sera peut-être la solution finale. En attendant, je préfererais passer par un intermédiaire B.exe qui à partir des valeurs de l'angle et d'une position de la mecanique élaborerait une commande : monte, descend ou reste, le microcontrôleur gérant les fins de courses.

 J'ai un collègue qui a eut la gentillesse de faire une dll pour A qui me permet depuis A de démarrer l'envoie des données ainsi que B.exe qui me fabrique un fichier txt ou s'impriment les valeurs transmises. Ceci se fait au moyen d'un protocole client-serveur qui occupe à lui seul 50 du temps de L'UC !

 Ma question: étant donné que je n'ai rien à écrire dans A, ne peut-on pas mettre, avec une dll de A la valeur de l'angle dans une mémoire d'adresse fixe non utilisée (un buffer), valeur que je pourrais venir lire avec B ?

 J'en suis encore au stade de la définition du hard, la mécanique fonctionne sans les actionneurs, et toutes les suggestions seront les bienvenues.

 Je n'osais pas le dire, je fais de la simulation de vol sur hélicoptère et je fabrique un siège qui devrait bouger en tangage et roulis. La commande est un peu identique à celle d'un pilote automatique de voilier, mon idée première était de récupérer ce matériel assez diffusé. 

Je n'ai peut être pas posté dans la bonne rubrique, en tout cas merci d'avance.
Henri.

1 réponse

Messages postés
571
Date d'inscription
vendredi 30 décembre 2005
Statut
Membre
Dernière intervention
12 juillet 2012
3
Salut :)

Si c'est bien codé, le socket est la meilleure façon de faire
communiquer entre elles deux applications. Mais VB n'est certainement
pas le plus puissant pour ça. Sous linux, les sockets sont des
descripteurs de fichiers, par conséquent il est aisé d' injecter ce qui
serait écrit, directement vers l' application B.


Pourquoi ne pas faire une seule application pour l' ensemble? Calcul valeur angulaire et prise de décision à la volée.


Passer par une zone tampon de la mémoire semble difficile puisque'on est en mode protégé.