Page suivantePage pr�c�denteTable des mati�res

13. Quelques applications int�ressantes

13.1 Un num�roteur

Cette id�e va faire plaisir � Xavier CAZIN : c'est la sienne. Le mieux est de le laisser parler :

En fait, je trouverais tr�s utile de cliquer sur un bouton pour appeler une personne retrouv�e dans une base de donn�es par exemple. Surtout si elle se trouve � l'�tranger (minimum 12 chiffres depuis ici). Donc, ce que j'aimerais, ce sont les renseignements n�cessaires au programmeur pour pouvoir construire un frontal qui demande au modem de composer le num�ro choisi, puis affiche un message (si le poste n'est pas occup�) du style "Le t�l�phone sonne, prenez le combin�". Ces petites choses toutes simples demandent de comprendre ce que signifie prendre la ligne et la rel�cher, pour un modem.

Excellent exercice. Alors avec tout ce que l'on vient de dire, au travail :-). En laissant de c�t� la partie base de donn�es, l'algorithme � utiliser correspond � l'organigramme d'un appel donn� � titre d'information au chapitre Le modem, auquel il faut rajouter :

Par contre les messages NO DIALTONE (modem pas branch�), et BUSY sont fort int�ressants et permettent d'informer l'utilisateur imm�diatement.

13.2 modemstat et compagnie

Vous trouverez sur les serveurs ftp habituels quelques petits programmes permettant d'afficher l'�tat de la jonction. Vous pourrez vous int�resser particuli�rement � la fa�on de r�cup�rer les informations (plut�t que sur l'interface utilisateur qui est l'exemple m�me de ce qu'il ne faut pas faire).

/pub/linux/sunsite/system/Serial/modem-stats-1.0.tar.gz
/pub/linux/sunsite/system/Serial/statserial-1.1.tar.gz
/pub/linux/sunsite/system/Serial/modemstat-0.2.tgz

Un bon point pour statserial aussi simple que bien pr�sent�, en mode texte.

13.3 Un d�tecteur de signal 109 (CD)

Lu dans comp.os.linux.development.apps cette demande

Existe-t-il un utilitaire que je pourrais utiliser dans un shell-script et retournant une valeur, disons 1, si le signal D�tection de porteuse est mont� et 0 sinon ?

Le message ne dit pas quel en serait l'usage mais peu importe c'est un excellent exemple d'utilitaire assez facile � r�aliser. Voici d'ailleurs un exemple de code source possible :


------------------------- debut de carrier.c -------------------------
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <termios.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <stdio.h>
main(int argc, char *argv[])
{
 char *whoami, *device;
 int fd;
 int modem_bits;
 whoami = (whoami = strrchr(argv[0], '/')) ? whoami + 1 : argv[0];
 if (argc != 2) {
 fprintf(stderr, "Usage: %s device-file\n", whoami);
 return(EXIT_FAILURE);
 }
 device = argv[1];
 if ((fd = open(device, O_RDONLY | O_NDELAY)) < 0) {
 fprintf(stderr, "%s: error opening \"%s\": %s\n", whoami, device,
 strerror(errno));
 return(EXIT_FAILURE);
 }
 if (ioctl(fd, TIOCMGET, & modem_bits) < 0) {
 fprintf(stderr, "%s: error getting modem line statuses for \"%s\": %s\n",
 whoami, device, strerror(errno));
 return(EXIT_FAILURE);
 }
 if (modem_bits & TIOCM_CAR) {
 printf("1\n");
 return(EXIT_SUCCESS);
 }
 printf("0\n");
 return(EXIT_FAILURE);
}
------------------------- fin de carrier.c -------------------------

On pourra ensuite l'utiliser dans un shell de la mani�re suivante :


if [ `carrier /dev/modem` -eq 1 ]; then
 ... choses a faire si la porteuse est detectee ...
else
 ... choses a faire s'il n'y a pas de porteuse ...
fi


Page suivantePage pr�c�denteTable des mati�res

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:31