Brevet FR2682549A1 — publié le 19930416

La présente invention concerne d'une façon générale les modems intelligents pour transmission de données numériques sur ligne téléphonique entre ordinateurs. Elle concerne plus précisément un nouveau procédé de détection d'une séquence dite d'échappement pour faire passer un modem d'un mode de transmission de données à un mode de commande. Un modem présente classiquement deux modes de fonctionnement. Dans un mode dit "en ligne", le circuit modulateur-démodulateur est activé pour émettre sur la ligne téléphonique des signaux modulés correspondant aux données numériques à envoyer à un ordinateur distant, et pour recevoir à partir de la ligne des signaux modulés par l'ordinateur distant et les convertir en signaux numériques pour l'ordinateur local. Dans un mode dit "commande", la liaison entre l'ordinateur local et le modem est utilisée pour véhiculer des instructions relatives par exemple au mode de fonctionnement du modem (débit de transfert des informations, etc...) ou encore à la signalisation sur la ligne téléphonique (numérotation, décrochage, raccrochage, etc...), le circuit modulateur/démodulateur étant alors inactif. On comprend que, pendant que le modem est "en ligne" et émet des données, il existe une difficulté pour le faire passer en mode "commande" car le modem considère alors a priori que toute donnée provenant de l'ordinateur hôte est une donnée à transmettre sur la ligne téléphonique. On connaît déjà dans la technique antérieure, par le brevet US-A-4 549 302, un mécanisme de reconnaissance d'une séquence d'échappement selon lequel, pour faire passer le modem du mode "en ligne" au mode "commande", l'ordinateur hôte envoie au modem, par exemple à la fin d'un ensemble de données à émettre, une séquence constituée d'une première période de silence de durée prédéterminée, d'un ou plusieurs caractères dits d'échappement (en pratique, selon un standard courant, il s'agit d'une sucession de trois signes "+" exprimés en code standard ASCII et notée par la suite "+++"), et d'une seconde période de silence prédéterminée. Le modem comporte des moyens logiques et de temporisation appropriés pour surveiller dans le flot de données l'apparition d'une telle séquence.En principe, lorsque cette séquence est détectée, le modem renvoie à l'ordinateur hôte un signal d'accusé de réception, noté "OK", qui permet audit ordinateur de s'assurer que le modem est bien passé en mode "commande". Ensuite, l'ordinateur peut envoyer au modem des instructions qui, dans le standard précité, peuvent prendre la forme suivante: ATxxx...xxx où: AT désigne soit la succession des caractères "A" et "T" du code ASCII, soit les mêmes caractères en minuscules, xxx.. xxx est le libellé d'une instruction, faisant partie d'un jeu d'instructions standard et dont la longueur maximale est par exemple de 40 caractères, et désigne le code de "retour chariot" du code ASCII. Un inconvénient majeur de ce mode de gestion des échappements connu réside en ce qu'il nécessite, soit sous forme matérielle, soit sous forme logicielle, des moyens de temporisation destinés à reconnaftre les périodes de silence sus-mentionnées. Par ailleurs, la Demanderesse a constaté que, dans la plupart des logiciels de communication mis en oeuvre sur ordinateur hôte pour coopérer avec un modem, la réception du signal d'accusé de réception "OK mentionné plus haut n'était pas vérifiée par le logiciel. La présente invention vise à tirer parti de cette constatation pour pallier l'inconvénient précité, tout en restant parfaitement compatible avec les séquences d'échappement et formats d'instructions classiquement utilisés. Elle concerne à cet effet un procédé de détection d'une séquence d'échappement pour faire passer un modem d'un mode de transmission de données, dans lequel un flot de données numériques est susceptible d'être fourni au modem à partir d'un ordinateur hôte associé ou analogue, modulé par le modem et émis sur une ligne téléphonique ou analogue, à un mode de commande dans lequel le modem peut recevoir des instructions de commande dudit ordinateur hôte sans les moduler ni les émettre sur ladite ligne, ladite séquence d'échappement comprenant un premier ensemble prédéterminé de caractères notZent suivi par une période de silence de durée prédéterminée, et chaque instruction de commande étant précédée par un second ensemble prédéterminé de caractères, caractérisé en ce qu'il comprend les étapes itératives consistant à:: (a) stocker temporairement dans une mémoire, en succession mais sans tenir compte du temps, les M derniers caractères reçus par le modem à partir de l'ordinateur hôte, M étant un premier nombre prédéterminé, (b) détecter si ladite mémoire contient de façon contigue ledit premier ensemble prédéterminé de caractères et ledit second ensemble prédéterminé de caractères, (c) dans la négative, laisser le modem dans le mode de transmission de données, (d) dans l'affirmative, détecter si, dans les N caractères qui suivent lesdits premier et second ensembles prédéterminés de caractères contigus, se trouve un code de fin d'instruction, N étant un second nombre prédéterminé inférieur au premier, (e) dans la négative, laisser le modem dans le mode de transmission de données, (f) dans l'affirmative, autoriser le passage du modem du mode de transmission de données au mode de commande. D'autres aspects, buts et avantages de la présente invention apparaîtront mieux à la lecture de la description détaillée suivante d'une forme de réalisation préférée de celle-ci, donnée à titre d'exemple non limitatif et faite en référence au dessin annexé, sur lesquels: - la figure 1 est un schéma-bloc d'un modem et d'un ordinateur hôte associé, le modem étant réalisé selon les principes de la présente invention, et - la figure 2 est un organigramme d'un mécanisme de détection de séquence d'échappement selon l'invention. En référence tout d'abord à la figure 1, le modem intelligent selon la présente invention est désigné globalement par la référence 1. I1 comprend un microprocesseur ou microcontrôleur 10, une mémoire morte 12 contenant un programme régissant le fonctionnement du microprocesseur, une mémoire vive 14 dont la totalité ou une partie constitue une mémoire tampon de M caractères pour les données numériques à émettre, avant modulation, et pour les données numériques reçues, après démodulation. La référence 18 désigne un circuit modulateur-démodulateur classique en soi, relié à une ligne téléphonique LT. Une ligne bidirectionnelle 16 relie le modem 1 à un ordinateur hôte 2 qui comprend classiquement une unité centrale de traitement 20, un port d'entrée sortie 22 et des mémoires et dispositifs annexes classiques que l'on ne décrira pas en détail afin d'éviter d'alourdir la description. Lorsque le modem est en mode "en ligne", les informations numériques à émettre sur la ligne téléphonique LT à destination d'un appareil relié à l'autre bout de la ligne sont mémorisées temporairement dans la mémoire tampon 14 et modulées dans le circuit 18. De façon classique en soi, le passage du modem du mode "en ligne" au mode "commande" doit s'effectuer lorsque le modem constate la présence, dans le flot de données numériques à transmettre, d'informations particulières insérées par l'ordinateur hôte et organisées de la façon suivante: +++ (1) où : désigne une première période de silence de durée prédéterminée, désigne une seconde période de silence de durée prédéterminée, et +++ désigne cette chaîne de caractères même (caractères dits d'échappement) au format standard "ASCII". Après l'envoi de cette séquence, l'ordinateur hôte, et plus précisément le logiciel de communication qui y est installé, considère que le modem est passé en mode "commande", et que les informations qui lui seront alors envoyés seront traitées comme des instructions de commande. Ces instructions prennent classiquement la forme: ATxxx.. .xxx (2) où: AT désigne soit la succession des caractères "A" et "T" du code ASCII, soit les mêmes caractères en minuscules, xxx.. xxx est le libellé d'une instruction, faisant partie d'un jeu d'instructions standard et dont la longueur maximale est par exemple de 40 caractères, et désigne le code de "retour chariot" ("Carriage Return") du code ASCII. Les périodes de silence T1 et T2 ont originellement pour objet d'éviter que le modem ne passe du mode "en ligne" au mode "commande" lorsque le flot de données à émettre contient fortuitement la séquence de caractères ASCII "+++". Ainsi, dans la technique antérieure, lorsqu'une telle séquence est détectée sans que ne soient détectées en amont et en aval, à l'aide de moyens de temporisation appropriés, les périodes de silence, alors le modem sait qu'il doit rester en mode "en ligne11. Le modem selon la présente invention ne comporte aucun moyen spécifique de détection ou de mesure des périodes de silence précitées, que ce soit sous forme matérielle ou sous forme logicielle, et est toutefois capable d'effectuer avec une fiabilité élevée la distinction entre la séquence indiquée plus haut en (1) et une séquence +++ contenue fortuitement dans le flot de données pendant que le modem est "en ligne. Selon un aspect essentiel de l'invention, le modem comporte une logique de détection d'une séquence +++AT, indépendamment de son organisation temporelle, conjointement avec une logique de scrutation d'un ensemble déterminé de caractères ASCII qui font suite à une telle séquence. Plus précisément, et maintenant en référence à la figure 2, le microprocesseur stocke de façon séquentielle les données reçues de l'ordinateur hôte dans la mémoire tampon 14 (étape 100), puis examine le contenu de la mémoire tampon de façon périodique (à chaque mise à jour de son contenu), selon le processus suivant:: (a) tant qu'aucune séquence ininterrompue +++AT n'est détectée, le modem reste en mode "en ligne" et continue à moduler et à émettre sur la ligne LT les données arrivant de l'ordinateur 2 et transitant par la mémoire 14 (étape 101); (b) dès qu'une séquence +++AT est reconnue, la logique du modem scrute alors les N caractères (N étant un nombre entier fixe et prédéterminé inférieur à la capacité M en caractères de la mémoire tampon et supérieur à la longueur maximale de la chaîne de caractères xxx...xxx d'une instruction) qui suivent cette séquence (étape 102) de la façon suivante (étape 103):: (bl) si, dans les N caractères, on ne trouve aucun code de retour chariot , alors le modem reste là encore en mode "en ligne", et attend maintenant l'apparition d'une nouvelle séquence +++AT; (b2) si, dans les N caractères précités, on trouve un code , alors le modem considère que l'ordinateur hôte lui a envoyé une séquence d'échappement, et le modem passe alors immédiatement en mode "commande" (étape 104). Les étapes ci-dessus permettent d'assurer avec une très bonne fiabilité la dinstinction entre une véritable séquence d'échappement d'une part, et une séquence +++, ou même une séquence +++AT d'autre part, contenue fortuitement dans un flot de données. Plus particulièrement, si une séquence +++ apparaît, le modem vérifie tout d'abord si cette séquence est suivie d'une séquence "AT". On note déjà que la probabilité de trouver fortuitement dans le flot de données une telle séquence globale +++AT est considérablement inférieure à la probabilité de trouver dans ce flot une séquence +++. De plus, pour qu'une séquence +++AT détectée corresponde réellement à un ordre de passage en mode commande, il est indispensable qu'un caractère (voir plus haut séquence (2)) se trouve dans les N caractères qui suivent cette séquence. Et la probabilité de trouver fortuitement dans le flot de données une séquence complète +++ATxxx...xxx est encore très inférieure à la probabilité d'y trouver une séquence +++AT, et s'avère dans la pratique tout à fait acceptable. Le choix du nombre N s'effectue comme on l'a indiqué en fonction de la longueur des instructions de commande du modem, c'est-à-dire la longueur de la chaîne xxx...xxx mentionnée plus haut. Pour un certain jeu d'instructions standard, la longueur maximale autorisée pour ces instructions est de 40 caractères, si bien que l'on peut fixer N = 41. Cependant, on a constaté concrètement que, dans ce même jeu standard, la longueur maximale effective des instructions admises était de 13 caractères. Dans ces conditions, et afin de diminuer encore la possibilité que des données à émettre par le modem contiennent fortuitement une séquence susceptible de faire passer indésirablement le modem en mode "commande", on peut choisir N égal à 14 ou légèrement supérieur à ce nombre. On constate qu'avec le mécanisme de détection de la présente invention, contrairement au mécanisme de détection de l'art antérieur, le modem est amené en mode "commande" seulement après réception du code qui fait suite à l'instruction ATxxx. . xxx proprement-dite. Mais grâce à la mémoire tampon 14, ladite instruction reste accessible pour son exécution après le passage en mode "commande". Pour améliorer encore la fiabilité de la discrimination entre une séquence fortuite +++ATxxx. . .xxx et une véritable séquence d'échappement, le logiciel résidant dans le modem peut comprendre optionnellement un module d'analyse syntaxique des caractères xxx.. xxx pour vérifier s'il s'agit ou non d'une instruction d'un jeu standard d'instructions de commande du modem. Dans l'affirmative, la séquence est validée comme une séquence d'échappement, puis l'instruction xxx...xxx déjà contenue dans la mémoire tampon est exécutée. Dans la négative, le modem reste "en ligne" et transmet simplement cette séquence sur la ligne téléphonique après modulation. Une telle analyse syntaxique ne sera pas décrite en détail afin d'éviter d'alourdir la description. Elle peut s'inspirer largement des analyses syntaxiques effectuées par des interpréteurs ou compilateurs associés aux langages de programmation courants. Par ailleurs, il existe certains logiciels de communication qui envoient au modem un code entre la chaîne +++ et la chaîne ATxxx...xxx. Pour couvrir également ce cas de figure, la logique du modem est avantageusement conçue pour que l'étape (a) mentionnée plus haut devienne l'étape (a') suivante: (a') tant qu'aucune séquence ininterrompue +++AT ou +++ AT n'est détectée, le modem reste en mode "en ligne" et continue à moduler et à émettre sur la ligne LT les données arrivant de l'ordinateur 2 et transitant par la mémoire 14. Bien entendu, la présente invention n'est nullement limitée à la forme de réalisation décrite cidessus et représentée sur les dessins, mais l'homme de l'art saura y apporter toute variante ou modification conforme à son esprit. REVENDICATIONS 1. Procédé de détection d'une séquence d'échappement pour faire passer un modem (1) d'un mode de transmission de données, dans lequel un flot de données numériques est susceptible d'être fourni au modem à partir d'un ordinateur hôte associé (2) ou analogue, modulé par le modem et émis sur une ligne téléphonique (LT) ou analogue, à un mode de commande dans lequel le modem peut recevoir des instructions de commande dudit ordinateur hôte sans les moduler ni les émettre sur ladite ligne, ladite séquence d'échappement comprenant un premier ensemble prédéterminé de caractères ("+++") no- tnzEnt suivi par une période de silence ( ) de durée prédéterminée, et chaque instruction de commande ("xxx...xxx") étant précédée par un second ensemble prédéterminé de caractères ("AT"), caractérisé en ce qu'il comprend les étapes itératives consistant à: (a) stocker temporairement dans une mémoire (14), en succession mais sans tenir compte du temps, les M derniers caractères reçus par le modem à partir de l'ordinateur hôte, M étant un premier nombre prédéterminé, (b) détecter si ladite mémoire contient de façon contigue ledit premier ensemble prédéterminé de caractères et ledit second ensemble prédéterminé de caractères, (c) dans la négative, laisser le modem dans le mode de transmission de données, (d) dans l'affirmative, détecter si, dans les N caractères qui suivent lesdits premier et second ensembles prédéterminés de caractères contigus, se trouve un code de fin d'instruction ( ), N étant un second nombre prédéterminé inférieur au premier, (e) dans la négative, laisser le modem dans le mode de transmission de données, (f) dans l'affirmative, autoriser le passage du modem du mode de transmission de données au mode de commande. 2. Procédé selon la revendication 1, caractérisé en ce que le code de fin d'instruction est un code de retour chariot ( ). 3. Procédé selon l'une des revendications 1 et 2, caractérisé en ce que ledit premier ensemble prédéterminé de caractères est constitué par une séquence d'échappement standard ("+++"). 4. Procédé selon la revendication 3, caractérisé en ce que ledit second ensemble prédéterminé de caractères est constitué par une séquence de préambule d'instruction standard ("AT" ou "at"). 5. Procédé selon l'une des revendications 1 à 4, dans lequel les instructions de commande ont un nombre maximal de caractères prédéterminé, caractérisé en ce que le nombre N est supérieur d'au moins une unité audit nombre maximal de caractères. 6. Procédé selon la revendication 5, caractérisé en ce que le nombre N est égal à 14. 7. Procédé selon l'une des revendications 1 à 6, caractérisé en ce que le passage effectif du modem du mode de transmission de données au mode de commande est conditionné par une étape supplémentaire d'analyse syntaxique de la chaîne de caractères ("xxx.. xxx") contenue entre le second ensemble prédéterminé de caractères et le code de délimitation. 8. Procédé selon l'une des revendications 1 à 7, caractérisé en ce que ladite séquence d'échappement est choisie parmi ledit premier ensemble prédéterminé de caractères ("+++"), d'une part, et ledit premier ensemble prédéterminé de caractères complété par un code de fin de séquence d'échappement ("+++ ") d'autre part. 9. Procédé selon la revendication 8, caractérisé en ce que le code de fin de séquence d'échappement est un code de retour chariot ( ). 10. Modem pour ordinateur, du type comprenant un circuit modulateur/démodulateur (18), des moyens de traitement (10, 12), une mémoire tampon (14) prévue entre un port d'accès avec l'ordinateur et ledit circuit modulateur/démodulateur (18), caractérisé en ce que les moyens de traitement comprennent une mémoire (12) contenant un ensemble d'instructions pour la mise en oeuvre du procédé selon l'une des revendications précédentes.