Le matériel informatique standard est très réduit : l'unité centrale, le clavier, l'écran.
Aussi bien Matlab que Scilab sont capables de recevoir des instructions frappées au
clavier, et d'afficher le résultat de leur calcul à l'écran.
Le programme officiel de BCPST (arrêté du 8-8-2000) prévoit que "l'environnement
de programmation utilisé par les étudiants en travaux pratiques ... comprend :
- l'exécution d'un programme avec saisie de données au clavier et affichage ou
impression des résultats".
En fait, l'impression des résultats n'est pas simple, ni avec Matlab, ni avec Scilab. Il
n'y a pas d'instruction simple permettant d'envoyer les résultats d'un calcul directement
à l'imprimante. Le plus simple, apparemment, est d'envoyer ces résultats vers un
fichier-texte, puis ensuite de charger ce fichier dans un éditeur de texte capable de
l'imprimer.
Une autre possibilité est d'utiliser le fait que l'imprimante porte le nom "lpt1:" dans le
système MS-DOS-Windows.
Donc :
- en Matlab, l'instruction save 'lpt1:' A -ascii peut imprimer la matrice A
- en Scilab, l'instruction write('lpt1:',A) fait de même.
Par contre, pour les versions plus récentes de Delphi (2, 3, 4, 5, 6), le tableau
"port" n'existe pas, et il faut utiliser des fonctions spéciales en assembleur,
du type :
procedure SetPort(address,value:Word);
var bvalue:byte;
begin
bvalue:=trunc(value and 255);
asm
mov dx,address
mov AL,bvalue
out DX,AL
end;
end;
function GetPort(address:Word):Word;
var bvalue:byte;
begin
asm
mov dx,address
in aL,dx
mov bvalue,aL
end;
result:=bvalue;
end;
program fixeport;
uses dos;
var adresse, valeur,nberr:integer;
begin
val(paramstr(1),adresse,nberr);
val(paramstr(2),valeur,nberr);
port[adresse]:=valeur
end.
Ensuite, dans Matlab, sachant que numport est le numéro du port àlire, faire :
!lportmat.exe numport
A=load('lportmat.txt');
Généralisation : emploi de "pilotes faisant des fichiers"
L'exemple précédent du logiciel transfer.pas peut être généralisé : d'une part on peut
écrire de tels logiciels avec n'importe quel langage de programmation généraliste,
d'autre part on peut concevoir des pilotes permettant des échanges avec des appareils
reliés autrement que par liaison sérielle.
Divers langages pour aboutir à des pilotes
Les "vrais" langages de programmation généralistes sont certes moins puissants
mathématiquement que Matlab et Scilab, mais ils permettent de traiter des
informations beaucoup plus variées. Il est donc souhaitable de profiter de la puissance
des uns et des autres.
Pascal
Le TurboPascal 7 est disponible gratuitement en téléchargement sur le site de Borland-
France (www.borland.fr)
Pour une communication facile par RS232, le mieux est d'utiliser des unités conçues
dans ce but, disponibles dans le domaine public sur Internet.
Sur ce même site Borland, existent aussi diverses pièces de musée, en particulier le
TurboPascal 1, de 1983.
Basic
Vers 1990, Microsoft fournissait QBasic avec le système d'exploitation MS-DOS.
Il existe (ou existait il y a peu) dans un sous-répertoire des CD de Windows. Il est
téléchargeable sur le site de Microsoft, ainsi que sur d'autres sites Internet.
On peut aussi trouver sur Internet d'autres langages Basic, en particulier UBasic, ayant
une puissance mathématique impressionnante malgré son apparence désuète.
D'autres idées de pilotes, pour donner encore plus de puissance à
Matlab et Scilab
Mesure en tâche de fond, sans avoir besoin de déclenchement par Matlab ou
Scilab
On peut réaliser un programme "surveille.exe" qui scrute en permanence, par exemple
toutes les 500 millisecondes, les différentes voies de mesure, et qui sauve le résultat
dans des fichiers ea0.txt, ea1.txt, ea2.txt...
Ce même fichier scruterait l'existence et le contenu de fichiers correspondant aux
sorties logiques et analogiques sa0.txt, sa1.txt, sl0.tx, sl1.txt... et enverrait vers
l'interface les ordres correspondant.
Ainsi, Matlab et Scilab feraient leurs mesures en lisant les fichiers d'entrée
(analogique et logique), et commanderaient les actionneurs (sorties logiques et
analogiques) en écrivant les fichiers correspondant.
Voici un petit programme en QBasic permettant la mesure sur Orphy GTS lié à la voie
2. La mesure est faite sur l'entrée analogique 2 (EA2), le résultat est affiché à l'écran et
écrit dans le fichier EA2.TXT.
OPEN "com2:9600,N,8,1,RS,CS0,DS0,CD0" FOR RANDOM AS #1
WHILE INKEY$ = "":
OPEN "EA2.TXT" FOR OUTPUT AS #2
PRINT #1, "XEA 2"
INPUT #1, R%
PRINT USING "tension sur voie2 : #.## V "; R% * 5 / 255
PRINT #2, R%
CLOSE #2
WEND: REM fin de la mesure
CLOSE 1
END
Multiplicité des périphériques utilisables
De nombreux appareils de mesure sont connectables à un ordinateur ailleurs que sur
une prise RS232.
Par exemple, la Maison des Enseignants de Provence diffuse le boitier ADES,
connectable sur une prise parallèle (prise imprimante) et utilisable avec les capteurs
Calibration (oxymètre, pHmètre, etc).
La carte son comporte une prise "manettes de jeu", qui permet de mesurer facilement
des résistances (donc lumière par photorésistance, température par thermistance, etc).
Les slots (PCI ou autrefois ISA) permettent de connecter des cartes de mesure...
On peut donc faire des pilotes de type "surveille", qui échangent des données avec
Matlab et Scilab par des fichiers-textes spécialisés, et qui échangent des données avec
les appareils par leurs connecteurs spécialisés.