speed_t - C - Programmation
Marsh Posté le 15-11-2006 à 20:49:16
Donne ton printf() et ce qu'il affiche pour voir ?
Marsh Posté le 16-11-2006 à 15:37:01
matafan a écrit : Donne ton printf() et ce qu'il affiche pour voir ? |
Bonjour,
Voici la potion de code:
Code :
|
le printf donne 16 avec %d et 10 avec %X
Marsh Posté le 16-11-2006 à 19:05:26
Donc il n'y a pas de probleme... Chez moi 0x10 correspond a B19200. Les Bxxx, c'est des #define. cfgetospeed renvoie la valeur d'un de ces #defines.
Et puis aussi, met les \n en fin de chaine plutot qu'en debut, ca permettra de flusher la sortie correctement.
Marsh Posté le 17-11-2006 à 08:33:13
yartempion a écrit : Bonjour, |
J'ai un autre pb voici un bout de code,
Code :
|
dans le case 24 j'ai rajoute un for depuis impossible de breaker le switch pour en sortir ou l'erreur.
Marsh Posté le 17-11-2006 à 08:57:20
Pour le Pb dans le switch case 24 tout est Ok.
Par contre je suis toujours interesse pour les define.
Marsh Posté le 17-11-2006 à 09:07:23
yartempion a écrit : Bonjour, |
Euh, genre dans la doc...
http://man.he.net/man2/tcgetattr
http://man.developpez.com/man3/tcgetattr.3.php
Marsh Posté le 17-11-2006 à 11:44:25
Pourriez vous me donner la correspondance entre Bxx et le code renvoye.
B0=
B50=
B75=
B
B19200=16
etc,etc
Merci.
Marsh Posté le 17-11-2006 à 11:58:49
Ben affiche-les, ce sont des constantes POSIX.1 définies dans termios.h
Emmanuel t'a donné les liens en plus, donc t'as pas dû les lire.
Et comme je suis trop con gentil, regarde (chez moi) :
$ cat test.c |
edit : ceci dit, puisque tu as les constantes de définies, tu ne devrais pas avoir à te préoccuper de leur valeur...
Marsh Posté le 17-11-2006 à 12:01:28
yartempion a écrit : Pourriez vous me donner la correspondance entre Bxx et le code renvoye. |
Ca ne sert à rien. Tu fais un switch-case et c'est reglé (le nom des constantes est suffisamment explicite, non ?). Tu n'a pas besoin de connaitre les valeurs exactes. Il faut apprendre à travailler en abstraction...
Code :
|
etc.
Marsh Posté le 17-11-2006 à 12:02:38
Elmoricq a écrit : |
+1
Marsh Posté le 17-11-2006 à 14:22:42
(je précise juste pour appuyer le fait qu'il faille utiliser les constantes, que sur mon serveur, B19200 vaut 14 )
Marsh Posté le 28-11-2006 à 20:05:27
Bonjour,
Si je veux communiquer la vitesse de mon terminal a un distant sur un seul octet est ce que je lui envoie la valeur retour de cfgetspeed().
Marsh Posté le 28-11-2006 à 20:17:24
yartempion a écrit : Bonjour, |
Non. Il faut définir une convention 'réseau' indépendante de toute implémentation
|
et faire la conversion dans les deux sens :
Par exemple :
Sys A : emission
|
Sys B : récéption
|
C'est la seule façon d'être indépendant.
Mais quand est-ce qu'on va se décider à enseigner la conception en informatique...
Marsh Posté le 29-11-2006 à 08:00:29
Bonjour,
Dans la rfc 1079 concernant la transmition des vitess du terminal comment est transmise la valeur de la vitesse du terminal.
Mon probleme c'est que j'ai ecris un client telnet qui se connecte a certain equipement mais pas a d'autre.
Par exemple j'arrive a ouvrir une connection sur un routeur cisco, nortel etc mais pas sur un serveur unix ou certain autres routeurs.
Ils sont en attente de reponse d'options a negocier.
Marsh Posté le 29-11-2006 à 10:15:04
yartempion a écrit : Dans la rfc 1079 concernant la transmition des vitess du terminal comment est transmise la valeur de la vitesse du terminal. |
La RFC 1079 concerne l'échange d'information entre terminaux Telnet sous X/Window (Motif, X11 etc.). Tu te sens concerné ?
Je vais essayer de comprendre ce que tu veux faire.
Ton problème est donc de savoir pourquoi.
Telnet est un protocole qui régit l'échange d'informations entre 2 équipements. Un serveur et un client. Il est spécifié par la RFC 854.
http://www.ietf.org/rfc/rfc0854.txt
Pour que ton client ait la moindre chance de se connecter à un serveur Telnet quelconque, il doit absolument supporter l'ensemble de ces dispositions. Si ce n'est pas le cas, ça ne fonctionnera pas dans tous les cas (ca peut fonctionner sur certains serveurs simplifiés).
C'est probablement pour ça que la connexion ne s'établit pas sur certains serveurs.
Il ne reste plus qu'à implémenter le protocole coté client.
Marsh Posté le 30-11-2006 à 09:38:09
Bonjour,
Ca y'est j'ai compris comment ca se passe.
On envoie reellement la vitesse du terminal sous forme de caracteres ascii tout simplement a charge au distant de l'interpreter.
Exp: IAC SB TERMINAL-SPEED IS "1200,1200" IAC SE
on ecrit sur la socket sous forme de caractere ascii avec le caracter ascii (,) virgule comme separateur entre la vitesse Tx et Rx mais doit on transmetre les double cotes ou pas
Marsh Posté le 30-11-2006 à 12:08:20
yartempion a écrit : Ca y'est j'ai compris comment ca se passe. |
Ben oui, par exemple.
Citation : Il faut définir une convention 'réseau' indépendante de toute implémentation |
Marsh Posté le 15-11-2006 à 14:55:48
Bonjour,
Dans mon prog je cherche a recuperer les vitesses des terminaux via la fonction cfget(i ou o)speed qui renvoie un type speed_t d'une structure termios.
Cete fonction doit renvoyer un code du genre B0 ou B1200 ou B quelque chose qui est une vitesse de sortie ou d'entree du terminal.
Je cherche a afficher ce code sur stdout, j'ai essaye avec printf("%d" ),const speed_t vitesse) et plein d'autres rien y fait.
Evidement j'ai declare une var vitesse de type speed_t, une var terminal de struct termios et j'ai recupere.
Comment doit on s'y prendre un petit bout de code serai le bienvenu.
Merci.