Bonjour ,
je veut faire une application qui me permet d'envoyer et de recevoir des données USB ( HID ) , si quelqu'un a une solution ou un exemple merci de m'aider .
Merci.
Bonjour ,
je veut faire une application qui me permet d'envoyer et de recevoir des données USB ( HID ) , si quelqu'un a une solution ou un exemple merci de m'aider .
Merci.
Salut newin
Il te faut donner plus d'explication par connection USB on peut lire/ecrire un support de stockage, convertir un port usb en parallele, un port usb en serie .....
Chaque fois il y a une facon differente de piloter le port usb, certains periferique sont livres avec un driver
Merci pour la réponse
en fait , je veut lire et écrire en utilisant l'USB HID .
a+
c'est pas avec ce genre de post, que les gen vont etre motiver pour t'aider
Ta description de ce que tu ve faire est pas assez claire
lire ecrire a laide de l'usb ... ok pe importe ce kon branche sur l'usb on lie et on ecrie , il faut plus de detail sur ce que tu veux faire exactement
sinon jete un oeuil la dessus jai tapper USB HID sur google (l'a tu deja fait ?)
http://www.rennes.supelec.fr/ren/fi/...b/usb-hid.html
Comment communiquer avec mon périphérique USB ?
La manière de communiquer dépend du type de tranfert (Bulk, Isochrone, Interrupt, Control).
Le type de transfert plus simple à gérer est certainement le transfert Bulk.
Il suffit de remplir la structure de données suivante :
struct usbdevfs_bulktransfer {
unsigned int ep;
unsigned int len;
unsigned int timeout; /* in milliseconds */
void *data;
};
et d'appeler la fonction C suivante : ioctl(fd, USBDEVFS_BULK, pointeur sur la structure usbdevfs_bulktransfer);
Exemple de manipulation de ces notions - lecture de données Bulk :
int fd;
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 fd = open("/proc/bus/usb/001/002", O_RDWR); if(fd != -1) { struct usb_bulktransfer bulk; int ret; bulk.ep = USB_DIR_IN | 1; bulk.len = 1024; bulk.timeout = 1000; bulk.data = malloc(1024); ret = ioctl(fd, USBDEVFS_BULK, &bulk); if (ret < 0) printf("Error in bulk transfer"); else { /* les données sont disponibles dans bulk.data */ } close(fd); }
Exemple de manipulation de ces notions - écriture de données bulk :
int fd;
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 fd = open("/proc/bus/usb/001/002", O_RDWR); if(fd != -1) { struct usb_bulktransfer bulk; int ret; bulk.ep = 1; bulk.len = 1024; bulk.timeout = 1000; bulk.data = malloc(1024); ret = ioctl(fd, USBDEVFS_BULK, &bulk); if (ret < 0) printf("Error in bulk transfer"); else { /* les données sont disponibles dans bulk.data */ } close(fd); }
Les transfers de type Interrupt IN sont beaucoup plus difficiles à gérer. La principale difficulté réside dans la fait qu'ils ont lieu de manière asynchrone. Une fois le transfert initialisé, le programme reçoit des signaux (au sens Unix du terme) qu'il doit intercepter.
désolé pour mon dernier poste , j'ai fait ca parce que je suis vraiment besoin de solution .
que es ce que je veut exactement est de faire une communication entre une carte a microcontroleur et un pc.
a+.
Si tu installe une camera USB tu installe bien un driver de meme pour une imprimante un scanner ....
Si tu utlise une carte du commerce elle doit etre livree avec un driver et une notice d'utilisation de ce driver.
ta pas une librairie ou un .h livré avec
parce que quand moi je pilote une carte PCI par exemple jai eu une librairie complete et un .h
salut,
c'est moi qui a fait la carte et le programme dedans , mon programme de coté carte pour l'instant il fait la lecture et l'ecriture sur le port usb , il me reste maintenant la lecture et l'écriture coté PC .
a bientot
Quel est ton microcontrôleur?
Le fabricant du µC doit te donner la façon de communiquer (un driver coté PC OU si c'est un HID, un fichier .inf OU un exemple qui montre comment communiquer).
A+
Partager