Bonjour à tous,
Je voudrais récupérer la température d'une sonde DS18B20 connecté à un DS2480 qui est un convertisseur OneWire/série lui meme connecté à un pc sous debian.
Mon montage marche nikel avec digitemp, j'arrive à lire la sonde. Je voudrais maintenant me faire un petit programme en C pour faire la même choses pour me permettre d'enregistrer les relevés dans une base de données.
J'ai déjà codé ça :
l'envoie du 0xCD devrait me renvoyer CD ou ED d'après les datasheet : http://vesta.homelinux.free.fr/site/wiki/ds2480b.pdf , page 11. Mais à la place j'ai "gC". Auriez vous une idée du problème? MerciCode:#include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <termios.h> int main(void) { int port_serie; struct termios options; int reception; char buffer[10] = ""; port_serie = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY | O_NDELAY); if(port_serie < 0) { perror("Port serie ouvert"); exit(-1); } else { printf("Port serie bien ouvert. \n"); printf("Port serie %d. \n", port_serie); tcgetattr(port_serie, &options); cfsetospeed(&options, B9600); options.c_cflag |= (CLOCAL | CREAD); options.c_cflag &= ~PARENB; options.c_cflag &= ~CSTOPB; options.c_cflag &= ~CSIZE; options.c_cflag |= CS8; tcsetattr(port_serie, TCSANOW, &options); printf("Configuration OK !. \n"); // Envoie de donnees. printf("Envoie des donnees en cours ... \n"); if (write(port_serie, "0xCD", 2) < 0){perror("write:");} printf("Envoie Termine. \n"); // Lecture des donnees. printf("Lecture des donnees en cours ... \n"); fcntl(port_serie,F_SETFL,10); reception=read(port_serie,buffer,100); printf("J'ai lu %d charactères: %s\n",reception,buffer); if (reception == -1) printf("Erreur lecture port serie\n"); printf("Reception fini.\n" ); } close(port_serie); }
-----