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

C Discussion :

Lire les données d'un port USB en C


Sujet :

C

  1. #1
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 22
    Points : 2
    Points
    2
    Par défaut Lire les données d'un port USB en C
    Bonjour tous le monde je voudrais devellopé une application en C qui me permet de lire les données sur un port USB connecté sur mon PC dans le cadre de mon stage. je suis debutant dans la devllopement alors je voudrais juste avoir une idée sur les étapes a suivre afin de finir mon trravaille le plutot possible(Urgent), des tuto ou une methode de travaille merci. je suis sous linux

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,
    Citation Envoyé par zguingua Voir le message
    je voudrai développer une application en C qui me permette de lire les données sur un port USB [...] je suis sous linux
    libusb est idéale pour travailler avec des périphériques usb en C.

    je suis débutant dans la développement alors je voudrais juste avoir une idée sur les étapes a suivre afin de finir mon travail le plutôt possible
    Je dirai que c'est ton maitre de stage qui est le plus qualifié pour répondre à cette question. Sinon, on peut citer http://emmanuel-delahaye.developpez.com/dev_proj.htm.

  3. #3
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 22
    Points : 2
    Points
    2
    Par défaut
    1=> Mon maitre de stage il est en vacance et du coup j'ai pas beacoup d'aide et merci pour le conseil
    2=> le plus important est que j'arrive a faire mon travail correctement
    sinon revenant aux tuto que vous m'avez donnés ( j'ai une clé usb reconnue par mon pc et j'ai une autre application qui fait fonctionné ma clé, ce que je voudrai faire je lancce cette application qui fait marché ma clé et moi de mon coté je doit devllopé une autre application qui recupere le flux de données qui provient de cette clé voila en resumé j'espere que je suis claire) alors je ne sais pas si libusb me soit d'une grand utilité ou pas sinon y a t'il d'autre fonction qui peuvent fair ça merci

    sinon je voulais savoir quels sont les details de clé usb que je doit connaitre (nom par exemple) qui seront utilisé dans l'application ? je sais que c'est un sujet qui n'est pas facile mais sincérelent j'ai besoin de cette aide merci

  4. #4
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par zguingua Voir le message
    Bonjour tous le monde je voudrais devellopé une application en C qui me permet de lire les données sur un port USB connecté sur mon PC dans le cadre de mon stage. je suis debutant dans la devllopement alors je voudrais juste avoir une idée sur les étapes a suivre afin de finir mon trravaille le plutot possible(Urgent), des tuto ou une methode de travaille merci. je suis sous linux
    Une clé USB est considérée comme un disque externe. Une fois que tu as son nom de disque (regarde dans l'explorateur...), tu y accèdes comme sur n'importe quel disque. Je ne vois pas où est le problème.

    Par exemple data.txt sur clé USB reconnue en tant que disque E:

    FILE *fp = fopen ("E:/data.txt", "r");
    etc.

  5. #5
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 22
    Points : 2
    Points
    2
    Par défaut
    ok merci mais du coup moi je suis sur linux lorsque je fait lsusb<< Bus 004 Device 002: ID 10b8:0066 DiBcom>> voila ce que je reçois comme reponse la c ma clé mais sur le poste de travaille elle ne s'affiche pas(l'icone) alors je dois mettre fp = fopen("Dibcon", "r").

    une autre precision les données que je veux lire ne sont pas stocké dans la clé (dans un fichier) les données que la clé reçoit est un flux et elle est fait sortir dans un flux (reception emission pas de stockage de données dans la memoir de la clé) et normalement fopen est utilisé uniquement pour ouvrire un fichier

    je vous est parlé d'une application qui fait demaré ma clé cette application demarre la clé (reception et emission de flux ( pas de stockage) du coup moi je veux lire ce flux
    1=> je lance ma premiere application elle demare ma clé (actuellement ma clé recoit un flux qui est transmi dirrectement au pc) la tous marche bien
    2=> le j'intervient pour recuperé ce flux (mais comment faire...............)
    la je pense avoir été tres claire
    merci

  6. #6
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par zguingua Voir le message
    je vous est parlé d'une application qui fait demaré ma clé cette application demarre la clé (reception et emission de flux ( pas de stockage) du coup moi je veux lire ce flux
    1=> je lance ma premiere application elle demare ma clé (actuellement ma clé recoit un flux qui est transmi dirrectement au pc) la tous marche bien
    2=> le j'intervient pour recuperé ce flux (mais comment faire...............)
    la je pense avoir été tres claire
    merci
    Alors il faut connaitre le nom du device (/dev/usb...), et le gérer avec les fonctions driver prévues pour ça :

    open(), ioctl(), select(), read(), write() etc.

    ou des fonctions de plus haut niveau si elles existent (peut être libusb, comme déjà évoqué).

    j'espère que tu as la doc du driver, parce que ça ne s'invente pas.

    P.S. Relis toi et corrige toi. Je ne vais pas passer l'après-midi à décoder et corriger tes messages bourrés de typos ...

  7. #7
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 22
    Points : 2
    Points
    2
    Par défaut Lire les données d'un port USB en C
    ok j'ai bien compris, j'aimerais bien voire un exemple pour avoir une idée concraite ou bien une architecture detaillé des etapes a suivre (par exemple 1=> Initialisation usb , 2=> ouvrire le bus serie.......)

  8. #8
    Invité(e)
    Invité(e)
    Par défaut
    Citation Envoyé par zguingua Voir le message
    ok j'ai bien compris, j'aimerais bien voir un exemple pour avoir une idée concrète ou bien une architecture détaillée des étapes à suivre (par exemple 1=> Initialisation usb , 2=> ouvrir le bus série.......)
    En cherchant un peu sur google, on trouve facilement...

    Il faut d'abord trouver le périphérique voulu.
    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
    #define MY_VENDOR_ID 15
    #define MY_PRODUCT_ID 16
    struct usb_bus *usb_bus;
    struct usb_device *dev, *my_dev = NULL;
    usb_init();
    usb_find_busses();
    usb_find_devices();
     
    for (usb_bus = usb_busses; usb_bus; usb_bus = usb_bus->next) {
        for (dev = usb_bus->devices; dev; dev = dev->next) {
            if ((dev->descriptor.idVendor == MY_VENDOR_ID) &&
                    (dev->descriptor.idProduct == MY_PRODUCT_ID))
                    my_dev = dev;
        }
    }
    if(NULL == my_dev) {
        fprintf(stderr, "Périphérique non trouvé\n");
    }else{
        /* on peut travailler avec my_dev */
    }
    Après on ouvre la connection avec usb_open et on peut piloter le périphérique avec usb_control_msg.

    Une fois le travail fini, on ferme le tout avec usb_close.

  9. #9
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 22
    Points : 2
    Points
    2
    Par défaut Lire les données d'un port USB en C
    RE,
    apres avoir fait des recherche sur le net et en s'insoirant de l'exemple que tu ma donner je vuen de faire la premeire partie du programme
    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
    #include <stdio.h>
    #include "/usr/include/usb.h"
    //#include <stdlib.h>
     
    //#define EXIT_SUCCESS    0
    #define VENDOR_ID 0x066f
    #define PRODUCT_ID 0x8000
    struct usb_bus *bus;
    struct usb_device *dev;
     
    int main (int argc,char **argv)
    {
    	int receive = 0;
    	int len = 1024;
    	char buffer[len];
    	usb_dev_handle *device_handle = 0;
     
    	usb_init();// Initiaser libusb
    	usb_find_busses();//Trouver tous les bus 
    	usb_find_devices();//Trouver tous les peripheriques sur tous les bus  find_busses
     
    	//sses = usb_get_busses();int usb_bulk_write(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout);
    	for (bus = usb_busses; bus; bus = bus->next){
     
     
    	for (dev = bus->devices; dev; dev = dev->next)	
    	{
    	{
    	printf("bus : %s Device %s \n id Vendor: %x | id Product : %x \n", bus->dirname,dev->filename ,dev->descriptor.idVendor,dev->descriptor.idProduct);
    	}
     
    	if ((dev->descriptor.idVendor == VENDOR_ID) && (dev->descriptor.idProduct == PRODUCT_ID))
    	dev = dev;
     
     
    	}
    	}
     
    		if (dev == NULL)
    		{
    			printf("aucun périphérique ne cerrespond");	
    		return(0);
    		}
    			device_handle = usb_open(dev);
    			  if (device_handle == NULL) 
    			{
    			    printf("usb_open : %s\n", usb_strerror());
    			    return 1;
                    	     }
     
     
    return(0); //EXIT_SUCCESS; 
    }
    apres compilation j'obtien ça comme repose et du coup je pense qu'il n'arrive pas a ouvrire la clé usb
    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
     
    bus : 005 Device 001
     id Vendor: 0 | id Product : 0
    bus : 007 Device 001
     id Vendor: 0 | id Product : 0
    bus : 006 Device 001
     id Vendor: 0 | id Product : 0
    bus : 001 Device 004
     id Vendor: 413c | id Product : 2003
    bus : 001 Device 003
     id Vendor: 413c | id Product : 3016
    bus : 001 Device 001
     id Vendor: 0 | id Product : 0
    bus : 002 Device 002
     id Vendor: 66f | id Product : 8000
    bus : 002 Device 001
     id Vendor: 0 | id Product : 0
    bus : 004 Device 002
     id Vendor: 10b8 | id Product : 66
    bus : 004 Device 001
     id Vendor: 0 | id Product : 0
    bus : 003 Device 001
     id Vendor: 0 | id Product : 0
    aucun périphérique ne cerrespond
    merci de bien vouloir m'aidé c urgent!!!!!!!!!!!!!!!!!!!!!!!!
    et j'aimerai bien avoir des indication sur les argument de la fonction usb_bulk_read

  10. #10
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,
    Dans le code que j'ai posté, il y avait my_dev et dev.
    dev permet de parcourir la liste des équipements, my_dev correspond à l'équipement. Dans ton code, il en manque 1. A la place, on trouve :
    Cela ne risque pas de fonctionner.

    merci de bien vouloir m'aidé c urgent!!!!!!!!!!!!!!!!!!!!!!!!
    24 points d'exclamation derrière un "C'est urgent", c'est 24 de trop.

    et j'aimerai bien avoir des indication sur les argument de la fonction usb_bulk_read
    Google ?

  11. #11
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 22
    Points : 2
    Points
    2
    Par défaut Lire les données d'un port USB en C
    Bonjour j'ai essayé de faire comme tu ma dit et du coup sans succée je ne sais pas pourquoi mais apparament la fonction usb_bulk_read me retourne un -1 je pense que c'est une erreur j'ai cherché sur le net mais rien dans tous les forums je trouve le méme probléme, merci de vouloir m'aidé c'est une urgence pour me debloquer
    receive = usb_bulk_read(device_handle , 1, buffer, sizeof(buffer), 500))

  12. #12
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 22
    Points : 2
    Points
    2
    Par défaut Lire les données d'un port USB en C
    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
    #include <stdio.h>
    #include "/usr/include/usb.h"
    #include <stdlib.h>
     
    #define EXIT_SUCCESS    0
    #define MY_VENDOR_ID 0x066f
    #define MY_PRODUCT_ID 0x8000
    struct usb_bus *bus;
    struct usb_device *dev, *my_dev = NULL;
     
    int main (int argc,char **argv)
    {
    	 FILE* fichier = NULL;
    	int receive = 0;
    	int len = 64;
    	char buffer[len];
    	struct usb_dev_handle *device_handle = 0;
     
    	usb_init();// Initiaser libusb
    	usb_find_busses();//Trouver tous les bus 
    	usb_find_devices();//Trouver tous les peripheriques sur tous les bus  find_busses
     
    	//sses = usb_get_busses();int usb_bulk_write(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout);
    	for (bus = usb_busses; bus; bus = bus->next){
     
    	for (dev = bus->devices; dev; dev = dev->next)	
    	{
    	{
    	printf("bus : %s Device %s \n id Vendor: %x | id Product : %x \n", bus->dirname,dev->filename ,dev->descriptor.idVendor,dev->descriptor.idProduct);
    	}
     
    	if ((dev->descriptor.idVendor == MY_VENDOR_ID) && (dev->descriptor.idProduct == MY_PRODUCT_ID))
    	my_dev = dev;
    	/*{
    	printf("my_dev  %x idV et %x idP", MY_VENDOR_ID, MY_PRODUCT_ID);
    	}*/
     
    	}
    	}
     
    		if (my_dev == NULL)
    		{		
    		{
    			printf("aucun périphérique ne cerrespond\n");	
    			return 0;
    		}
    			device_handle = usb_open(my_dev);
    			  if (device_handle == NULL) 
    			{				
    				{
    			    printf("usb_open : %s\n", usb_strerror());
    			    return 1;
                    	     }
    				fichier = fopen("test", "wb+");
    				if (fichier == NULL)
     
     
    				while
     
    				(receive = usb_bulk_read(device_handle , 1, buffer, sizeof(buffer), 500) > 0)
     
    				{
     
    				fputs(buffer, fichier);	
    				fclose(fichier);				
    				}
     
    				printf("RX stat=%d -> RX char=%d\n", receive, len);
    				//nt usb_bulk_read(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout);
    				//int usb_bulk_write(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout);
    				}
     
    usb_close(device_handle);
    }				
    return(0); 
    }
    je te poste le code je pense que ça va t'aidé

  13. #13
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    Alors, dans le code, il y a encore des problèmes :

    Le code qui suit ne fait rien :
    Si le périphérique n'a pas été trouvé, on écrit "aucun périphérique ne correspond" et on quitte.
    Si un périphérique a été trouvé, on passe directement à l'instruction return(0);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     if (my_dev == NULL) {
            {
                printf("aucun périphérique ne cprrespond\n");
                return 0;
            }
    ...
                printf("RX stat=%d -> RX char=%d\n", receive, len);
            }
            usb_close(device_handle);
        }
    Problème similaire ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (device_handle == NULL) {				
    {
       ...

    Ce code ne fonctionne que si l'ouverture de fichier a échoué
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (fichier == NULL)				
        while (receive = usb_bulk_read(device_handle , 1, buffer, sizeof(buffer), 500) > 0) {
            fputs(buffer, fichier);	
            fclose(fichier);				
        }

    Voici quelque chose d'un peu mieux :
    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
    #include <stdio.h>
    #include "/usr/include/usb.h"
    #include <stdlib.h>
     
    #define MY_VENDOR_ID 0x066f
    #define MY_PRODUCT_ID 0x8000
    struct usb_bus *bus;
    struct usb_device *dev, *my_dev = NULL;
     
    int main()
    {
        FILE *fichier = NULL;
        int receive = 0;
        int len = 64;
        char buffer[len];
        struct usb_dev_handle *device_handle = 0;
     
        usb_init();                 // Initiaser libusb
        usb_find_busses();          //Trouver tous les bus 
        usb_find_devices();         //Trouver tous les peripheriques sur tous les bus  find_busses
     
        for (bus = usb_busses; bus; bus = bus->next) {
            for (dev = bus->devices; dev; dev = dev->next) {
     
                printf
                    ("bus : %s Device %s \n id Vendor: %x | id Product : %x \n",
                     bus->dirname, dev->filename, dev->descriptor.idVendor,
                     dev->descriptor.idProduct);
     
                if ((dev->descriptor.idVendor == MY_VENDOR_ID)
                    && (dev->descriptor.idProduct == MY_PRODUCT_ID))
                    my_dev = dev;
            }
        }
     
        if (my_dev == NULL) {
            printf("aucun périphérique ne cprrespond\n");
            return EXIT_FAILURE;
        } else {
            /* my_dev != NULL */
            device_handle = usb_open(my_dev);
            if (device_handle == NULL) {
                printf("usb_open : %s\n", usb_strerror());
                return EXIT_FAILURE;
            } else {
                /* device_handle != NULL */
                fichier = fopen("test", "wb+");
                if (fichier == NULL) {
                    printf("impossible d'ouvrir \"test\"\n");
                } else {
                    /* fichier != NULL */
                    while
                        ((receive =
                          usb_bulk_read(device_handle, 1, buffer,
                                        sizeof(buffer), 500)) > 0) {
     
                        fputs(buffer, fichier);
                        printf("RX stat=%d -> RX char=%d\n", receive, len);
                    }
                    fclose(fichier);
                }
                usb_close(device_handle);
            }
        }
     
        return EXIT_SUCCESS;
    }

  14. #14
    Invité(e)
    Invité(e)
    Par défaut
    Et pour l'utilisation de usb_bulk_read, le cinquième résultat google nous donne ce lien.

    On peut y lire (en gros)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int endpoint;
    endpoint = my_dev->config->interface->altsetting->endpoint[0]->bEndpointAddress;
    usb_bulk_read(..., endpoint, ..., ..., ...);
    merci de vouloir m'aidé c'est une urgence pour me debloquer
    Tu as déjà dit que c'était une urgence, une petite piqure de rappel ?

  15. #15
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 22
    Points : 2
    Points
    2
    Par défaut Lire les données d'un port USB en C
    Merci pour la piqure!

    je ne comprend les arguments mettre dans la fonction endpoint
    <<<endpoint = (my_dev->config->interface->altsetting->endpoint[0]->bEndpointAddress);>>>
    ils viennet ils viennent d'ou moi sincerement je n'est pas d'idées peut tu me donner plus de precision sur ces arguments.
    sinon pour la compilation du programme je recoit une reponse a la fin
    <<<Program exited with code 01>>> je ne sais se que sa veux dire??
    sinon si je fait une compilation avec -g << gcc -g comme option>> je reçoit des erreurs <<undefined init_usb et busses.................>>>
    par contre si je fait avec <<gcc -Wall comme j'ai l'habitude de le faire pas d'erreus jetrouve que cest bizard ou bien le probleme viens de moi>>>>>>>>
    Merci de me donner plus de details

  16. #16
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 22
    Points : 2
    Points
    2
    Par défaut Lire les données d'un port USB en C
    voici l'erreur que je reçoit en etour apres gcc -g
    gcc -g usb.c -o usb
    /tmp/ccQFxVlQ.o: In function `main':
    /home/users/arezaoui/sdkdsm/dsm/apps/linuxConsole/nouveau/usb.c:21: undefined reference to `usb_init'
    /home/users/arezaoui/sdkdsm/dsm/apps/linuxConsole/nouveau/usb.c:22: undefined reference to `usb_find_busses'
    /home/users/arezaoui/sdkdsm/dsm/apps/linuxConsole/nouveau/usb.c:23: undefined reference to `usb_find_devices'
    /home/users/arezaoui/sdkdsm/dsm/apps/linuxConsole/nouveau/usb.c:26: undefined reference to `usb_busses'
    /home/users/arezaoui/sdkdsm/dsm/apps/linuxConsole/nouveau/usb.c:46: undefined reference to `usb_open'
    /home/users/arezaoui/sdkdsm/dsm/apps/linuxConsole/nouveau/usb.c:49: undefined reference to `usb_strerror'
    /home/users/arezaoui/sdkdsm/dsm/apps/linuxConsole/nouveau/usb.c:64: undefined reference to `usb_bulk_read'
    /home/users/arezaoui/sdkdsm/dsm/apps/linuxConsole/nouveau/usb.c:74: undefined reference to `usb_close'
    collect2: ld returned 1 exit status
    dibcom140(arezaoui) apps/linuxConsole/nouveau/$

  17. #17
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par zguingua Voir le message
    voici l'erreur que je reçoit en etour apres gcc -g
    gcc -g usb.c -o usb
    /tmp/ccQFxVlQ.o: In function `main':
    /home/users/arezaoui/sdkdsm/dsm/apps/linuxConsole/nouveau/usb.c:21: undefined reference to `usb_init'
    /home/users/arezaoui/sdkdsm/dsm/apps/linuxConsole/nouveau/usb.c:22: undefined reference to `usb_find_busses'
    /home/users/arezaoui/sdkdsm/dsm/apps/linuxConsole/nouveau/usb.c:23: undefined reference to `usb_find_devices'
    /home/users/arezaoui/sdkdsm/dsm/apps/linuxConsole/nouveau/usb.c:26: undefined reference to `usb_busses'
    /home/users/arezaoui/sdkdsm/dsm/apps/linuxConsole/nouveau/usb.c:46: undefined reference to `usb_open'
    /home/users/arezaoui/sdkdsm/dsm/apps/linuxConsole/nouveau/usb.c:49: undefined reference to `usb_strerror'
    /home/users/arezaoui/sdkdsm/dsm/apps/linuxConsole/nouveau/usb.c:64: undefined reference to `usb_bulk_read'
    /home/users/arezaoui/sdkdsm/dsm/apps/linuxConsole/nouveau/usb.c:74: undefined reference to `usb_close'
    collect2: ld returned 1 exit status
    dibcom140(arezaoui) apps/linuxConsole/nouveau/$
    Il doit y avoir une libusb.a à ajouter à ton projet (-lusb sur la ligne de commande de l'éditeur de lien).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc -g usb.c -o usb -lusb

  18. #18
    Invité(e)
    Invité(e)
    Par défaut
    je ne comprends les arguments à mettre dans la fonction endpoint
    endpoint n'est pas une fonction mais une variable.

    ils viennent d', je n'ai pas d'idées peux tu me donner plus de précision sur ces arguments.
    Je n'en sais pas plus que les liens que je t'ai déjà donné.

    Program exited with code 01
    En général, un programme qui retourne une valeur différente de zéro a rencontré une erreur.

  19. #19
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 22
    Points : 2
    Points
    2
    Par défaut
    Du coup oui il me retourne pas d'erreurs , j'aimerai avoir des informations sur open_usb, et usb_bulk_read (leurs urilisations et leurs arguments) parceque je ne comprend rien, meme apres des recherche et des lein donnée par l'equipe merci

    Pour plus d'informations, dans le programme j'arrive a obtenire le fichier test apres compilation mais il est toujour vide alors je pense qu'il y a des erreur dans le fonction open_usb ou usb_bulk_read

Discussions similaires

  1. [Imprimante] Lire les données qui transitent sur un port paralléle
    Par gastoncs dans le forum Périphériques
    Réponses: 7
    Dernier message: 29/07/2011, 22h15
  2. Lire les données colléctées par le port
    Par othman3535 dans le forum Entrée/Sortie
    Réponses: 20
    Dernier message: 12/06/2010, 04h46
  3. Lire les données sur un port //
    Par gastoncs dans le forum Périphériques
    Réponses: 1
    Dernier message: 20/08/2008, 23h40
  4. Lire les données du port série RS232
    Par Sytchev3 dans le forum Langage
    Réponses: 2
    Dernier message: 16/06/2008, 09h47
  5. lire les données sur un port RS232
    Par xave dans le forum Langage
    Réponses: 6
    Dernier message: 06/10/2005, 17h40

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