envoyer un string via RS232
Répondre à la discussion
Affichage des résultats 1 à 29 sur 29

envoyer un string via RS232



  1. #1
    invite4b36df62

    Exclamation envoyer un string via RS232


    ------

    Bonsoir à tous,
    je veux envoyer une chaine de caractère de mon PC vers mon PIC16F877 et puis mettre ce que j'envoie comme rapport cyclique du PWM mais ça fonctionne un fois correctement et yne fois non je ne voix pas ou est le problème . j'utilise CCS C compiler pour ma programmation.
    s'il vous plait si quelqu'un peux voir ma faute qu'il me contacte
    merci d'avance.
    voici mon code:
    Code:
    #include <16F877.h>
    #include <string.h>
    #use delay(clock=4000000)
    #fuses hs, noprotect, nowdt,nolvp
    #include <stdlib.h>
    #include <stdio.h>
    #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
    #define BUFFER_SIZE 32
    
    BYTE buffer[BUFFER_SIZE];
    BYTE next_in = 0;
    
    int duty;
    #int_rda
    void serial_received()
    {
       int i;
       do{
       buffer[next_in]=getc();
       next_in=(next_in+1) % BUFFER_SIZE;
       }while(next_in<=2);
    duty=atoi(buffer);
    }
    void main()
    {
    
    
    output_HIGH(PIN_B1);
    
    enable_interrupts(INT_RDA); //interrupt fires when the receive data is available, RS232 ON
    enable_interrupts(GLOBAL); //activation de sinterruption
    
    setup_timer_2(T2_DIV_BY_1,255, 1); //génération du PWM
    setup_ccp1(CCP_PWM);
    
    main_program:
    do
    {
    
    
    set_pwm1_duty(duty);
    
    }while(TRUE);
    
    goto main_program;
    
    
    }

    -----

  2. #2
    carcan

    Re : envoyer un string via RS232

    Hello !

    je reprends ton code, il y a quelques modifications à apporter :
    - la chaine que tu envoies au pic doit être terminée par un caractère connu, comme ça tu envoies ta commande pwm en 1, 2 ou 3 chiffres, suivis du "\n" (code ascii 13 = return)
    - je pense que ton problème est à cause de la variable next_in qui n'est pas remise à 0 à la fin de la routine de réception des données
    - si l'interruption se déclenche accidentellement (parasite sur la ligne, ...), tu risques de tout bloquer. Pour éviter ça, il faut un timeout sur la ligne série

    J'ai modifié ton code (ligne "#use RS232", routine interruption série, boucle dans le "main" qui était bizarre) :

    Code:
    #include <16F877.h>
    #include <string.h>
    #use delay(clock=4000000)
    #fuses hs, noprotect, nowdt,nolvp
    #include <stdlib.h>
    #include <stdio.h>
    #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, TIMEOUT=1000)
    #define BUFFER_SIZE 32
    
    BYTE buffer[BUFFER_SIZE];
    BYTE next_in = 0;
    
    int duty;
    #int_rda
    void serial_received()
    {
       int check;
       do
       {
       buffer[next_in]=getc();
       check = buffer[next_in];
       next_in=(next_in+1) % BUFFER_SIZE;
       }
       while(check!=13 & check!=0);//13 = end of transmission
       							   //00 = timeout
    duty=atoi(buffer);
    next_in = 0;
    }
    
    void main()
    {
    
    output_HIGH(PIN_B1);
    
    enable_interrupts(INT_RDA); //interrupt fires when the receive data is available, RS232 ON
    enable_interrupts(GLOBAL); //activation de sinterruption
    
    setup_timer_2(T2_DIV_BY_1,255, 1); //génération du PWM
    setup_ccp1(CCP_PWM);
    
    
    while(TRUE)
    {
     set_pwm1_duty(duty);
    }
    Tiens nous au courant et bonne journée
    Laurent
    Dernière modification par carcan ; 14/05/2009 à 09h15.

  3. #3
    invitee05a3fcc

    Re : envoyer un string via RS232

    Citation Envoyé par carcan Voir le message
    - la chaine que tu envoies au pic doit être terminée par un caractère connu, comme ça tu envoies ta commande pwm en 1, 2 ou 3 chiffres, suivis du "\n" (code ascii 13 = return)
    ne connaissant rien en C, je n'ai pas analysé le code.
    Cette méthode est seulement valable si, dans la chaine de DATA, le code 0x13 ne peux pas exister. Donc la chaine de DATA doit être en octet HEXA codé en ASCII de 0x30 à 0x39 et 0x41 à 0x46 (et non binaire). De plus en commençant par un "LF" (code 0x0A) il est facile de détecter le début d'une trame

  4. #4
    carcan

    Re : envoyer un string via RS232

    Salut Daudet !

    je suis tout à fait d'accord avec toi, mais dans ce cas ci pas de souci, les caractères envoyés seront de 0 à 9 (soit ASCII 0x30 à 0x39), le caractère de fin le CR (soit ASCII 0x0D, je l'ai mis en décimal dans le prog, donc = 13).

    De cette manière, il est très facile d'envoyer les caractères au PIC avec l'hyperterminal avec le clavier numérique et la touche Enter.

    Le petit plus à ajouter serait un écho généré par le PIC, ou plus simplement un texte "OK!" lorsque le rapport cyclique a été modifié.

    A+
    Laurent

  5. A voir en vidéo sur Futura
  6. #5
    invite4b36df62

    Smile Re : envoyer un string via RS232

    Salut,
    Merci bien pour votre réponse.
    je comprends de vous que après avoir taper mon rapport cyclique dans l'huyperterminale, j'écris 13 pourq'il sache que je vais envoyer un autre rapport cyclique?
    je vais aller au labo pour tester et je vous laisserai au courant.
    Merci.

  7. #6
    invite4b36df62

    Exclamation Re : envoyer un string via RS232

    désolé Laurent, mais quand je compile ton programme, il m'affiche l'erreur suivante:"use parameter value is out of range 'TIMEOUT' " j'ai même remplacer 1000 par 500 il affiche la même erreur
    Si je la supprime est ce que çà dérange puisque on a fixer 13 pour la fin du chaine?

  8. #7
    invitee05a3fcc

    Re : envoyer un string via RS232

    Citation Envoyé par faffou Voir le message
    j'écris 13 pourq'il sache que je vais envoyer un autre rapport cyclique?
    non, 0x13 est le code ASCII de la touche "Entrée" ou "Enter"

  9. #8
    invite4b36df62

    Re : envoyer un string via RS232

    Citation Envoyé par DAUDET78 Voir le message
    non, 0x13 est le code ASCII de la touche "Entrée" ou "Enter"
    Merci , alors j'ai pas bien compris au début. Et s'il vous plait quelle est l'utilité du TIMEOUT?

  10. #9
    invite6c0678ae

    Re : envoyer un string via RS232

    Citation Envoyé par DAUDET78 Voir le message
    non, 0x13 est le code ASCII de la touche "Entrée" ou "Enter"
    Le code ASCII pour enter ne serait pas plutôt 0x0A(new line) et 0x0D (carriage return) ?
    13 correspond bien au retour chariot mais en décimale.

  11. #10
    invitee05a3fcc

    Re : envoyer un string via RS232

    Citation Envoyé par fignon Voir le message
    Le code ASCII pour enter ne serait pas plutôt 0x0A(new line) et 0x0D (carriage return) ?
    Errare Humanum est ..... je me suis planté .... une erreur de débutant!
    "enter" = 0x0D (13 en décimal)
    "LF" = 0x0A (10 en décimal)

  12. #11
    Jack
    Modérateur

    Re : envoyer un string via RS232

    Citation Envoyé par DAUDET78 Voir le message
    ne connaissant rien en C, je n'ai pas analysé le code.
    Cette méthode est seulement valable si, dans la chaine de DATA, le code 0x13 ne peux pas exister. Donc la chaine de DATA doit être en octet HEXA codé en ASCII de 0x30 à 0x39 et 0x41 à 0x46 (et non binaire). De plus en commençant par un "LF" (code 0x0A) il est facile de détecter le début d'une trame
    En principe on procède plutôt de manière inverse: Les valeurs numériques sont codées en ASCII, ce qui permet d'intercepter tous les codes tels que CR, LF, etc.


    Pour faffou: où est-il fait référence à une variable TIMEOUT?

    A+

  13. #12
    invite4b36df62

    Re : envoyer un string via RS232

    Salut Jack,
    TIMEOUT est dans la cofiguration du RS232 c'est la proposition de Carcan mais je ne comprends pas son utilité.
    De plus je ne comprends plus est ce que pour terminer la transmission j'écrit 13 avec mon clavier ou 'appuis sur entrée
    s'il vous plait soyez plus claire car je suis vraiment débudante en C.
    Et merci.

  14. #13
    invitee05a3fcc

    Re : envoyer un string via RS232

    Tu appuis sur "entrée"

  15. #14
    invite4b36df62

    Re : envoyer un string via RS232

    Citation Envoyé par DAUDET78 Voir le message
    Tu appuis sur "entrée"
    merci pour tra réponse. Mais vous n'avez pas d'idée sur timeout?

  16. #15
    invitee05a3fcc

    Re : envoyer un string via RS232

    Tu pourras remarquer que je n'interviens jamais dans un soft ... je ne suis qu'un vieux pôvre électronicien borné.

  17. #16
    invite4b36df62

    Smile Re : envoyer un string via RS232

    Citation Envoyé par DAUDET78 Voir le message
    Tu pourras remarquer que je n'interviens jamais dans un soft ... je ne suis qu'un vieux pôvre électronicien borné.
    Merci beaucoup dans tout les cas

  18. #17
    invite6c0678ae

    Re : envoyer un string via RS232

    Voila comment je procède :
    Dans l'interruption de réception de caractère, je vais lire directement RCREG (registre ou le caractère entrant est arrivé) puis je le renvoie directement par la liaison série (printf("%c", char_recu)) pour vérifier que la liaison fonctionne bien.
    Ensuite tu stockes tes caractères dans ton buffer en incrémentant l'indice du buffer à CHAQUE interruption.
    Tu appuies sur"entrée" pour terminer la chaine : pour cela tu écrit '\0' dans le buffer sur reception de 0X0A (ou 0x0D). Ici, il faut aussi initialiser ton indice de buffer. Tu peux à ce moment lever un flag pour traiter le contenue de ton buffer.

  19. #18
    carcan

    Re : envoyer un string via RS232

    Hello !

    le Timeout permet d'éviter de bloquer le pic (qu'il soit en attente infinie du caractère de fin de trame), Timeout=1000 spécifie 1 seconde.
    Sur mes applications, ça marche bien, peut-être as tu une version différente du compilateur CCS qui ne comprend pas cette info. De toute façon, c'est un petit plus, tu peux retirer ce paramétrage et ça fonctionnera quand même.

    Voici, pour info, un exemple de communication entre un PIC et un PC.
    Le protocole est le suivant :
    - 1 caractère start (=0x02)
    - 1 caractère adresse (j'ai plusieurs PICs sur un bus RS485, l'adresse de chaque PIC est définie par des switches sur un port du PIC
    - 1 caractère end (=0x03)
    - 1 caractère "instruction" (action propre à mon application)
    - 1 caractère "valeur" (action propre à mon application)

    le PIC répond en fonction de l'instruction demandée.
    Code:
    #int_RDA
    void RDA_isr()
    {
       BYTE i; 
       
       //Detection caractere start
       if (getchar()==0x02)
       {
        if (getchar() == Adress)
        {
         output_bit(PIN_A5,1);//LED ON
         Byte1 = getchar();
         Byte2 = getchar();
         if (getchar()==0x03)
         {  
          output_bit(PIN_C0,1);//TALKER
          restart_wdt();
          switch (Byte1)
          {
           case 20:  set_tris_B(Byte2);
                     write_eeprom(1,Byte2);
                     printf("!\r\n");
                     break;
           case 21:  printf ("%u\r\n",(unsigned int8)get_tris_B());
                     break;
           case 22:  WritePort(Byte2,get_tris_B());
                     printf("!\r\n");
                     break;
           case 23:  printf ("%u\r\n",ReadPort());      
                     break;
           case 24:  if (byte2) port_b_pullups(TRUE);
                     else       port_b_pullups(FALSE);
                     write_eeprom(3,Byte2&1);
                     printf("!\r\n");
                     break;
           case 25:  write_eeprom(2,Byte2);
                     printf("!\r\n");
                     break;
           case 26:  printf ("%u\r\n",(unsigned int8)read_eeprom(2));
                     break;           
                     
           case 30:  Test = Byte2&1;
                     printf("!\r\n");
                     break;   
           case 31:  printf("%d\r\n",Restarted);
                     Restarted = 0;
                     break;            
              
           case 40:  printf ("%Ld\r\n",ADC_Data[0]);
                     break;
           case 41:  printf ("%Ld\r\n",ADC_Data[1]);
                     break;
           case 42:  printf ("%Ld\r\n",ADC_Data[2]);
                     break;
           case 43:  printf ("%Ld\r\n",ADC_Data[3]);
                     break;
           case 44:  printf ("%Ld\r\n",ADC_Data[4]);
                     break;
           case 45:  printf ("%Ld\r\n",ADC_Data[5]);
                     break;
           case 46:  printf ("%Ld\r\n",ADC_Data[6]);
                     break;
           case 47:  printf ("%Ld\r\n",ADC_Data[7]);
                     break;
           case 48:  printf ("%Ld\r\n",ADC_Data[8]);
                     break;
           case 49:  printf ("%Ld\r\n",ADC_Data[9]);
                     break;
           case 50:  printf ("%Ld\r\n",ADC_Data[10]);
                     break;
           case 51:  printf ("%Ld\r\n",ADC_Data[11]);
                     break;
           case 52:  printf ("%Ld\r\n",ADC_Data[12]);
                     break;
           case 53:  printf ("%Ld\r\n",ADC_Data[13]);
                     break;
           case 54:  printf ("%Ld\r\n",ADC_Data[14]);
                     break;
           case 55:  printf ("%Ld\r\n",ADC_Data[15]);
                     break;
           case 63:  printf ("?\r\n"); 
                     break;
           default:  printf ("E\r\n");
                     break;          
                     
          }
          putc(10);
          putc(13);
          output_bit(PIN_C0,0);//LISTEN MODE
         }
         output_bit(PIN_A5,0);//LED OFF
        } 
       }
       else while(kbhit()) getchar();
    }
    Bonne soirée
    Laurent

  20. #19
    invite4b36df62

    Smile Re : envoyer un string via RS232

    Salut,
    merci beaucoup Laurent, c'est très gentil. Désolé je n'ai pas encore essayé ton code sur mon PIc je suis débordée du travail et je n'ai pas pu aller au labo mais promis demain je vous informe si tout va bien ou non.
    merci à vous tous pour votre aide.

  21. #20
    invite4b36df62

    Exclamation Re : envoyer un string via RS232

    salut à tous
    le programme fonctionne très bien sur mon moteur merci bien.
    mai s mon problème c que j'ai voulu utiliser la même méthode pour envoyer à mon moteur l'angle qu'il doit faire mais je ne comprends pas pourquoi mon moteur tourne toujours dés que j'alimente mo, circuit et ne s'arrête pas . voilà mon code si vous pouvez voir ma faute:
    Code:
    #include<16F877.h>
    #fuses HS,XT,NOWDT,NOPROTECT
    #use delay(clock=4000000)
    #include <stdlib.h>
    #include <string.h>
    #include <math.h>
    #include <stdio.h>
    #use RS232 (baud=9600, Xmit=PIN_C6, Rcv=PIN_C7) //includes the rs232 libraries
    #define BUFFER_SIZE 32
    
    BYTE buffer[BUFFER_SIZE];
    BYTE next_in = 0;
    long teta;
    #INT_RDA
    void serial_interrupt ( )
    {
    int check;
       do
       {
       buffer[next_in]=getc();
       check = buffer[next_in];
       next_in=(next_in+1) % BUFFER_SIZE;
       }
       while(check!=13 & check!=0);//13 = end of transmission
       							   //00 = timeout
    teta = atol(buffer);//convertir la chaine de caractère en un entier de 16 bits
    next_in = 0;
    }
    main(){
    
    //int duty= 220;
    
    float angle;
    long teta1=50;
    int diff;
    int value=0;
    
    enable_interrupts(GLOBAL);  //activation de sinterruption
    enable_interrupts(INT_RDA);  //interrupt fires when the receive data is available, RS232 ON
    
    
    
    setup_timer_2(T2_DIV_BY_1,255,1); //génération du PWM
    setup_ccp1(CCP_PWM);
    Set_pwm1_DUTY(0);
    
    input(PIN_A4);
    diff=teta - teta1;  // comparer la position actuelle à celle désirée
    if (diff>0)
       output_high(PIN_B1);  //rotation dans le 1er sens
    if (diff<0)
       output_low(PIN_B1);   //rotation dans le 2ème sens
    
    if (diff=0)
       Set_pwm1_DUTY(0);   //arrêt donc maintenir la positionn actuelle
    
    
    
    
    setup_counters(RTCC_EXT_L_TO_H,WDT_18MS); //utiliser timer0 en mode compteur
    set_timer0(0);
    
    
    do{
    set_pwm1_duty(200);  // moteur en marche
    value=get_timer0(); //nombre d'impulsions
    angle=value*3.6;   // position atteinte
    teta1 = ceil (angle);
    }while(teta1<=diff);
    //teta1=teta; //mémorisation de la position
    
    
    
    }//fin du programme
    merci.

  22. #21
    carcan

    Re : envoyer un string via RS232

    Hello !

    plusieurs remarques sur le bout de code ci dessous :

    Code:
    input(PIN_A4);
    diff=teta - teta1;  // comparer la position actuelle à celle désirée
    if (diff>0)
       output_high(PIN_B1);  //rotation dans le 1er sens
    if (diff<0)
       output_low(PIN_B1);   //rotation dans le 2ème sens
    
    if (diff=0)
       Set_pwm1_DUTY(0);   //arrêt donc maintenir la positionn actuelle
    - à l'avant dernière ligne : if (diff==0) ... il faut 2 "="
    - je pense que cet ensemble de conditions doit être dans la boucle principale ou je me trompe ?
    - input(PIN_A4); il te manque qqch non ? il faut bien mettre le résultat qq part.

    Apparemment tu avances bien !
    Courage et bon wee-end !
    Laurent

  23. #22
    invite4b36df62

    Smile Re : envoyer un string via RS232

    merci bien Laurent voous ête très gentil.
    la ppin RA4 c'est pour le compteur d'impulsion sur le timer 0.
    mais je me demande pourquoi puisque au début du programme je met duty à 0 comment mon moteur tourne?
    est ce que vous avez une idée.
    ah, de plus j'utilise L298 pour commander le moteur.

  24. #23
    carcan

    Re : envoyer un string via RS232

    Re !

    il tourne parce que tu le mets en route au début de ta boucle :
    set_pwm1_duty(200); // moteur en marche

    et puis après cette ligne il n'y a plus aucune instruction qui modifie le rapport cyclique.

    Tu dois revoir la boucle principale de ton programme et la commande du pwm, je pense que tu devrais avoir un truc du genre :
    set_pwm1_duty(vitesse); // controle moteur
    avec vitesse le résultat d'un calcul ou d'une série de conditions.

    A+
    Laurent

  25. #24
    invite4b36df62

    Re : envoyer un string via RS232

    salut,
    et la condition de while n'a aucun effet je veux qu'il tourne juste pour arriver à la position désirée . Donc je rajoute duty à 0 a la sortie du boucle?
    merci

  26. #25
    carcan

    Re : envoyer un string via RS232

    Re !

    en fait, tu dois avoir une boucle sans condition pour que ton programme fasse un contrôle en continu de la position, sinon quand il arrive à la fin du programme il ne fait plus rien jusqu'à ce que tu fasses un reset du µP.

    A+
    Laurent

  27. #26
    invite4b36df62

    Re : envoyer un string via RS232

    salut,
    mais ma condition est pour vérifier si je suis arriver ou non à la position désirée puis mon moteur s'arrête.
    ce que j'ai voulu faire que ma carte soit en alimentation continu et si j'envoie une nouvelle angle sur le port série mon moteur agit par rapport à la position acctuelle pour atteindre celle désirée puis s'arrête.
    j'utilise le moteur de parabole ou on trouve un sensor qui donne 5 impulsions par tours qui est l'entrée sur RA4.
    J'espère que c'est plus claire car je n'ai pas bien compris ta proposition et merci.

  28. #27
    carcan

    Re : envoyer un string via RS232

    Re !

    donc les conditions ci dessous doivent être dans une boucle, comme tu l'as écrit elles ne sont exécutées qu'une seule fois !

    Code:
    diff=teta - teta1;  // comparer la position actuelle à celle désirée
    if (diff>0)
       output_high(PIN_B1);  //rotation dans le 1er sens
    if (diff<0)
       output_low(PIN_B1);   //rotation dans le 2ème sens
    
    if (diff=0)
       Set_pwm1_DUTY(0);   //arrêt donc maintenir la positionn actuelle
    J'arrête pour aujourd'hui, je n'arrive plus trop à comprendre le programme, ... Essaye de modifier ta boucle principale, il doit y avoir dans ton programme une boucle sans fin style :
    while (TRUE)
    {
    ...
    }
    pour que le programme contrôle indéfiniment la position de ton moteur.
    A bientôt
    Laurent

  29. #28
    invite4b36df62

    Re : envoyer un string via RS232

    ok merci et désolé si je t'ai dérangé
    merci

  30. #29
    invite4b36df62

    Question Re : envoyer un string via RS232

    salut
    j'ai essayer aujourd'hui ce code le moteur ne tourne plus qu'on j'alimente mais aussi ne toune pas quand j'envoie la valeur de teta je ne comprends pas ou est ma faute
    Code:
    #include<16F877.h>
    #fuses HS,XT,NOWDT,NOPROTECT
    #use delay(clock=4000000)
    #include <stdlib.h>
    #include <string.h>
    #include <math.h>
    #include <stdio.h>
    #use RS232 (baud=9600, Xmit=PIN_C6, Rcv=PIN_C7) //includes the rs232 libraries
    #define BUFFER_SIZE 32
    
    BYTE buffer[BUFFER_SIZE];
    BYTE next_in = 0;
    long teta;
    float angle;
    long teta1=30;
    int diff;
    int value=0;
    
    void rotation (long teta)
    {
    
    input(PIN_A4);
    
    setup_counters(RTCC_EXT_L_TO_H,WDT_18MS); //utiliser timer0 en mode compteur
    set_timer0(0);
    
    
    diff=teta - teta1;  // comparer la position actuelle à celle désirée
    
    if (diff>0)
       output_high(PIN_B1);  //rotation dans le 1er sens
    if (diff<0)
       output_low(PIN_B1);   //rotation dans le 2ème sens
    
    if (diff=0)
       Set_pwm1_DUTY(0);   //arrêt donc maintenir la positionn actuelle
    do{
    set_pwm1_duty(255);  // moteur en marche
    value=get_timer0(); //nombre d'impulsions
    angle=value*3.6;   // position atteinte
    teta1 = ceil (angle);
    }while(teta1<=diff);
    write_eeprom(1,teta);   //teta1=teta; //mémorisation de la position
    }
    
    #INT_RDA
    void serial_interrupt ( )
    {
    int check;
       do
       {
       buffer[next_in]=getc();
       check = buffer[next_in];
       next_in=(next_in+1) % BUFFER_SIZE;
       }
       while(check!=13 & check!=0);//13 = end of transmission
       							   //00 = timeout
    teta = atol(buffer);//convertir la chaine de caractère en un entier de 16 bits
    rotation(teta);
    next_in = 0;
    }
    
    
    main(){
    
    //int duty= 220;
    
    
    teta1= read_EEPROM (1);
    enable_interrupts(GLOBAL);  //activation de sinterruption
    enable_interrupts(INT_RDA);  //interrupt fires when the receive data is available, RS232 ON
    
    
    
    setup_timer_2(T2_DIV_BY_1,255,1); //génération du PWM
    setup_ccp1(CCP_PWM);
    Set_pwm1_DUTY(0);
    
    
    
    }//fin du programme
    :
    s'il vous plait

Discussions similaires

  1. Envoyer des informations sur le net depuis un carte rs232/wifi (automate)
    Par invitee739de59 dans le forum Matériel - Hardware
    Réponses: 5
    Dernier message: 23/04/2014, 00h21
  2. Réponses: 1
    Dernier message: 31/03/2009, 09h45
  3. VB envoyer des données avec le rs232
    Par invite00043ad3 dans le forum Électronique
    Réponses: 31
    Dernier message: 07/03/2008, 18h01
  4. String c
    Par invitea121f130 dans le forum Logiciel - Software - Open Source
    Réponses: 7
    Dernier message: 13/03/2007, 06h11
  5. cosmic string
    Par invite73114de8 dans le forum Archives
    Réponses: 11
    Dernier message: 01/02/2006, 13h37
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...