Discussion: Envoi trames Modbus

  1. #1
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    avril 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : avril 2017
    Messages : 6
    Points : 4
    Points
    4

    Par défaut Envoi trames Modbus

    Bonjour ,

    j'ai un petit probleme (enfin petit ^^..) je suis en en terminal Bts sn et pour mon projet de fin d'année je travail sur une machine industriel Festo est je dois automatiser une partie de cette chaine de distribution,donc j'ai des tram modbus a envoyer via un client Tcp .

    Ça fait un petit moment que je travail sur ce projet, je vous avoue que je suis nul en programmation et je suis un peu bloquer,au début j’ai commencé a coder un peu n’importe comment sauf que mon enseignent ma conseiller de faire sa avec des fonction.

    J'ai réussi a faire plus au moins des fonction sauf que je suis bloquer juste sur la partie d'envois de donné Modbus.voici quelque explication :

    En gros j'ai des tram qui contient des information sur les actionneur et puis des tram qui contient des information sur des capteurs(capteur de de détection de pièce etc..).

    un exemple de tram (actionneur) :

    Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
     unsigned char trameModbus[12]= {0x6c ,0x1f, 0x00, 0x00, 0x00, 0x06, 0xff, 0x06,0x9c,0x42,0x00,0x01};

    0x6c ,0x1f, 0x00, 0x00, 0x00, 0x06, 0xff, 0x06, cette partie est identique pour toute les trame Modbus.

    0x9c,0x42 : c'est l'adresse de modbus.


    0x00,0x01 : les donné qui permet de faire une action sur la machine .

    PS:vu que je suis en vacance j'utilise un logiciel de simulator modbus pour les tram modbus.


    Quand j'essaye de compliquer j'ai les erreur suivent :

    ||=== Build: Debug in maitreModbus (compiler: GNU GCC Compiler) ===|
    C:\Users\Hoime\Desktop\maitreModbus\main.c||In function 'main'
    C:\Users\Hoime\Desktop\maitreModbus\main.c|123|warning: passing argument 2 of 'ecritureModbus' makes pointer from integer without a cast|
    C:\Users\Hoime\Desktop\maitreModbus\main.c|93|note: expected 'unsigned char *' but argument is of type 'int'|
    C:\Users\Hoime\Desktop\maitreModbus\main.c|10|warning: passing argument 3 of 'ecritureModbus' makes pointer from integer without a cast|
    C:\Users\Hoime\Desktop\maitreModbus\main.c|123|note: in expansion of macro 'EJECTION_PIECE'|
    C:\Users\Hoime\Desktop\maitreModbus\main.c|93|note: expected 'unsigned char *' but argument is of type 'int'|
    ||error: ld returned 1 exit status|
    ||=== Build failed: 1 error(s), 2 warning(s) (0 minute(s), 0 second(s)) ===|
    Je suis un peu bloquer est j'aimerais bien avoir votre aide pour terminer mon projet .

    voici Mon code :

    Code c : 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
      /*************    BIBIOTHEQUE   *********************/
            #include <winsock2.h>
            #include <windows.h>
            #include <stdio.h>
            #include <conio.h>
            #include <unistd.h>
            /*************      SORTIES   ***********************/
            #define EJECTION_PIECE                0x01   // bit 0
            #define ASPIRATION_ON                 0x02   // bit 1
            #define EXPULSION_VENTOUSE            0x04   // bit 2
            #define BRAS_POSITION_MAGASIN         0x08   // bit 3
            #define BRAS_POSITION_MODULE_CONTROLE 0x10   // bit 4
            /*************     ENTREES   ************************/
            #define NON_DISPONIBLE                 0x01  // bit 0   1   1
            #define EJECTION_PIECE_RETRACTE        0x02  // bit 1   1   0
            #define EJECTION_PIECE_AVANCE          0x04  // bit 2   0   1
            #define ASPIRATION_ON1                 0x08  // bit 3   0   0
            #define BRAS_POSITION_MAGASINC         0x10  // bit 4   0   0
            #define BRAS_POSITION_MODULE_CONTROLEC 0x20  // bit 5   0   0
            #define RESERVE_PIECE_VIDE             0x40  // bit 6   1   0
            #define ASPIRATION_OFF                 0x80  // bit 7   1   1
            SOCKET id_de_la_socket;
            int nombre_de_caractere;
            SOCKET configurationTCP(char ip[])
            {
                SOCKET id_de_la_socket;
                WSADATA initialisation_win32; /// Variable pour récupérer la structure d'information sur l'initialisation
                int erreur;
                SOCKADDR_IN info_Trame; // la structure pour serveur
                printf("\n  programme client tcp\n");
                erreur=WSAStartup(MAKEWORD(2,2),&initialisation_win32);
                if (erreur!=0)
                    printf("\n impossible d'initialiser Winsock  : %d %d",erreur,WSAGetLastError());
                else
                    printf("\n WSAStartup  réussi ");
                // Ouverture d'une Socket
                id_de_la_socket=socket(AF_INET,SOCK_STREAM,0);
                printf("id socket =%d\n",id_de_la_socket);
                if (id_de_la_socket==INVALID_SOCKET)
                    printf("\n impossible de creer la socket  : %d ",WSAGetLastError());
                else
                    printf("\n socket valider \n ");
                // OUVERTURE DE SESSION TCP
                info_Trame.sin_family=AF_INET;
                info_Trame.sin_addr.s_addr=inet_addr(ip);
                info_Trame.sin_port = htons(502);
                erreur=connect(id_de_la_socket,(struct sockaddr*)&info_Trame,sizeof(info_Trame));
                if (erreur!=0)
                    printf("\n impossible d'ouvrir la session TCP : %d %d",erreur,WSAGetLastError());
                else
                    printf("\n OUVERTURE DE SESSION TCP : OK \n ");
                return id_de_la_socket;
            }
            void fermetureTCP(SOCKET id_de_la_socket)
            {
                int erreur;
                erreur=shutdown(id_de_la_socket,2); // 2 signifie socket d'émission et d'écoute
                if (erreur!=0)
                    printf("\n Desole, je ne peux pas fermer la session TCP du a l'erreur : %d %d",erreur,WSAGetLastError());
                else
                    printf("\n Session TCP : Arreter \n ");
                // FERMETURE DE LA SOCKET
                erreur=closesocket(id_de_la_socket);
                if (erreur!=0)
                    printf("\n Desole, je ne peux pas arreter la socket machine du a l'erreur : %d %d",erreur,WSAGetLastError());
                else
                    printf("\n Socket machin : Arreter \n");
                // Fermeture de WSAStartup
                erreur=WSACleanup();
                if (erreur!=0)
                    printf("\n Desole, je ne peux pas liberer winsock du a l'erreur : %d %d",erreur,WSAGetLastError());
                else
                    printf("\n WSACleanup : Arreter \n");
                getchar();
            }
            void ecritureModbus(SOCKET id_de_la_socket, unsigned char adresse[], unsigned char donnees[])    //Tram pour les actionneur
            {
            unsigned char trameModbus[12]= {0x6c ,0x1f, 0x00, 0x00, 0x00, 0x06, 0xff, 0x06};
            nombre_de_caractere=send(id_de_la_socket,(char *)trameModbus,12,0);
            }
            /*
            unsigned char lectureModbus( SOCKET id, unsigned char adresse[], unsigned char donnees[] )       //Tram pour les capteur
     
            {
                return 'c';
            }
            */
            int main()
            {
                SOCKET id_de_la_socket;
                unsigned char sorties=0x00;
                id_de_la_socket=configurationTCP("127.0.0.1");
                printf("ici");
                sorties=EJECTION_PIECE^sorties;
                ecritureModbus(id_de_la_socket,&0x9c42,EJECTION_PIECE);
     
                fermetureTCP(id_de_la_socket);
                return 0;
            }
    Merci d'avance .

  2. #2
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    mai 2010
    Messages
    2 025
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : mai 2010
    Messages : 2 025
    Points : 5 614
    Points
    5 614

    Par défaut

    je ne sais pas si c'est un probleme de l'embarquée vu que tu as '#include <windows.h>' , enfin bref.

    Les erreurs sont explicite il faut savoir les lires...

    C:\Users\Hoime\Desktop\maitreModbus\main.c|123|warning: passing argument 2 of 'ecritureModbus' makes pointer from integer without a cast|
    Ton code source doit pas être exactement le même vu ce que tu nous a donné parce que il n'y a pas de ligne 123



    La déclaration/fonction est écrite de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     void ecritureModbus(SOCKET id_de_la_socket, unsigned char adresse[], unsigned char donnees[])    //Tram pour les actionneur
            {
            unsigned char trameModbus[12]= {0x6c ,0x1f, 0x00, 0x00, 0x00, 0x06, 0xff, 0x06};
            nombre_de_caractere=send(id_de_la_socket,(char *)trameModbus,12,0);
            }
    Le souci vient des arguments , tu met ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ecritureModbus(id_de_la_socket,&0x9c42,EJECTION_PIECE);
    il a 2 souci :
    1)&0x9c42 , si tu veux donné une adresse brut il faut plus l'écrire de cette façon (char *)0x9c42 , le souci c'est que si le programme tourne sur un OS c'est le segfault assuré , par contre évite les nombres magic ,0x9c42 on sait absolument pas ce que c'est , si c'est un I/O faut lui donné un nom même en assembleur je donne des nom au I/O .
    2),EJECTION_PIECE = 0X01 , alors qu'il attend un tableau de char....

    Vu que ta fonction ecritureModbus n'utilise ni comme argument adresse , ni données , je les enlèverais.

  3. #3
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    avril 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : avril 2017
    Messages : 6
    Points : 4
    Points
    4

    Par défaut

    Salut merci pour ta réponse ,depuis j'ai un peu avancer .. est j'ai résolu le probleme des erreurs , pour mieux t'aider à comprendre mon programme ,0x9c ,0x42 c'est l'adresse de la machine industrielle , j'utilise la fonction 6 pour les actionneurs ,et puis fonction 3 pour les capteurs .Maintenant il me reste juste a faire une fonctionne qui test les capteurs pour savoir si il sont a 1 ou à 0 pour que je puise utiliser mon algo mais franchement je sais pas comment m'y prendre .
    sa c'est mon algorithme plus au moins
    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
    recevoir données reserve de pièces
    si réserve de piéces != vide
    	recevoir données bras position magasin
    	si bras position magasin == vraie
    		actionner bras position module
    		faire
    			recevoir données bras position module
    		tant que bras position magasin != vraie
    	fin si
    	
    	recevoir données ejection pièces avancées
    	si ejection de pièces avancé == vraie
    		actionner ejection de pièces
    		faire
    			recevoir données ejection pièces reculé
    		tant que ejection pièces reculé != vraie
    	fin si
    	
    	actionner ejection de pièces
    	faire
    		recevoir données ejection pièces avancé
    	tant que ejection de pièces avancé != vraie
    	
    	recevoir données aspiration off
    	si aspiration off == faux
    		désactiver aspiration
    		faire
    			recevoir données aspiration off
    		tant que aspiration off == faux
    	fin si
    	
    	activer bras
    	faire
    		recevoir données bras position magasin
    	tant que bras position magasin == faux 
    	
    	activer aspiration
    	faire
    		recevoir données aspiration on
    	tant que aspiration on == faux
    	
    	activer bras
    	faire
    		recevoir données position bras module
    	tant que position bras module == faux
    	
    	desactiver aspiration
    	faire
    		recevoir données aspiration off
    	tant que aspiration off == faux
    	
    	activer bras
    		faire recevoir données bras position magasin
    	tant que bras position magasin == faux
    fin si

    sa c'est le code depuis que j'ai résolu le probleme :

    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
    /*************    BIBIOTHEQUE   *********************/
    #include <winsock2.h>
    #include <windows.h>
    #include <stdio.h>
    #include <conio.h>
    #include <unistd.h>
    
    
    /*************      SORTIES   ***********************/
    #define EJECTION_PIECE                                   0x01   // bit 0
    #define ASPIRATION_ONA                                 0x02   // bit 1
    #define EXPULSION_VENTOUSE                         0x04   // bit 2
    #define BRAS_POSITION_MAGASINA                  0x08   // bit 3
    #define BRAS_POSITION_MODULE_CONTROLEA  0x10   // bit 4
    
    /*************     ENTREES   ************************/
    #define NON_DISPONIBLE                                   0x01  // bit 0   1   1
    #define EJECTION_PIECE_RETRACTE                   0x02  // bit 1   1   0
    #define EJECTION_PIECE_AVANCE                       0x04  // bit 2   0   1
    #define ASPIRATION_ON                                    0x08  // bit 3   0   0
    #define BRAS_POSITION_MAGASIN                     0x10  // bit 4   0   0
    #define BRAS_POSITION_MODULE_CONTROLE     0x20  // bit 5   0   0
    #define RESERVE_PIECE_VIDE                            0x40  // bit 6   1   0
    #define ASPIRATION_OFF                                  0x80  // bit 7   1   1
    
    SOCKET id_de_la_socket;
    int nombre_de_caractere;
    int nombre_de_caractere_recu ;
    char buffer[50];
    unsigned char sorties=0x00;
    
    SOCKET configurationTCP(char ip[])
    {
        SOCKET id_de_la_socket;
    
        WSADATA initialisation_win32; /// Variable pour récupérer la structure d'information sur l'initialisation
        int erreur;
        SOCKADDR_IN info_Trame; // la structure pour serveur
    
        printf("programme client tcp\n");
    
        erreur=WSAStartup(MAKEWORD(2,2),&initialisation_win32);
        if (erreur!=0)
            printf("\n impossible d'initialiser Winsock  : %d %d",erreur,WSAGetLastError());
        else
            printf("\n WSAStartup  réussi ");
    
        // Ouverture d'une Socket
        //id_de_la_socket=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);   /// Ouverture d'une Socket
        id_de_la_socket=socket(AF_INET,SOCK_STREAM,0);
        printf("id socket =%d\n",id_de_la_socket);
        if (id_de_la_socket==INVALID_SOCKET)
            printf("\n impossible de creer la socket  : %d ",WSAGetLastError());
        else
            printf("\n socket valider \n ");
    
        // OUVERTURE DE SESSION TCP
        info_Trame.sin_family=AF_INET;
        info_Trame.sin_addr.s_addr=inet_addr(ip);
        info_Trame.sin_port = htons(502);
        erreur=connect(id_de_la_socket,(struct sockaddr*)&info_Trame,sizeof(info_Trame));
        if (erreur!=0)
            printf("\n impossible d'ouvrir la session TCP : %d %d",erreur,WSAGetLastError());
        else
            printf("\n OUVERTURE DE SESSION TCP : OK \n ");
        return id_de_la_socket;
    }
    
    void fermetureTCP(SOCKET id_de_la_socket)
    {
        int erreur;
    
    
        erreur=shutdown(id_de_la_socket,2); // 2 signifie socket d'émission et d'écoute
        if (erreur!=0)
            printf("\n Desole, je ne peux pas fermer la session TCP du a l'erreur : %d %d",erreur,WSAGetLastError());
        else
            printf("\n Session TCP : Arreter \n ");
    
        // FERMETURE DE LA SOCKET
        erreur=closesocket(id_de_la_socket);
        if (erreur!=0)
            printf("\n Desole, je ne peux pas arreter la socket machine du a l'erreur : %d %d",erreur,WSAGetLastError());
        else
            printf("\n Socket machin : Arreter \n");
    
        // Fermeture de WSAStartup
    
        erreur=WSACleanup();
        if (erreur!=0)
            printf("\n Desole, je ne peux pas liberer winsock du a l'erreur : %d %d",erreur,WSAGetLastError());
        else
            printf("\n WSACleanup : OK \n");
    
        getchar();
    }
    
    
    
    void ecritureModbus(unsigned char donnees1, unsigned char donnees2)
    {
        unsigned char trameModbus[12]= {0x6c ,0x1f, 0x00, 0x00, 0x00, 0x06, 0xff, 0x06,0x9c,0x42};
    
        trameModbus[10] = donnees1;
        trameModbus[11] = donnees2;
    
        nombre_de_caractere=send(id_de_la_socket,(unsigned char *)trameModbus,12,0);
        if (nombre_de_caractere==SOCKET_ERROR)
            printf("\nDesole, je n'ai pas envoyer les donnees du a l'erreur : %d",WSAGetLastError());
        else
            printf("\nsend trame     : OK");
    
    
        nombre_de_caractere_recu=recv(id_de_la_socket,buffer,12,0);
        if (nombre_de_caractere_recu==SOCKET_ERROR)
            printf("\n Desole, je n'ai pas recu de donnee de la trame ");
        else
        {
            buffer[nombre_de_caractere_recu]=0;
            printf("\n Voici les donnees de la trame  : %s",buffer);
        }
    
       /* nombre_de_caractere_envoi=send(id_de_la_socket,trameModbus,strlen(trameModbus),0);  // partie envois supoervisuer
        if (nombre_de_caractere_envoi==SOCKET_ERROR)
            printf("\nDesole, je n'ai pas envoyer les donnees du a l'erreur : %d",WSAGetLastError());
        else
        {
            printf("\nsend donnee dams    : OK : %d\n",nombre_de_caractere_envoi);
        }
    */
    
    }
    
    
    /*unsigned char lectureModbus(unsigned char adresse, unsigned char donnees )
    
    {
    
    
    //unsigned char capteur []= {0x6a ,0x99, 0x00, 0x00, 0x00, 0x05, 0xff, 0x03};
    
     //nombre_de_caractere_recu6=recv(id_de_la_socket,buffer6,01,0);
        return 'c';
    }
    */
    
    int main()
    {
    
        id_de_la_socket=configurationTCP("127.0.0.1");
    
    
        sorties=ASPIRATION_ONA^sorties;
        ecritureModbus((unsigned char)0x00,(unsigned char)ASPIRATION_ONA);
    
        sorties=EXPULSION_VENTOUSE^sorties;
        ecritureModbus((unsigned char)0x00,(unsigned char)EXPULSION_VENTOUSE);
    
    
    
        sorties=BRAS_POSITION_MAGASINA^sorties;
        ecritureModbus((unsigned char)0x00,(unsigned char)BRAS_POSITION_MAGASINA);
    
    
    
        fermetureTCP(id_de_la_socket);
        return 0;
    }
    et sa c'est l'adresse des capteur et je dois d'abord les testé

    ils sont dans les tram modbus de type :

    unsigned char trameModbus[12]= {0x6c ,0x1f, 0x00, 0x00, 0x00, 0x03, 0xff, 0x03,0x9c,0x42,0x00,0x1};

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #define NON_DISPONIBLE                           0x01  // bit 0   1   1
    #define EJECTION_PIECE_RETRACTE             0x02  // bit 1   1   0
    #define EJECTION_PIECE_AVANCE                0x04  // bit 2   0   1
    #define ASPIRATION_ON                             0x08  // bit 3   0   0
    #define BRAS_POSITION_MAGASIN               0x10  // bit 4   0   0
    #define BRAS_POSITION_MODULE_CONTROLE 0x20  // bit 5   0   0
    #define RESERVE_PIECE_VIDE                      0x40  // bit 6   1   0
    #define ASPIRATION_OFF                            0x80  // bit 7   1   1

  4. #4
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    mai 2010
    Messages
    2 025
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : mai 2010
    Messages : 2 025
    Points : 5 614
    Points
    5 614

    Par défaut

    Je n'ai pas forcément envie de comprendre tout ton programme
    Ce que tu dis est moyennement compréhensible avec fonction 6 , fonction 3 etc...

    Maintenant il me reste juste a faire une fonctionne qui test les capteurs pour savoir si il sont a 1 ou à 0 pour que je puise utiliser mon algo mais franchement je sais pas comment m'y prendre
    Si c'est ta question , alors tu peux utilier '&' qui signifie ET pour test si ta variable est a 1 ou 0 par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(capteur &0x01)
    {
        //mon code
    }

Discussions similaires

  1. [Objective-C] Composition et Envoi de Trame Modbus
    Par giroquoi dans le forum Objective-C
    Réponses: 4
    Dernier message: 21/06/2012, 09h16
  2. reception trame MODBUS TCP
    Par koukou11 dans le forum Réseau
    Réponses: 0
    Dernier message: 21/05/2011, 19h31
  3. Envoie trame vers un serveur
    Par fishingman dans le forum Développement
    Réponses: 3
    Dernier message: 29/09/2010, 17h29
  4. envoie trame tcp
    Par lyna29 dans le forum Autres
    Réponses: 0
    Dernier message: 21/07/2009, 16h08
  5. Reception trame et envoi trame pour liaison rs232
    Par gaetan.tranvouez dans le forum C
    Réponses: 6
    Dernier message: 09/06/2006, 14h50

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