[Arduino] 1 Préambule
Publié : dim. août 09, 2015 9:43 am
Bonjour
Je vais poster une série d'articles concernant l'utilisation de la carte Arduino, principalement pour l'utiliser avec falcon BMS.
Avec le recul, je vous dit très honnêtement que je ne suis pas certain que ce soit la carte la plus adaptée pour construire un pit car il est assez ardu de l'employer. D'un autre côté, elle est très peu chère et si vous voulez vous initier à la programmation et l'électronique, ou simplement représenter quelques instruments, vous pouvez vous laisser tenter.
1. Sortir les données de BMS.
Cela est manifestement possible car il existe plusieurs programmes, comme par exemple MFD extractor. Mais comment ça fonctionne ?
Voilà : notre simulateur de vol préféré, a intégré (depuis la version SP3, à ce que j'ai compris) la diffusion de plusieurs de ses paramètres dans la mémoire partagée.
La mémoire partagée (http://fr.wikipedia.org/wiki/M%C3%A9moi ... ocessus%29) est un espace où les programmes peuvent écrire des données, et ces données peuvent être accessibles à d'autres programmes. Cela veut dire qu'en temps réel, pendant le vol, Falcon BMS écrit plusieurs paramètres de vol dans cette mémoire partagée, et que si nous savons accéder à cette mémoire partagée, nous pouvons récupérer ces paramètres et les afficher. Les afficher soit dans un autre programme, soit (et ce sera le but de ces articles) sur des supports externes.
La première difficulté est d'accéder à la mémoire partagée. Pour cela, Windows dispose de plusieurs API qui permettent d'y accéder :
OpenFileMapping qui permet d'ouvrir une ressource de type "file mapping".
MapViewOfFile pour lire le contenu du fichier.
UnmapViewOfFile pour clôturer la ressource ouverte précédemment.
Le détail de ces API est donné sur le MSDN (http://msdn.microsoft.com)
Les utilisation d'API peuvent s'effectuer avec plusieurs langages : visual basic, delphi pour les langages les plus accessibles, ou visual basic .net, par exemple. Perso, je travaillerai (à priori) en C++. Pour cela, j'ai téléchargé et installé la version "Microsoft Visual C++ Studio 2010 Express" (http://www.visualstudio.com/en-us/downl ... 10-express) qui est gratuite et qui comprend l'IDE (l'environnement de travail) ainsi que le compilateur.
En plus de savoir comment accéder à la mémoire partagée, il faut savoir ce que l'on y cherche. Cela est donnée par le ficher "Flight Data.h" que vous trouverez dans le répertoire C:\Falcon BMS 4.32\Docs\BMS Manuals\Other Documentation. Ce ficher donne le type de données et l'endroit dans la mémoire où il va écrire ses données.
Il s'agit d'un fichier de type .h, qui est un fichier d’entête de C++ et qui va déclarer la classe "FlightData". Certaines données de cette classe seront accessibles directement comme par exemple fuelFlow qui donne le Fuel Flow en direct, ou nozzlePos qui va donner l'ouverture du nozzle. D'autres données sont de type enum, elle désignent un bit qui à lui seul signifiera éteint ou allumé. Comme par exemple CONFIG dans LightBits qui représente l'état du voyant Config Store sur le panneau d'alertes.
Enfin, une dernière chose à connaitre : le nom donnée par falcon BMS pour sa mémoire partagée est "FalconSharedMemoryArea". Il semble y avoir également FalconSharedOsbMemoryArea et FalconSharedMemoryArea2, je n'ai pas encore utilisé.
Voilà, vous savez à présent comment certains programmes récupèrent des données de Falcon BMS, et où trouver les ressources pour extraire les données que vous désirez.
Dans mon prochain post, je vais vous donner le code source en C++ pour récupérer et afficher une donnée de vol en temps réel.
Je vais poster une série d'articles concernant l'utilisation de la carte Arduino, principalement pour l'utiliser avec falcon BMS.
Avec le recul, je vous dit très honnêtement que je ne suis pas certain que ce soit la carte la plus adaptée pour construire un pit car il est assez ardu de l'employer. D'un autre côté, elle est très peu chère et si vous voulez vous initier à la programmation et l'électronique, ou simplement représenter quelques instruments, vous pouvez vous laisser tenter.
1. Sortir les données de BMS.
Cela est manifestement possible car il existe plusieurs programmes, comme par exemple MFD extractor. Mais comment ça fonctionne ?
Voilà : notre simulateur de vol préféré, a intégré (depuis la version SP3, à ce que j'ai compris) la diffusion de plusieurs de ses paramètres dans la mémoire partagée.
La mémoire partagée (http://fr.wikipedia.org/wiki/M%C3%A9moi ... ocessus%29) est un espace où les programmes peuvent écrire des données, et ces données peuvent être accessibles à d'autres programmes. Cela veut dire qu'en temps réel, pendant le vol, Falcon BMS écrit plusieurs paramètres de vol dans cette mémoire partagée, et que si nous savons accéder à cette mémoire partagée, nous pouvons récupérer ces paramètres et les afficher. Les afficher soit dans un autre programme, soit (et ce sera le but de ces articles) sur des supports externes.
La première difficulté est d'accéder à la mémoire partagée. Pour cela, Windows dispose de plusieurs API qui permettent d'y accéder :
OpenFileMapping qui permet d'ouvrir une ressource de type "file mapping".
MapViewOfFile pour lire le contenu du fichier.
UnmapViewOfFile pour clôturer la ressource ouverte précédemment.
Le détail de ces API est donné sur le MSDN (http://msdn.microsoft.com)
Les utilisation d'API peuvent s'effectuer avec plusieurs langages : visual basic, delphi pour les langages les plus accessibles, ou visual basic .net, par exemple. Perso, je travaillerai (à priori) en C++. Pour cela, j'ai téléchargé et installé la version "Microsoft Visual C++ Studio 2010 Express" (http://www.visualstudio.com/en-us/downl ... 10-express) qui est gratuite et qui comprend l'IDE (l'environnement de travail) ainsi que le compilateur.
En plus de savoir comment accéder à la mémoire partagée, il faut savoir ce que l'on y cherche. Cela est donnée par le ficher "Flight Data.h" que vous trouverez dans le répertoire C:\Falcon BMS 4.32\Docs\BMS Manuals\Other Documentation. Ce ficher donne le type de données et l'endroit dans la mémoire où il va écrire ses données.
Il s'agit d'un fichier de type .h, qui est un fichier d’entête de C++ et qui va déclarer la classe "FlightData". Certaines données de cette classe seront accessibles directement comme par exemple fuelFlow qui donne le Fuel Flow en direct, ou nozzlePos qui va donner l'ouverture du nozzle. D'autres données sont de type enum, elle désignent un bit qui à lui seul signifiera éteint ou allumé. Comme par exemple CONFIG dans LightBits qui représente l'état du voyant Config Store sur le panneau d'alertes.
Enfin, une dernière chose à connaitre : le nom donnée par falcon BMS pour sa mémoire partagée est "FalconSharedMemoryArea". Il semble y avoir également FalconSharedOsbMemoryArea et FalconSharedMemoryArea2, je n'ai pas encore utilisé.
Voilà, vous savez à présent comment certains programmes récupèrent des données de Falcon BMS, et où trouver les ressources pour extraire les données que vous désirez.
Dans mon prochain post, je vais vous donner le code source en C++ pour récupérer et afficher une donnée de vol en temps réel.