Précédent   Forum des professionnels en informatique > Systèmes > Linux > Système
Système Vos questions autour de l'administration système
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/12/2006, 11h17   #1
Membre Expert
 
Avatar de narmataru
 
Inscription : décembre 2002
Messages : 1 423
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : décembre 2002
Messages : 1 423
Points : 1 491
Points : 1 491
Par défaut développement d'un émulteur de terminal

Bonjour,
Je me suis mis dans la tête de développer un émulateur de terminal graphique en java (genre xterm, en surement moins complet). Cependant, mes connaissances sur le sujet sont assez basiques. Je sais qu'il existe plusieurstype de terminaux, qu'il ont chacun des codes propre pour bouger le curseur, choisir une couleur etc... ncurse sait se configurer pour s'adapter aux différents terminaux.

Par contre, comment un terminal comme xterm se connecte au système ? Comment dialogue-t-il avec ?
Quel serait le terminal a émuler pour avoir de la couleur et qui ne serait pas trop dur à émuler ?

Bref, Si j'ai mis ce post dans la sectin 'system' et non dans 'developpement' c'est que je n'ai pas besoin d'aide pour le developpement mais bel et bien sur comment fonctionne un terminal Donc si vous avez des infos je prends tout :p

ps: pour ceux que ça intéresse, je souhaite developpez un terminal en java pour pouvoir utiliser vim dans netbeans (ou eclipse). Je pense qu'il devrait suffire de faire un plugin contenant le terminal avec Vim dedans pour que se soit réalisble
__________________
Reportage d'Arte sur Linux
narmataru est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/01/2007, 19h56   #2
Nouveau Membre du Club
 
Inscription : août 2006
Messages : 33
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 33
Points : 31
Points : 31
L'émulation de terminal et ses arcanes est très bien détaillé dans le livre de Ciegelski sur la conception du système linux.
Regarde aussi termios.h et .c dans les sources du noyau.
Tio.001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2007, 02h45   #3
Membre émérite
 
Avatar de Celelibi
 
Inscription : janvier 2004
Messages : 990
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 990
Points : 822
Points : 822
Les terminaux VT100 supportent la couleur à ce que j'ai pu lire. Et je suppose qu'ils sont plus simples (moins de fonctionnalités) que leurs cousins VT101, VT102, VT220 etc...

Et comment le terminal communique avec l'application derrière, je l'ignore encore, mais je vais chercher, ça à l'air intéressant.
__________________
Les vaches ne peuvent PAS voler, quoi qu'elles aient pu vous raconter.
Celelibi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2007, 04h12   #4
Inactif
 
Avatar de Hibou57
 
Inscription : mars 2006
Messages : 852
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 852
Points : 398
Points : 398
Bonjour Marmataru

Bonjour Celelibi

Je ne sais pas si je souhaite la bonne année ou pas ... cette année j'ai même pas fêté alors...

Bon, tout d'abord avant de t'apporter ma maigre contribution, Marmataru, puis-je me m'enquérire auprés de ton esprit des raisons de étrange entreprise ?

Tu cré un nouvel OS ? Un distribution Linux ?

Ma minable contribution : pour développer un terminal, il te faut être bien documenté(e) sur le protocol (les terminaux répondent à des protocoles de communication basés sur ASCII). Les terminaux VT100 répond à un protocol librement accessible sous le nom de ECMA-48. Je ne te présente pas ECMA, ... si tu ne connais pas, Google t'en parlera.

Certaine norme sont connu sous plusieurs nom. Ainsi en va t-il d'Unicode par exemple, qui a une norme ISO équivalente. Ce n'est qu'une question de droit. Certaine norme sont accessible après s'être aquité de quelque frais, et les droit permette parfois une distribution libre des informations après qu'elles aient été re-rédigés.

La norme ECMA-48 a également ses équivalentes, qui sont DP6419 et ISO/IEC-6429. En fait, je suppose que le norme d'origine est ISO/IEC, et qu'elle a été reprise par ECMA sous d'autres droits (beaucoup de norme ECMA ont suivi de processus).

Tu pourra obtenir la norme ECMA-48 ici : Standard ECMA-48 (le lien de téléchargement est en bas de page... mais je t'invite à ne pas y sauter directement et à lire la page...)

If you are at ease with english, I may suggest you this reading : The VT100 and its successors. Tu trouvera une réponse à une question posée par Celelibi : quels sont les différences entre les différents types de terminaux.

Concernant la différence entre les différents types de terminaux, il ne faut pas oublier qu'avant d'être une norme logiciel, les terminaux sont régis par des normes physique (il s'agissait d'implémenter physiquement certaines caractèrisitique). Ainsi, certains terminaux sont seulement différent d'un point de vue technique pure, mais pas nécéssairement différent d'un point de vue logiciel... et c'est le point de vue logiciel qui est important pour toi ici.


Terminal VT100 ... c'est vraiment ça que tu veux Marmataru ???!! lol


Terminal VT510 ... je te conseil ça au minimum quand même... sinon ce serait une regression... hihihi

Pour la différence entre VT100 et VT101 : VT100 -> VT101. C'est un tout petit paragraphe en bas de page (il n'y en a pas plus apparement)

Citation:
Envoyé par VT100 -> VT101
ESC 04/14 SS2 added
ESC 04/15 SS3 added
CSI 06/09 MC removed
CSI 07/08 DECREPTPARM removed
De plus, contrairement au apparence (les nombres ne prouvent rien en ce domaine), il n'est pas certain que VT101 soit plus complexe que VT100.. et même au contraire.

Citation:
The VT101 and VT102 were cost-reduced non-expandable follow-on products, with the VT102 including the AVO and serial printer port options of the VT100
La différence est plutôt entre les VT1xx et les VT2xx.

Citation:
In 1983, the VT100 was replaced by the more-powerful VT200 series terminals such as the VT220.
Heuuuuu.... un détail qui me trouble, et qui surement vous interesser tout les deux : VT100 et Cie sont copyrighted : Copyright. Alors je ne sais pas de quel manière on peut se prévaloir de VT100, etc.

Et pour finir, il y a ce document, que je n'ai même pas téléchargé tellement il est gros (25M) : ek-vt100-tm-002.pdf (DEC VT100 service manual) from http://vt100.net/docs

Voili-voilou Y a de quoi faire et de quoi lire (je te suggère de commencer par la lecture de la norme ECMA)

إلى القاء (à+)

.... heuuuu au passage, est-ce que quelqu'un(e) a une réponse à ce topic ? : http://www.developpez.net/forums/sho...d.php?t=257667 (mais peut-être que je n'ai pas mis te topic au meilleur endroit, et que j'aurais du le mettre ici dans « system » plutôt que dans « developpement »)
Hibou57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2007, 11h36   #5
Membre Expert
 
Avatar de narmataru
 
Inscription : décembre 2002
Messages : 1 423
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : décembre 2002
Messages : 1 423
Points : 1 491
Points : 1 491
Merci Hibou57 pour toutes ces informations (aufait mon pseudo c'est narmataru et non Marmataru )
En fait jene cherche ni à faire un nouvel os ou une nouvelle distribution linux (je ne vois pas le rapport avec le développement d'un exmulateur de terminal....).
Je souhaite juste permettre à des application Java de lancer des applications en mode texte. Ainsi, je voudrais créer une composant graphique pour java qui permette d'intégrer un processus Vim ou un shell bash etc... J'aimerais faire ça de la même manière que xterm. Xterm est une application graphique qui émule un terminal pour lancer des application en mode texte (un shell ou une application texte).
Donc je voudrais juste faire un émulateur de terminal en java. Le problème pour commencer c'est que je ne sais pas comment je peux connecter un émulateur de terminal au système.
Je porrais peut ête me connecter au port telnel mais ça bloquerais le port.
Xterm lui crée des noeuds dans /dev/pts. Ouvrer un xterm et faites 'echo bonjour > /dev/pts/0'. Mais comment créer ces noeuds ?
Après pour les codes de contrôle du terminal ça ne devrait pas poser de problème ce sont juste des codes d'échapement
__________________
Reportage d'Arte sur Linux
narmataru est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2007, 12h36   #6
Inactif
 
Avatar de Hibou57
 
Inscription : mars 2006
Messages : 852
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 852
Points : 398
Points : 398
Citation:
Envoyé par narmataru
aufait mon pseudo c'est narmataru et non Marmataru )
Pardon grand maritou... heuuu... grand manitou... heuu... NArmataru :p ... j'y arrive

Citation:
En fait jene cherche ni à faire un nouvel os ou une nouvelle distribution linux (je ne vois pas le rapport avec le développement d'un exmulateur de terminal....).
C'est parce que c'est la première chose à laquelle on s'interesse quand on se lance dans la création d'un OS... normal, on commence à sauter de joie quand on a un truc qui boot qui affiche « coucou » à l'écran

Citation:
Le problème pour commencer c'est que je ne sais pas comment je peux connecter un émulateur de terminal au système.
Je vais essayer de t'expliquer cela aussi simplement que possible (parfois des choses simples deviennent incompréhensibles quand elles sont mal exprimées)
En fait, tune connectera pas ton émulateur au système, mais tu le connectera a une application. Ton émulateur sera un terminal, puisqu'il émule un terminal. Et un terminal est utile en tant qu'interface avec une application. Donc tu comprend bien que tu connectera ton interface à une application... et non pas au système.

Je comprends malgré tout pourquoi tu le prend par le mauvaise bout : on associe souvent terminal et système, et donc quand on associe une application à un terminal, on fait un raccourci trop rapide, et on pense à tort que c'est une association à un élément du système. Ce qui le fait penser à tort, c'est que c'est habituellement le système, le noyau linux qui émule le terminal. Mais dans ton cas, le système ne se mellera absolument pas de la relation entre ton terminal et l'application qui y sera connecter (à moins que tu ne veuille vraiment implémenté les IOCTL pour termios... mais je te déconseille de t'arracher les cheveux avec ça)

Il te faut juste un pipe... d'un point de vue au niveau, un noeud tty n'est rien d'autre qu'un pipe... c'est un driver de caractère, mais en fait surtout un pipe de caractère. Il y a des numéro majeur-mineur (4,0 pour tty0 par exemple), mais cela ne sert qu'à identifier le pilote qui est derrière de pipe. Si jamais derrière le pipe il y a une tout autre application (qui n'est pas un pilote du noyau), alors le pipe n'a pas besoin de tout ça...

Tu cré un pipe. A un bout du pipe il y a ton emulateur (en fait, un pseudo pilote), et à l'autre bout du pipe, il y a l'application. Le problème est plutôt de savoir comment connecté l'application au pipe.

Alors à ce point là, soit 1) l'application est paramètrable et on peut lui donner le chemin du pipe surlequel elle se connecte (qui est habituellement /dev/tty-n, mais qui peut tout aussi bien être /perso/cheztartenpoin/monemul), soit 2) l'application n'est pas paramètrable, et en ce cas c'est surement qu'elle va chercher elle même un noeud dans /dev/quelquechose, et alors dans ce cas, il faut que tu fasse un ln (lien symbolique) dans /dev pour que /dev/quelquechose pointe vers ton pipe.

Si effectivement tu te contente d'émuler la communication des commande entre l'application et le système d'entrée/sortie-affichage, alors c'est suffisant.

N'hésite pas à me demander si ces explications te paraissent trop confuse... et excuse pour la mauvaise expression et les probables faute d'orthographe... je n'ai pas le temps de me relire là tout de suite

A+
Hibou57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h16.


 
 
 
 
Partenaires

Hébergement Web