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

Embarqué Discussion :

Projet Carte Fox LX832 Pas de signal en sortie


Sujet :

Embarqué

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Projet Carte Fox LX832 Pas de signal en sortie
    Bonjour je suis en sti2d et mon projet de recevoir des donne et d 'envoye des reset a partir d 'une page web sur une carte fox.

    Mes page internet son faite avec les bons codes qu il faut maintenant le seul problème est que qu'en j'envoie un reset et que je veut le voir sur un oscillospe en regardant la sortie rx de J10 de /dev/ttyS0, je ne recois pas de signal

    Ensuite pour essaye dans l'autre sens j'ai utiliser un pickit v2 pour envoye des donne en rs232 mais elle ne s'affiche pas non plus sur ma page web donc je voudrais savoir d'ou pourrait venir l'erreur.

    J'ai flashé la carte fox avec une image ou le php s'active automatiquement et je fais la bufférisation par commande. La carte ce buff bien car dans mon code un message d'erreur s'affiche si elle lit pas le serial buffer.

    Si quelqu'un a des idees merci de m'aider

  2. #2
    Membre chevronné

    Homme Profil pro
    .
    Inscrit en
    Janvier 2006
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Janvier 2006
    Messages : 703
    Points : 1 950
    Points
    1 950
    Par défaut
    Qu'appelles-tu "reset" ?
    Il nous manque des détails pour t'aider car je ne comprends pas tout

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci de m'avoir repondu

    Donc en gros on ma demandé de partir d'une base d'un site deja fais dont je met un screen pour mieux comprendre ensuite dans les case font s'afficher les valeurs recu par la fox sous la forme A + des chiffre ou B + des chiffre juste les chiffre s'affiche ces valeur son stock dans com.txt .
    et ensuite en cliquant sur le bon reset la fox envoie R + un chiffre au pic pour qu il remette a zéro la partie cible.
    Apres le probleme c'est que j'arrive bien a faire fonctionne le site sur la fox mais les echange de donnés ne s'effectue pas.

    D'ailleurs je doit configurer ma liaison série on ma donne cette serie de commande je pense que l'erreur peut venir d'ici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #!/bin/sh
    stty -F /dev/ttyS0  speed 115200 -parenb -parodd cs8 -hupcl -cstopb cread clocal -crtscts ignbrk -brkint ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany -imaxbel -opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 -isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt -echoctl -echoke
    /mnt/flash/root/serial_buffer.out /tmp/com.txt /dev/ttyS0  &

    image du site http://img15.hostingpics.net/pics/566648site1.jpg

    Et quand j'appuie sur un reset sa redirige vers reset.php et dont voici le code


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    <HTML>
    <HEAD>
    <TITLE>BAC 2010 Machine &agrave; Caf&eacute; </TITLE>
    <meta http-equiv="Refresh" content="7;URL=cafe.php">
    </HEAD>
    <BODY>
    <?
    $debug=0; 
    // Test des différents boutons possibles
    // conception de la trame en fonction et envoi
    $trame="";
    $affiche="";
    if (isset($_POST['ResetCheck'])){
    if($debug) echo "<br/> Verification des cases coch&eacute;es ";
    
    	if (isset($_POST['Erreur01'])){
    		$trame.="RA";
    		$affiche='Erreur01 ';
    	}
    	if (isset($_POST['Erreur02'])){
    		$trame.="RB";
    		$affiche.='Erreur02 ';
    	}
    	if (isset($_POST['Erreur03'])){
    		$trame.="RC";
    		$affiche.='Erreur03 ';
    	}
    	if (isset($_POST['Erreur04'])){
    		$trame.="RD";
    		$affiche.='Erreur04 ';
    	}
    	if (isset($_POST['Erreur05'])){
    		$trame.="RE";
    		$affiche.='Erreur05 ';
    	}
    	if (isset($_POST['Erreur06'])){
    		$trame.="RF";
    		$affiche.='Erreur06 ';
    	}
    	if (isset($_POST['Erreur07'])){
    		$trame.="RG";
    		$affiche.='Erreur07 ';
    	}
    	if (isset($_POST['Erreur08'])){
    		$trame.="RH";
    		$affiche.='Erreur08 ';
    	}
    	if (isset($_POST['Erreur09'])){
    		$trame.="RI";
    		$affiche.='Erreur09 ';
    	}
    	if (isset($_POST['Erreur10'])){
    		$trame.="RJ";
    		$affiche.='Erreur10 ';
    	}
    	if (isset($_POST['Erreur11'])){
    		$trame.="RK";
    		$affiche.='Erreur11 ';
    	}
    	if (isset($_POST['Erreur12'])){
    		$trame.="RL";
    		$affiche.='Erreur12 ';
    	}
    	if (isset($_POST['Erreur13'])){
    		$trame.="RM";
    		$affiche.='Erreur13 ';
    	}
    	if (isset($_POST['Erreur14'])){
    		$trame.="RN";
    		$affiche.='Erreur14 ';
    	}
    
    }else if (isset($_POST['Reset01'])){
    	$trame="RA";
    	$affiche='Reset01';
    }else if (isset($_POST['Reset02'])){
    	$trame="RB";
    	$affiche='Reset02';
    }else if (isset($_POST['Reset03'])){
    	$trame="RC";
    	$affiche='Reset03';
    }else if (isset($_POST['Reset04'])){
    	$trame="RD";
    	$affiche='Reset04';
    }else if (isset($_POST['Reset05'])){
    	$trame="RE";
    	$affiche='Reset05';
    }else if (isset($_POST['Reset06'])){
    	$trame="RF";
    	$affiche='Reset06';
    }else if (isset($_POST['Reset07'])){
    	$trame="RG";
    	$affiche='Reset07';
    }else if (isset($_POST['Reset08'])){
    	$trame="RH";
    	$affiche='Reset08';
    }else if (isset($_POST['Reset09'])){
    	$trame="RI";
    	$affiche='Reset09';
    }else if (isset($_POST['Reset10'])){
    	$trame="RJ";
    	$affiche='Reset10';
    }else if (isset($_POST['Reset11'])){
    	$trame="RK";
    	$affiche='Reset11';
    }else if (isset($_POST['Reset12'])){
    	$trame="RL";
    	$affiche='Reset12';
    }else if (isset($_POST['Reset13'])){
    	$trame="RM";
    	$affiche='Reset13';
    }else if (isset($_POST['Reset14'])){
    	$trame="RN";
    	$affiche='Reset14';
    }else if (isset($_POST['ResetTotal'])){
    	$trame="RY";
    	$affiche='Reset nombre total de caf&eacute; ';
    }else if (isset($_POST['ResetNbCafe'])){
    	$trame="RX";
    	$affiche='Reset nombre de caf&eacute; depuis d&eacute;tartrage ';
    }
    
    
    if($debug) echo "<br/> Trame ".$trame;
    
    
    if (!$fp = fopen("/dev/ttyS0","a")) {
    echo "Echec de l'ouverture du fichier /dev/ttyS0 ";
    echo "Le fichier /dev/ttyS0  est le fichier permettant d'acc&eacute;der &agrave; la liaison s&eacute;rie <br/>";
    exit;
    
    }
    else {
    	$trame.="\n";
    	fputs($fp,$trame);
    	
    	fclose($fp); // On ferme le fichier
    }
    ?>
    <table width="100%" border="0">
     <tr>
        <td width="25%" align="center" valign="middle">
    
        </td>
        <td width="50%" align="center" valign="middle" bgcolor="#F050F0">
    
            <FONT size="6" color="black">
              <p align="center"> 
    	<?
    	if (isset($_POST['ResetCheck'])){
    	echo  "Envoi reset des erreurs : <br/>".$affiche; 
    	}else
    	{
    	   echo  $affiche." envoy&eacute;"; 		
    	}
    	?></p>
            </FONT>
    
    
            <FONT size="6" color="white">
              <p align="center"> Machine &agrave; Caf&eacute; SAECO </p>
            </FONT>
        </td>
        <td width="25%" align="center" valign="middle">
    
        </td>
     </tr>
     
    </table>
    <FONT size="5" color="black">
    <p align="center"> Attente 7 secondes </p>
    <p align="center"> ou retour &agrave; la <a href="cafe.php"> page de visualisation </a>   </p>
    </FONT>
    
    </BODY>
    </HTML>

  4. #4
    Membre chevronné

    Homme Profil pro
    .
    Inscrit en
    Janvier 2006
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Janvier 2006
    Messages : 703
    Points : 1 950
    Points
    1 950
    Par défaut
    Wha j'ai rarement vu autant de paramètres à stty. Je ne suis pas certain que tous soient nécessaires,
    As-tu le code source de serial_buffer.out ? Que fait-il exactement ?

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Oui merci du conseille donc j'ai bien le code source on me la donné tels qu'elle je n'y est pas touché

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    /*
    		Adapted de serial_test.c
    		Very simple serial tester
    		For more info see: http://www.acmesystems.it/?id=50
    
    		Copyright (C) 2005 Acme Systems srl (http://www.acmesystems.it)
    
    		By Sauvergeat Magali
    
    		This is free software; you can redistribute it and/or modify
    		it under the terms of the GNU General Public License as published by
    		the Free Software Foundation; either version 2 of the License, or
    		(at your option) any later version.
    
    */
    
    #include <stdio.h>
    #include <string.h>
    #include <unistd.h>
    #include <fcntl.h>
    #include <errno.h>
    #include <termios.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <stdlib.h>
    #include <stdarg.h>
    #include <signal.h>
    #define FILEMAX  500  // taille du fichier Maximum
    #define BUFFER	 100  // taille du buffer
    #define DEBUG	 0   // variable pour la recherche d'erreur
    
    
    struct termios tty_saved_attributes;
    int tty_fd;
    
    int tty_open(char* tty_dev)
    {
    
        char choix[20];
        struct termios new_attributes;
        //tty_fd = open(tty_dev,O_RDWR| O_NOCTTY | O_NONBLOCK);
        tty_fd = open(tty_dev,O_RDWR| O_NOCTTY );
        if (tty_fd<0)
        {
            return -1;
        }
        else
        {
            tcgetattr(tty_fd,&tty_saved_attributes);
            printf("\n Voulez vous modifier la configuration de la liaison sérié ? (y/N) :");
            gets(choix);
            if ((!strcmp(choix,"Y"))||(!strcmp(choix,"y")))
            {
                tcgetattr(tty_fd,&new_attributes);
                // Set the new attributes for the serial port
                // http://linux.about.com/library/cmd/blcmdl3_termios.htm
                //http://www.gnu.org/software/libc/manual/html_node/Low_002dLevel-I_002fO.html
                printf("\n Vitesse de la liaison série?  4800 ,9600,19200,38400 (defaut 38400) :");
                gets(choix); 		// Set baud rate
                if (!strcmp(choix,"4800"))   	new_attributes.c_cflag |= B4800;
                else if (!strcmp(choix,"9600")) new_attributes.c_cflag |= B9600;
                else if (!strcmp(choix,"19200")) new_attributes.c_cflag |= B19200;
                else  new_attributes.c_cflag |= B38400;
                printf("\n Nombre de bits par transmission?  6, 7, 8  (defaut 8) :");
                gets(choix);
                if (!strcmp(choix,"6"))   new_attributes.c_cflag |= CS6;
                else if (!strcmp(choix,"7")) new_attributes.c_cflag |= CS7;
                else  new_attributes.c_cflag |= CS8;			// 8 data bit
                printf("\n Type de parité ?  A (Aucune), P (Paire), I(Impaire)  (defaut Aucune) :");
                gets(choix);
                if (!strcmp(choix,"P"))
                {
                    new_attributes.c_cflag |= PARENB;		// active la parité
                    new_attributes.c_cflag |= ~(PARODD);
                }
                else if (!strcmp(choix,"I"))
                {
                    new_attributes.c_cflag |= PARENB;		// active la parité
                    new_attributes.c_cflag |= PARODD;
                }
                else  new_attributes.c_cflag |= ~(PARENB);		// desactive la parité
    
    
    
    
                // c_cflag
                new_attributes.c_cflag |= CREAD;		 	// Enable receiver
    
                // c_iflag
                new_attributes.c_iflag |= IGNPAR;		 	// Ignore framing errors and parity errors
                // c_lflag
                new_attributes.c_lflag &= ~(ICANON); 	// DISABLE canonical mode.
                // Disables the special characters EOF, EOL, EOL2,
                // ERASE, KILL, LNEXT, REPRINT, STATUS, and WERASE, and buffers by lines.
                new_attributes.c_lflag &= ~(ECHO);		// DISABLE this: Echo input characters.
                new_attributes.c_lflag &= ~(ECHOE);		// DISABLE this: If ICANON is also set, the ERASE character erases the preceding input
                // character, and WERASE erases the preceding word.
                new_attributes.c_lflag &= ~(ISIG);	// DISABLE this: When any of the characters INTR, QUIT, SUSP,
                // or DSUSP are received, generate the corresponding signal.
                new_attributes.c_cc[VMIN]=1;			// Minimum number of characters for non-canonical read.
                new_attributes.c_cc[VTIME]=0;			// Timeout in deciseconds for non-canonical read.
    
                tcsetattr(tty_fd, TCSANOW, &new_attributes);
            }
        }
        return tty_fd;
    }
    
    
    
    void termination_handler (int signum)
    {
        if (tty_fd>0) tcsetattr (tty_fd,TCSANOW,&tty_saved_attributes);
        close(tty_fd);
        printf("Exit\n");
        exit(0);
    }
    
    
    int recopie_serie(int  filefd,int ttyfd, char * buff)
    {
        int i=0,j=0;
        while ((i<FILEMAX)||(buff[j]!='\n'))
        {
            j=i%BUFFER;
            read (ttyfd,&buff[j],1);
            //printf("%c",buff[j]);
            write (filefd,&buff[j],1);
            i++;
        }
        if (DEBUG) printf(" Valeur de i : %d\n",i);
        return j;
    }
    
    
    
    int main(int argc, char *argv[])
    {
        char buff[BUFFER];
        char * nomfichier="/tmp/com.txt";
        char * ttynom= "/dev/ttyS0";
        int ttyfd;
        int filefd;
        int v,j;
        if (argc<3)
        {
            printf(" Buferisation de la liaison série\n ");
            printf(" Utilisation \"serial_buffer.out NomfichierBuffer.txt fichier de la liaison série \" \n");
            printf(" valeur par défaut \"serial_buffer.out /tmp/com.txt /dev/ttyS0 \" \n");
            printf(" /dev/ttyS0 représente le nom de la liaison série 0, ttyS0 com0 et ttyS1 com1  \n");
            printf(" Pour lancer le programme en tache de fond utiliser le caractère & en fin de ligne de commande  \n");
            printf(" Exemple:  \"./serial_buffer.out /tmp/com.txt /dev/ttyS0  & \" \n");
            printf(" Pour lancer le programme et configurer la liaison série  \n");
            printf(" Exemple:  \"./serial_buffer.out /tmp/com.txt /dev/ttyS0  conf  \" \n");
        }
        else
        {
            nomfichier =argv[1];
            ttynom=argv[2];
        }
    
    
    
        if ((filefd=open(nomfichier,O_CREAT | O_WRONLY|O_TRUNC))<0)
        {
            fprintf (stderr,"Ouverture fichier erreur %s\n", strerror(errno));
            exit(EXIT_FAILURE);
        }
    
        if (argc ==4 )
        {
            if ((ttyfd= tty_open(ttynom))<0)
            {
                fprintf (stderr,"Ouverture tty erreur %s\n", strerror(errno));
                exit(EXIT_FAILURE);
            }
        }
        else
        {
            ttyfd = open(ttynom,O_RDWR| O_NOCTTY );
            if (tty_fd<0)
            {
                fprintf (stderr,"Ouverture tty erreur %s\n", strerror(errno));
                exit(EXIT_FAILURE);
            }
        }
    
    
        if (signal (SIGINT, termination_handler) == SIG_IGN) signal (SIGINT, SIG_IGN);
        if (signal (SIGHUP, termination_handler) == SIG_IGN) signal (SIGHUP, SIG_IGN);
        if (signal (SIGTERM, termination_handler) == SIG_IGN) signal (SIGTERM, SIG_IGN);
    
         if (DEBUG)printf(" Buferisation de la liaison série\n ");
        while (1)
        {
    
            v=recopie_serie(filefd,ttyfd,buff);
            close(filefd);
            if ((filefd=open(nomfichier,O_CREAT | O_WRONLY|O_TRUNC))<0)
            {
                fprintf (stderr,"Ouverture fichier erreur %s\n", strerror(errno));
                exit(EXIT_FAILURE);
            }
            j=v;
            j++;
            if (DEBUG) printf(" valeur de v: %d \n",v);
            while (j!=v)
            {
                write (filefd,&buff[j],1);
                j++;
                j%=BUFFER;
                if (DEBUG) printf("%d ",j);
            }
        }
    
        return EXIT_SUCCESS;
    }

  6. #6
    Membre chevronné

    Homme Profil pro
    .
    Inscrit en
    Janvier 2006
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Janvier 2006
    Messages : 703
    Points : 1 950
    Points
    1 950
    Par défaut
    Pour moi utiliser stty ne sert à rien si le port série est configuré dans ton logiciel (via termios).
    Donc le logiciel se contente de remplir le fichier texte à partir de ce qui arrive sur le port série si je comprends bien. C'est un prof qui t'a fourni ce code ? Mes yeux piquent toujours lorsque je lis du code écrit en français

    Bon je comprends toujours pas ce qui ne se passe pas bien.

    - Si tu mets un scope sur tx/rx tu vois rien passer ?
    - Si tu fais un tail -f /tmp/com.txt tu vois passer des trucs ?
    - le code en C est assez crade, ça m'étonnerait pas que ça vienne de là aussi.
    - as-tu essayé d'utiliser minicom pour ouvrir une connexion série et visualiser directement ce qui est envoyé (sans passer par le fichier txt, vu que de toute façon c'est de l'ASCII qui transite)

    Je te conseille de valider étape par étape.
    - Vérifier que le fichier txt est bien écrit, qu'il reçoit bien les données.
    - Que le port série marche bien (tester minicom et oscillo)
    - Que le code PHP peut bien lire le fichier txt
    - Que le code PHP peut bien écrire sur le port série et que tu vois bien passer quelque chose à l'oscillo.
    - etc.

    Bref, il faut tout décomposer en petites étapes et faire des tests pour les valider/invalider unes par unes pour trouver d'où vient le problème.

    Dernière question, il y a quoi de branché au serial de la fox ?

Discussions similaires

  1. Introduction à la carte FOX LX832
    Par Aquanum dans le forum Embarqué
    Réponses: 8
    Dernier message: 24/01/2012, 12h44
  2. Introduction à la carte FOX LX832
    Par Aquanum dans le forum Contribuez
    Réponses: 75
    Dernier message: 13/05/2011, 10h44
  3. carte fox-lx832, ajouter des programmes et bibliothèques
    Par PapaGui dans le forum Embarqué
    Réponses: 8
    Dernier message: 06/04/2010, 10h53
  4. carte fox-lx832, ping impossible
    Par hm55hm dans le forum Embarqué
    Réponses: 1
    Dernier message: 31/03/2010, 13h06
  5. Réponses: 4
    Dernier message: 03/02/2009, 12h57

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