Liste détaillée des fonctions Mensura
Ces fonctions existent sous deux formes, cdecl (préfixe c) et stdcall (préfixe std). Il n'est indiqué ici que la forme stdcall. Il est souhaitable que les fonctions fondamentales soient définies sous ces deux formes ; par contre, les fonctions supplémentaires (transmission des paramètres par référence, fonctions de nommage numériques...) peuvent n'être définies qu'en type cdecl, qui semble être le plus répandu.
La description est donnée ici avec la syntaxe du langage Pascal.
Fonctions fondamentales
Tous les appareils ou dispositifs expérimentaux n'ont pas obligatoirement les fonctions numériques décrites ci-dessous. Par exemple, un pHmètre n'a pas de sorties logiques ou analogiques, et pour ces fonctions de sortie, les noms des fonctions ont une longueur nulle, ce qui signifie que les fonctions numériques n'existent pas.
Inversement, on peut imaginer un pilote pour la commande d'un moteur, où il n'existe pas de fonctions d'entrée analogique ou binaire : il faut mettre les noms de ces fonctions d'entrée à une longueur nulle.
function stdea(n:longint) : longint ;stdcall;export;
nième entrée analogique (résultat directement renvoyé par le convertisseur analogique-numérique)
function stdnea(n:longint):pchar ;stdcall;export;
nom de la nième entrée analogique
function stdead(n:longint):double ;stdcall;export;
nième entrée analogique (résultat converti en unité SI, le plus souvent en Volts)
function stdnead(n:longint):pchar ;stdcall;export;
nom de la nième entrée analogique renvoyant le résultat sous forme de "double"
function stdsa(n:longint;valeur:longint):longint;stdcall;export;
envoi de valeur au convertisseur numérique analogique sur la nième sortie analogique ; si tout s'est bien passé, elle renvoie valeur.
function stdnsa(n:longint):pchar;stdcall;export;
nom de la nième sortie analogique fixant directement la valeur du CNA.
function stdsad(n:longint; valeur:double):double;stdcall;export;
Elle permet la fixation de la nième sortie analogique à valeur. Pour la plupart des interfaces, la valeur sera en volts, mais on peut imaginer des systèmes plus complexes, où une sortie puisse commander une température, une vitesse de rotation, une intensité lumineuse, ou d'autres grandeurs pouvant varier.
function stdnsad(n:longint):pchar;stdcall;export;
C'est le nom de la fonction précédente
function stdeb(n:longint):longint ;stdcall;export;
nième entrée binaire (ou entrée logique). Le résultat "vrai" correspondra à 1, et le résultat "faux" correspondra à zéro.
function stdneb(n:longint):pchar;stdcall;export;
C'est le nom de la nième entrée binaire
function stdsb(n:longint;valeur:longint):longint;stdcall;export;
fixation de la nième sortie binaire à "vrai" si valeur vaut 1, et à "faux" si valeur vaut zéro ; si tout s'est bien passé, elle renvoie valeur
function stdnsb(n:longint):pchar;stdcall;export;
nom de la nième sortie binaire.
function stdtitre : pchar;stdcall;export;
renvoie le titre de la DLL, que l'on pourra utiliser dans des boites de dialogue.
function stddetail : pchar ;stdcall;export;
renvoie le nom détaillé de la DLL, avec par exemple le nom de l'auteur, la date de révision, etc.
Fonctions moins importantes, facultatives, pour quelques emplois particuliers
Certains appareils nécessitent une « calibration » (aussi appelée « étalonnage »). C'est le cas des spectrophotomètres, où il faut régler le « blanc » ; c'est aussi le cas des pHmètres ou des oxymètres, où l'on doit souvent régler le zéro et la pente.
On peut utiliser des fonctions de calibration, permettant par exemple d'ouvrir une boite de dialogue permettant de saisir des valeurs, ou bien de calculer automatiquement ces valeurs dans certaines circonstances.
Fonction de calibration « simple », sans paramètres : cal
procedure cal;export;cdecl;export ;
begin
InputQuery('Calibration', 'Mettez l''appareil au zéro', chreglage) ;
end;
Cette fonction sans paramètres n'a donc pas de problème entre stdcall et cdecl, ni avec des paramètres de type entier ou de type double. Elle est donc très facile à utiliser.
Une bibliothèque dynamique appelant des boites de dialogue est plus grosse que celles qui n'en contiennent pas. A titre d'exemple, en Delphi 5, une DLL simple fait environ 30 ko, alors qu'une DLL avec une boite de dialogue fait 250 ko.
Ancienne fonction calibration, avec des paramètres de type chaîne de caractères
function stdcalibration(pch:pchar) : pchar ;stdcall;export;
Cette fonction provoque l'ouverture d'une boite de dialogue qui permet d'afficher et de faire les réglages. Dans la pratique, le contenu de la chaîne en paramètre n'a aucune importance : ce sont les boites de dialogue qui auront de l'importance, en modifiant les valeurs de certaines variables de la bibliothèque dynamique.
Les mêmes fonctions, avec d'autres types de paramètres, pour d'autres logiciels
Les fonctions précédentes suffisent pour les langages de programmation « normaux », mais certains logiciels peuvent utiliser des bibliothèques dynamiques à condition qu'elles aient une forme spécifique : paramètres uniquement de type « double », ou paramètres passés par référence au lieu d'être passés par valeur, paramètres uniquement de type numérique, sans possibilité de chaînes de caractères.... Ces logiciels sont parfois intéressants, et il serait dommage de ne pas pouvoir les utiliser. C'est pourquoi on peut faire des fonctions supplémentaires.
Certains langages de programmation exigent des bibliothèques dynamiques avec une ou quelques fonctions particulières. Le cas le plus fréquent est la nécessité d'une variable pointant vers une procédure déclenchée par le point d'entrée dans la bibliothèque dynamique (quand le programme charge la bibliothèque pour la première fois, ou bien quand le programme libère la bibliothèque...).
Le plus important est de faire le pilote pour les fonctions fondamentales (ea, nea, ead, nead, sa, nsa, sad, nsad, eb, neb, sb, nsb, detail, titre). Ensuite, il suffit de faire un copier/coller pour ces fonctions supplémentaires à partir des pilotes de démonstration disponibles en Basic (FreeBasic et PureBasic), Pascal (Delphi, FreePascal et Lazarus) ou en C/C++.
Ces logiciels peuvent avoir des exigences variées : paramètres avec des valeurs uniquement entières, ou uniquement réelles, ou uniquement de type « chaîne de caractères », ou paramètres de sortie transmis par référence (par variable)...
fonctions numériques dont tous les paramètres sont de type « double » : suffixe « double » au lieu de d
Utiles par exemple pour LibreOffice
Fonctions numériques dont tous les paramètres sont de type « chaîne » : suffixe « str »
Pour FNXBasic
Fonctions numériques dont un paramètre d'entrée est passé par référence : suffixe « ref »
Ces fonctions sont utiles pour le logiciel R, ainsi que pour Scilab.
Fonctions de nommage renvoyant le code ascii d'un caractère : suffixe « num »
Ces fonctions sont utiles pour le langage Go (Golang), Pari/GP et Freemat.
Fonctions numérique réelles renvoyant le code ascii d'un caractère de la chaîne de nombre : suffixe « numstrnum »
Procédure déclenchée par le point d'entrée dans une bibliothèque dynamique
Certains logiciels (PowerBasic) exigent que les bibliothèques dynamiques aient une procédure ou une fonction déclenchée au chargement de la bibliothèque, et éventuellement au déchargement. Dans la pratique, ces procédures ou fonctions n'ont pas d'utilité évidente.
Dernière modification le 10/03/2018