Am 18. September 2013 21:56 schrieb Andreas Brus <andr...@brus.name>:

>
> Ich verstehe diese Schleifen bei der Fehlerbehandlung nicht wirklich, aber
> ich vermute, daß da irgendwas durcheinander gerät.
>
> Gruß
> Andreas
>

Hm, die Schleife macht eigentlich nichts besonderes ...

double ds1820read(char *sensorid) {

        FILE *fp;       

        sprintf(fn, "/sys/bus/w1/devices/%s/w1_slave", sensorid );

        if  ( (fp = fopen ( fn, "r"  )) == NULL ) {
        return(-1);
        }

        else

        {

*               fgets( crc_buffer, sizeof(crc_buffer), fp );*
*               if ( !strstr ( crc_buffer, crc_OK ) ) *
*               {*
*
*
*                       syslog(LOG_INFO, "CRC check failed, SensorID: %s", 
sensorid);*
*
*
*               fclose ( fp );*
*               return(-1);*
                }

                else

                {

                fgets( temp_buffer, sizeof(temp_buffer), fp );
                fgets( temp_buffer, sizeof(temp_buffer), fp );

                        char *t;
                        t = strndup ( temp_buffer +29, 5 ) ;
                        temp = atof(t)/1000;

                fclose ( fp );
                http_post(temp, vzuuid[i][count]);

                }

        }

}


Wenn die Schleife kein CRC_OK lesen kann, haut sie einen Syslogeintrag
raus, schliesst den FP und macht return(-1).

Antwort per Email an