Bonjour !!
J'ai ecris un bout de code qui me permet de lire sur le port usb et d'initialiser la com.
En gros, je pilote une telecommande RF avec le recepteur en USB.
Le souci c que quand j'execute mon code, le premier appuie sur la telecommande est pris en compte et apres il se passe environs 20s pour que je vois qq chose.
Je joint le code si qq'un a une idée .... Thx a lot ...
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <termios.h>
int main(int argc, char* argv[])
{
if (argc!=2)
{
printf("Usage : %s /dev/qqchose\n",argv[0]);
return -1;
}
// Ouverture du device
// O_RDWR : fichier ouvert en lecture et en ecriture.
// O_NOCTTY : le programme ne control pas le terminal.
// O_NDELAY : pas d'attente de changement de ligne sur le signal DCD.
// Usage : Le nom du peripherique est passe en paramatre.
int fd;
struct termios options;
if(fd = open(argv[1], O_RDWR | O_NOCTTY | O_NDELAY) < 0)
{
perror("Impossible d'ouvrir le perpipherique");
exit(1);
}
// fcntl permet de definir l'etat du port serie
fcntl(fd, F_SETFL, FNDELAY);
// Options 96008N1
tcgetattr(fd, &options);
cfsetispeed(&options, B9600);
cfsetospeed(&options, B9600);
options.c_cflag |= (CLOCAL | CREAD);
options.c_cflag &= ~PARENB;
options.c_cflag &= ~CSTOPB;
options.c_cflag &= ~CSIZE;
options.c_cflag |= CS8;
options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
// cfmakeraw(&options);
if (write(fd, "ATZ\r", 4) < 0)
{
perror("write:");
}
close(fd);
return 0;
}