Bonjour,
Je suis en train de me faire une petite application sous linux. J'utilise le C. Pour simplifier, j'écoute un des ports RS232 pour receptionner une trame de 6 octets. La reception se fait a interval régulier et que j'ai fixé a 5 min environ. Probleme par moment et de facon completement aléatoire (au bout d'une heure, ou quelques jours), mon application n'affiche plus rien (Je fais l'affichage des octets recus a l'écran avec l'heure et dans un fichier txt). J'ai désactivé la gestion d'énergie, de mise en veille pensant que cela perturbait. Pas concluant. Si dans ma fenetre SHELL, j'arrete le prog et je relance cela repart mais pour un certain temps. En plus aucun message d'erreur.
J'aurais souhaité quelques idées pour debugger mon probleme sachant que j'ai l'impression que c'est ma RS232 qui retourne rien. (J'ai aussi essayer un autre port)
ci joint bout de code de l'initialisation du port ....
fd = open(MODEMDEVICE, O_RDWR | O_NDELAY | O_NOCTTY );
if (fd <0) {perror(MODEMDEVICE); exit(-1); }
tcgetattr(fd,&oldtio);
bzero(&newtio, sizeof(newtio));
newtio.c_cflag = BAUDRATE | CRTSCTS | CS8 | CLOCAL | CREAD;
newtio.c_iflag = IGNPAR;
newtio.c_oflag = 0;
newtio.c_lflag = 0;
newtio.c_cc[VTIME] = 0;
newtio.c_cc[VMIN] = 1;
tcflush(fd, TCIFLUSH);
tcsetattr(fd,TCSANOW,&newtio);
while (STOP==FALSE)
{ res = read(fd,buf,255);
if (res>0)
{ .
.
Traitement
.
.
}
usleep(10000); /* Pour éviter l'utilisation permanente du proc */
}
Merci d'avance
Partager