Sommaire | cliquez ici si le menu est absent | Sommaire |
---|
Selon vos centres d'intérêt, vous pouver récupérer la version DOS, ou la version Linux, pour le DS1621, ou pour le DS75 :
Téléchargement | Version DOS : | Version Linux : |
---|---|---|
Pour le DS75 : |
DS75dos.ZIP v1.0 (14 ko) |
DS75lin.ZIP
v2.0 (24 ko), avec sources |
Pour le DS1621 : |
DS1621dos.ZIP v1.0 (15 ko) |
DS1621lin.ZIP
v2.0 (32 ko), avec sources |
Les quatre exécutables ont la même syntaxe
et la même fonction, c'est-à-dire l'affichage de la
température (en continu, ou bien une seule mesure), avec
la possibilité de masquer les messages complémentaires
(option -d), d'afficher en degrés Fareneit (option -f),
d'afficher l'état des trois entrées du port série
et notamment T(out) (inactif avec l'option -i). Vous devez obligatoirement
fournir comme paramètres le port série actif, COM1 à
COM4, sur lequel est branchée l'interface, ainsi que le numéro
attribué à la sonde DS75, S0 à S7 (défini par
l'état des entrées A0, A1 et A2).
Syntaxe de la commande "lireds75" : |
---|
Syntaxe : lireds75 COMx Sx [-i] [-f] [-m] [-d] [-h] avec : COMx = Choix du port série accueillant l'interface valeurs possibles : COM1, COM2, COM3, ou COM4. Sx = Numéro de la sonde (selon les broches A0/A1/A2) valeurs possibles : S0, S1, S2, S3, S4, S5, S6 ou S7. options : -i = Masquer l'affichage des entrées. -f = Afficher la température en degrés Fareneit. -m = Faire une seule mesure, et quitter. -d = Affichage discret, supprime tous les messages sauf T. -h = Afficher cette page d'aide (syntaxe du programme). |
Syntaxe de la commande "lire1621" : |
---|
Syntaxe : lire1621 COMx Sx [-i] [-f] [-m] [-d] [-r] [-h] avec : COMx = Choix du port série accueillant l'interface valeurs possibles : COM1, COM2, COM3, ou COM4. Sx = Numéro de la sonde (selon les broches A0/A1/A2) valeurs possibles : S0, S1, S2, S3, S4, S5, S6 ou S7. options : -i = Masquer l'affichage des entrées. -f = Afficher la température en degrés Fareneit. -m = Faire une seule mesure, et quitter. -d = Affichage discret, supprime tous les messages sauf T. -r = Mesurer avec la résolution standard faible de 0.5°C. -h = Afficher cette page d'aide (syntaxe du programme). |
Le programme "lire1621" possède une option supplémentaire, la commande "-r" qui permet un fonctionnement avec la résolution standard (par pas de 0,5°) ; le programme utilise par défaut un algorithme qui permet d'augmenter notablement cette résolution (au-delà du dixième de degré).
Copie d'écran de "lireds75" sous DOS, avec différents paramètres :
C:\>lireds75 com2 s6 Configuration : port série COM2 (adresse $2F8) / sonde n°6. Pour interrompre les mesures, appuyez sur la touche [Ctrl]... Initialisation... T = 27.1875°C / Entrées : T(out)=1 Ring=0 DCD=0 T = 26.8750°C / Entrées : T(out)=1 Ring=0 DCD=0 T = 26.9375°C / Entrées : T(out)=1 Ring=0 DCD=0 T = 26.9375°C / Entrées : T(out)=1 Ring=0 DCD=0 fin des mesures... C:\>lireds75 com2 s6 -f -d -i -m T = 81.5000°F C:\>_ |
La sonde porte le numéro 6 (A0="0", A1="1", A2="1"), et l'interface est connectée sur le port COM2 ; le programme est lancé deux fois :
La première fois, avec les options par défaut (affichage des entrées, T en degrés Celcius, avec les messages d'information, en mode "mesure en continu"). L'utilisateur interrompt manuellement le cycle des mesures par un appui prolongé sur la touche [Ctrl] (droite ou gauche).
La seconde fois, seule la température est affichée, en degrés Fareneit, et le programme rend la main après l'unique mesure.
Sous Linux, le fonctionnement est identique, mais l'utilisateur doit être logué en tant que "root" (mais une solution existe, voir plus loin) ; je précise que ma distribution est une Mandrake 9.2 ; voici le résultat en mode "console" :
[col2000@localhost sources]$ su Password: [root@localhost sources]# ./lireds75 com2 s6 Configuration : port série COM2 (adresse $2F8) / sonde n°6. Pour interrompre les mesures, appuyez sur la touche [Ctrl]... Initialisation... T = 26.5625°C / Entrées : T(out)=1 Ring=0 DCD=0 T = 26.6250°C / Entrées : T(out)=1 Ring=0 DCD=0 T = 26.6875°C / Entrées : T(out)=1 Ring=0 DCD=0 T = 26.6875°C / Entrées : T(out)=1 Ring=0 DCD=0 T = 26.6875°C / Entrées : T(out)=1 Ring=0 DCD=0 T = 26.6875°C / Entrées : T(out)=1 Ring=0 DCD=0 T = 26.6875°C / Entrées : T(out)=1 Ring=0 DCD=0 fin des mesures... [root@localhost sources]# ./lireds75 com2 s6 -d -f -m -i T = 79.8125°F [root@localhost sources]# _ |
Au début, je suis logué en tant qu'utilisateur
"col2000" ; grâce à la commande Linux
"su" et avec le mot de passe adéquat (non
affiché), je me logue en superutilisateur "root" ;
je lance alors le programme ./lireds75 ;
on procèderait de même avec
./lire1621 ;
le signe "./" devant le nom du programme permet d'indiquer
au système que le fichier se trouve dans le répertoire
courant (qui ne fait pas forcément partie du "PATH"
du root).
Le comportement des versions Linux est identique à celui des
versions DOS, en fonction des paramètres.
L'archive ZIP ayant été créée sous DOS, il se peut qu'il soit nécessaire de réattribuer au fichier lireds75 ou lire1621 les droits d'exécution, avec la commande Linux suivante :
chmod 755 ./lireds75ou :
chmod 755 ./lire1621
Les fichiers sources sont fournis avec les versions Linux, car c'est dans la philosophie de ce système d'exploitation orienté "logiciel libre", mais il n'y a quasiment pas de commentaires, et je ne garantis pas qu'ils soient irréprochables car je suis débutant dans la programmation sous Linux. Vous pouvez les recompiler avec les options suivantes :
gcc -g -O3 -o lireds75 lireds75v2.cou :
gcc -g -O3 -o lire1621 lire1621v1.c
A ce propos, la communication avec la sonde nécessite le pilotage direct des sorties DTR, RTS, TxD et la lecture de CTS ; l'accès aux broches DTR, RTS et CTS ne pose pas de problème avec les fonctions classiques de Linux pour l'accès au port série...
...mais je n'ai pas trouvé le moyen de mettre à 0 ou 1 la broche TxD efficacement malgré de nombreux essais ("tcsendbreak()", et autres...), donc je me suis rabattu sur les fonctions d'entrées/sorties directe (ioperm(), inb(), outb()...), mais qui nécessitent d'être logué en tant que "root", au moins à un moment ou à un autre, ce qui est désagréable. Je lance donc un appel aux petits génies de Linux : si vous connaissez une solution plus élégante, ne manquez pas de m'en faire part !
Il est assez contrariant de devoir se loguer en tant que root pour pouvoir lancer le programme ; il existe une petite manipulation qui va permettre à chaque simple utilisateur d'avoir accès à la lecture des températures : cela consiste à activer (une fois pour toutes) le bit "SUID" de l'exécutable, et donc à donner provisoirement à l'utilisateur, au moment du lancement du programme, un droit d'accès équivalent à celui du root, bien sûr uniquement pour cette commande. Ce genre de manipulation est toujours à effectuer avec circonspection, mais on peut considérer que cela ne constitue pas un affaiblissement dans la sécurité du système, car le fichier source du programme est disponible et chacun peut constater qu'il ne contient pas de commandes pernicieuses.
Voyons ensemble pas à pas le détail des opérations et la succession des commandes Linux en mode "console" . J'ai numéroté les lignes (en bleu) pour plus de clareté dans les explications :
L01: [col2000@localhost sources]$ ls -al L02: total 372 L03: drwxrwxr-x 2 col2000 col2000 4096 jan 26 16:03 ./ L04: drwxr-xr-x 4 col2000 col2000 4096 jan 14 15:56 ../ L05: -rwxrwxrwx 1 col2000 col2000 16261 jan 22 15:12 lire1621v1.c* L06: [col2000@localhost sources]$ gcc -O3 -o lire1621 lire1621v1.c L07: [col2000@localhost sources]$ ls -al L08: total 368 L09: drwxrwxr-x 2 col2000 col2000 4096 jan 26 16:05 ./ L10: drwxr-xr-x 4 col2000 col2000 4096 jan 14 15:56 ../ L11: -rwxr-xr-x 1 col2000 col2000 25177 jan 26 16:05 lire1621* L12: -rwxrwxrwx 1 col2000 col2000 16261 jan 22 15:12 lire1621v1.c* L13: [col2000@localhost sources]$ su L14: Password: L15: [root@localhost sources]# chown root:root ./lire1621 L16: [root@localhost sources]# ls -al L17: total 368 L18: drwxrwxr-x 2 col2000 col2000 4096 jan 26 16:05 ./ L19: drwxr-xr-x 4 col2000 col2000 4096 jan 14 15:56 ../ L20: -rwxr-xr-x 1 root root 25177 jan 26 16:05 lire1621* L21: -rwxrwxrwx 1 col2000 col2000 16261 jan 22 15:12 lire1621v1.c* L22: [root@localhost sources]# chmod 4755 ./lire1621 L23: [root@localhost sources]# ls -al L24: total 368 L25: drwxrwxr-x 2 col2000 col2000 4096 jan 26 16:05 ./ L26: drwxr-xr-x 4 col2000 col2000 4096 jan 14 15:56 ../ L27: -rwsr-xr-x 1 root root 25177 jan 26 16:05 lire1621* L28: -rwxrwxrwx 1 col2000 col2000 16261 jan 22 15:12 lire1621v1.c* L29: [root@localhost sources]# exit L30: exit L31: [col2000@localhost sources]$ lire1621 com2 s1 -d -m -i L32: T = 25.04°C L33: [col2000@localhost sources]$ _ |
Lignes 01 à 05 : la commande "ls -al
"
permet d'afficher le contenu du répertoire "sources" (où nous
avons les pieds, et qui contient le fichier source "lire1621v1.c").
Ligne 06 : nous lançons la commande
"gcc -O3 -o lire1621 lire1621v1.c
" qui va exécuter
une compilation du fichier source et produire un exécutable "lire1621",
sans afficher de commentaire particulier. Remarque : dans les options -O3 et -o,
il s'agit de la lettre O, et non pas du chiffre zéro.
Lignes 07 à 12 : la commande "ls -al
"
permet de constater (ligne 11) l'apparition de l'exécutable "lire1621",
qui appartient au groupe et à l'utilisateur col2000, avec les droits
"-rwxr-xr-x".
Lignes 13 et 14 : la commande "su
"
(system user) permet de basculer en mode superutilisateur (root), le mot de
passe du root est alors nécessaire, il n'est pas affiché lors
de la frappe.
Ligne 15 : l'aspect du prompt (en jaune) a changé, ce qui
indique que l'on est en mode superutilisateur "root" ; la
commande "chown root:root ./lire1621
" va
changer le propriétaire du fichier exécutable (groupe, et
utilisateur) ; le nouveau propriétaire est le root (au fait,
"chown" = change owner = changer le
propriétaire ?).
Lignes 16 à 21 : la commande "ls -al
"
permet de constater (ligne 20) que le nouveau propriétaire de
l'exécutable est bien le root, et non plus col2000.
Ligne 22 : la commande "chmod 4755 ./lire1621
"
permet de modifier les droits d'accès au fichier exécutable,
avec comme paramètre 4755 :
Lignes 23 à 28 : la commande "ls -al
"
permet d'afficher les nouveaux droits de l'exécutable (ligne 27). Ils
sont passés de "-rwxr-xr-x" à "-rwsr-xr-x",
l'apparition du "s" confirme l'activation du bit Set-User-ID.
Lignes 29 et 30 : la commande "exit
"
permet de quitter le mode superutilisateur, et de rendre la main à
l'utilisateur col2000.
Lignes 31 et 32 : le retour à l'aspect habituel du prompt (en jaune) indique que l'utilisateur est bien col2000. On lance alors le programme (ici, le port est le COM2 qui correspond à /dev/ttyS1 sous Linux, la sonde porte le numéro 1, lancement pour une mesure unique, avec affichage de la température seule). La température lue s'affiche ligne 32.
Ligne 33 : le prompt est disponible pour une nouvelle commande...
On utiliserait exactement la même méthode pour le fichier "lireds75". Remarque : si vous vous loguez en tant que root avant de procéder à la compilation du fichier source, l'exécutable obtenu appartient au root ; il n'est pas alors nécessaire de changer le propriétaire, et la ligne 15 (commande "chown") devient inutile.
Voilà pour aujourd'hui ; n'hésitez pas à me faire parvenir vos propres programmes, notamment sous Linux...
Dernière mise à jour : le 26 janvier 2004.
Sommaire | cliquez ici si le menu est absent | Sommaire |
---|