Bonjour à tou(te)s,

Je sèche sur une erreur qui se produit dans certaines conditions dans un read d'un port série.

Le problème est présent quand je démarre l'ordinateur et lance le programme
Ensuite, comme je cherche à comprendre ce qui se passe, je teste le port série avec un autre programme, screen ou moserial par exemple
Je constate que tout fonctionne avec ceux-cis.
Suite à cela, je réessaye mon programme et il fonctionne correctement

Voici comment j'initialise le port et je fais le read dont le perror me répond
'ressource temporarily unavailable'

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
serial = open("/dev/ttyUSB0", O_RDWR|O_NONBLOCK|O_NOCTTY);
    if(serial == -1)
        {
         printf("Unable to open ttyUSB0\n");
         exit(0);
        }
 
    // intitialise de port serie ouvert
    tcgetattr(serial, &options);
    cfsetispeed(&options, B19200);
    cfsetospeed(&options, B19200);
    options.c_cflag |= (CLOCAL|CREAD);
    options.c_cflag &= ~PARENB;
    options.c_cflag &= ~CSTOPB;
    options.c_cflag &= ~CSIZE;
    options.c_cflag |= CS8;
    options.c_cc[VMIN] = 1;
    options.c_cc[VTIME] = 0;
    tcsetattr(serial, TCSANOW, &options);
    fcntl(serial, F_SETFL, FNDELAY);
le read
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
char cmd[10] = {2, 78, 5, 0, 32, 32, 32, 32, 229, 83};
    i = write(serial, cmd, 10);
    usleep(200000);
    if(read(serial, buffer, 8) < 0)
      {
       perror("rien a lire");
       exit(0);
       }
Bon je sais usleep n'est pas très élégant mais je verrai cela quand j'aurai levé mon problème

Une idée ?

merci

Alfybe