IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Comment faire pour connaitre la fin d'une commande ANSI VT100 ?


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 855
    Par défaut Comment faire pour connaitre la fin d'une commande ANSI VT100 ?
    Bonjour,

    Je suis entrain de bosser sur une console en VT100.
    Toutes les commandes spéciale commence donc par le caractère '\033'.

    Comment faire pour connaitre la fin de la commande car le nombre de caractères après le caractère d'échappement ('\033') n'est pas fixe et le dernier caractère n'a pas toujours la même valeur.
    => je pose cette question car je veux supprimer ces commandes de ma chaine de réception

  2. #2
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Il n'y a pas de caractère fin de commande comme tu l'as toi-même remarqué. Si tu veux créer une fonction void RemoveAnsiSequences(char * text), il n'y a pas d'autre moyen que de connaître la syntaxe de chaque commande, de parcourir la chaîne et d supprimer tout ce qui est reconnue comme commande valide.

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 855
    Par défaut
    Citation Envoyé par Melem Voir le message
    Il n'y a pas de caractère fin de commande comme tu l'as toi-même remarqué. Si tu veux créer une fonction void RemoveAnsiSequences(char * text), il n'y a pas d'autre moyen que de connaître la syntaxe de chaque commande, de parcourir la chaîne et d supprimer tout ce qui est reconnue comme commande valide.
    arf, c'est vraiment mal foutu.
    En plus j'ai l'impression que par exemple une console TELNET sous Linux ne gère pas les mêmes commandes spéciales que sous windows => il existe une lsite exhaustive de toutes les commandes à quelque part (je n'ai pas trouvé) ? ... lire les normes c'est un peu galère, il y en a 50 pour définir le TELNET (et les commandes spéciales ne sont même pas réunie dans une)

  4. #4
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    existe t-il une liste exhaustive de toutes les commandes à quelque part (je n'ai pas trouvé) ?
    http://ascii-table.com/ansi-escape-sequences.php

  5. #5
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Citation Envoyé par boboss123 Voir le message
    arf, c'est vraiment mal foutu.
    Tu as conscience que c'est un standard âgé de TRENTE ET UN ANS ? Qu'il était conçu pour des terminaux reliés par liaisons RS-232, qui ne dépassaient sûrement pas 1200 bauds à l'époque, d'où une nécessité de transmettre le moins d'octets possibles ?

    Faut pas s'étonner de limites apparemment incompréhensibles lorsque l'on utilise un truc aussi vieux, il suffit de se remettre dans le contexte...
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 855
    Par défaut
    C'est pas parce que c'est vieux que ce n'est plus utilisé ... les consoles TELNET l'utilisent donc je suppose que le SSH (qu'on voit de partout) aussi, non ? Est-ce que le SSH, c'est juste du TELNET avec une couche d'encryptage par dessus ou c'est plus compliqué que ça ?


    Merci pour le lien Melen (il y a des commandes que je ne connaissais pas et qui sont très intéressantes.... mais qu'elle idée d'avoir inventé le "Set Keyboard Strings" => c'est la galère à gérer ... si je croise celui qui l'a inventé, je lui casse les dents lol), mais il n'y a apparemment pas toutes les commandes pour le TELNET (il y en a que j'utilise et qui n'y sont pas) ... mais j'avoue que c'est un peu confu dans ma tête, j'ai l'impression qu'il faut différencier les commandes spéciales en deux types : les commandes TELNET et les commandes VT100 => ça doit être pour ça que dans ton lien, il n'y a pas tout ... d'ailleurs est-ce que le TELNET utilise forcement le VT100 (si ça se trouve il peut utiliser autre chose aussi) ?

    Et le pire dans tout ça, c'est que les consoles TELNET ne fonctionnent pas toutes de la même façon => J'ai par exemple Putty qui interprète un "\r\0" comme un retour à la ligne alors que dans la norme il est noté qu'il devrait l'interpréter comme un "\r" (je suppose donc que ça doit être Micro$oft qui a du pondre la norme ...). Il y a aussi le positionnement des curseurs en fin de ligne qui est différent entre console TELNET windows et Putty (il y a l'un des deux qui positionne le curseur à la fin de la ligne alors que l'autre le positionne au debut de la ligne suivante) ... c'est vraiment galère à tout gérer ... sans parler de la compatibilité avec HyperTerminal (alors là, c'est le fin du fin lol)

    => d'ailleurs vous savez si c'est possible d'identifier le type du terminal distant utilisé je suis preneur...

  7. #7
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    une remarque en passant :

    Les terminaux VT100, puis VT220, ont été les PREMIERS terminaux graphiques (avec les Tektronix à balayage)

    Comme le dit Mac Lak, avant de critiquer et de les prendre pour des fous/c.ns, etc, se renseigner..


    Ces terminaux permettaient de faire des lignes (verticales, horizontales, en diagonale) pour faire des menus, des highlights, quelques graphiques (même assez poussés).

    Ce sont les premiers terminaux à adressage "pixel" (comme les Tektro)..


    C'est bien la raison pour laquelle un certain nombre sont toujours en activité, et le standard est toujours d'actualité pour certaines choses..

    Maintenant, telnet est venu en //.. et ce que tu considères comme "naturel", que ce soit le Web ou les terminaux graphiques et le fait de pouvoir faire des IHM N'EXISTAIT PAS tout simplement...

    Les programmes étaient en lignes de commandes uniquement, et les "menus", "choix", "pages", "IHM", sont justement apparus grâce aux capacités de ces terminaux...

    J'ai des programmes graphiques (par exemple surveillance de charge d'ordi ou de réseaux, ou des programmes de DAO) de 1982 à 1987, fonctionnant comme cela, et c'était la pointe de la technologie..

    Alors un peu de retenue et de respect, SVP...



    Ce que tu prends pour acquis avec ton écran que tu allumes et qui t'affiche des icônes et de permet de cliquer, et d'avoir une fenêtre, c'est "très" récent.. Moins de 20 ans...

  8. #8
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Citation Envoyé par boboss123 Voir le message
    C'est pas parce que c'est vieux que ce n'est plus utilisé ... les console TELNET l'utilise donc je suppose que le SSH (qu'on voit de partout) aussi, non ? Est-ce que le SSH, c'est juste du TELNET avec une couche d'encryptage par dessus ou c'est plus compliquer que ça ?
    Ne confonds pas Telnet et commandes VT100 : ce sont deux choses aussi différentes que peuvent l'être TCP/IP et les balises HTML.

    Telnet, c'est un protocole plutôt simple (et finalement pas si mal fait que ça d'ailleurs), rapide à implémenter et qui se contrefiche de savoir si tu es en 150 colonnes par 50 lignes ou sur du 80x25. Tu peux avoir du VT100 sans Telnet, et du Telnet sans VT100.

    Citation Envoyé par boboss123 Voir le message
    Et le pire dans tout ça, c'est que les consoles TELNET ne fonctionnent pas toutes de la même façon
    Sauf que ce n'est pas au serveur de s'adapter, mais au client... A toi de respecter un standard, et de configurer ensuite les clients pour qu'ils s'adaptent au standard du serveur.

    Citation Envoyé par boboss123 Voir le message
    => d'ailleurs vous savez si c'est possible d'identifier le type du terminal distant utilisé je suis preneur...
    A part utiliser une commande particulière supportée par le client et très certainement spécifique au client, cela m'étonnerait beaucoup... Et je n'en vois d'ailleurs pas vraiment l'intérêt : comme je te l'ai dit, c'est au client de s'adapter aux standards utilisés par le serveur, pas le contraire.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Php, je ne comprends pas comment faire pour introduire des données dans une table
    Par Liondd dans le forum PHP & Base de données
    Réponses: 23
    Dernier message: 14/12/2006, 12h53
  2. Réponses: 1
    Dernier message: 05/10/2006, 17h21
  3. [VB6] Comment faire pour limiter l'utilisation d'une application
    Par Lucas42 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 15/06/2006, 08h43
  4. Réponses: 2
    Dernier message: 09/06/2006, 14h49
  5. [VB6]Comment faire pour que le caption d'une ARProgressBar..
    Par MegaBigBoss dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 02/04/2006, 20h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo