ds lib fertig
parent
cd95c58f66
commit
c1d53bec02
75
ds1820.cpp
75
ds1820.cpp
|
@ -33,14 +33,14 @@ Programm erhalten haben. Wenn nicht, siehe <http://www.gnu.org/licenses/>.
|
|||
|
||||
#include "ds1820.h"
|
||||
|
||||
string ds1820::pfad_devices = "/sys/bus/w1/devices";
|
||||
//string ds1820::pfad_devices = "/sys/bus/w1/devices";
|
||||
|
||||
|
||||
float ds1820::sensor_read(string *sensor_pfad)
|
||||
float ds1820::sensor_read(char *sensor_pfad)
|
||||
{
|
||||
char c;
|
||||
float temperatur;
|
||||
string puffer, string_temperatur;
|
||||
char Buffer[ZEILENLAENGE], string_temperatur[10];
|
||||
FILE *DS18S20;
|
||||
|
||||
//DS18S20 = fopen("/sys/bus/w1/devices/10-0008021dad2e/w1_slave","r");
|
||||
|
@ -51,7 +51,7 @@ float ds1820::sensor_read(string *sensor_pfad)
|
|||
printf("\nFehler beim Versuch den Sensor auszulesen.\n ");
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
while(fgets(puffer,ZEILENLAENGE, DS18S20))
|
||||
while(fgets(Buffer,ZEILENLAENGE, DS18S20))
|
||||
{
|
||||
int i=0;
|
||||
//den zurückgegeben String durch suchen auf die Temperatur
|
||||
|
@ -60,18 +60,18 @@ float ds1820::sensor_read(string *sensor_pfad)
|
|||
{
|
||||
i++;
|
||||
//printf("i= %d\n",i);
|
||||
if(puffer[i]=='t')
|
||||
if(Buffer[i]=='t')
|
||||
{
|
||||
int j;
|
||||
int n=i+2;
|
||||
for (j=0;j<10;j++)
|
||||
{
|
||||
string_temperatur[j]=puffer[n+j];
|
||||
string_temperatur[j]=Buffer[n+j];
|
||||
}
|
||||
break;//printf("temp: %s",string_temperatur);
|
||||
}
|
||||
}
|
||||
while((puffer[i]!='\n')||puffer[i]=='t');
|
||||
while((Buffer[i]!='\n')||Buffer[i]=='t');
|
||||
//printf("ende i= %d\n",i);
|
||||
|
||||
}
|
||||
|
@ -82,7 +82,7 @@ float ds1820::sensor_read(string *sensor_pfad)
|
|||
return temperatur;
|
||||
}
|
||||
|
||||
int ds1820::open_directory()
|
||||
int ds1820::open_directory(char *pfad_devices)
|
||||
{
|
||||
if(( dir=opendir(pfad_devices))== NULL)
|
||||
{
|
||||
|
@ -91,7 +91,7 @@ int ds1820::open_directory()
|
|||
}
|
||||
}
|
||||
|
||||
int ds1820::close_directory()
|
||||
int ds1820::close_directory(char *pfad_devices)
|
||||
{
|
||||
if(closedir(dir) == -1)
|
||||
{
|
||||
|
@ -101,31 +101,58 @@ int ds1820::close_directory()
|
|||
return 0;
|
||||
}
|
||||
|
||||
int ds1820::get_directory_name(string *pfad,int *sensor_number)
|
||||
{
|
||||
int sensor_count=0;// How Many Sensor on the Bus
|
||||
string buffer;
|
||||
|
||||
|
||||
while((dirpointer=readdir(dir)) != NULL)
|
||||
int ds1820::get_howmanny_sensors(char *pfad_devices)
|
||||
{
|
||||
int sensor_count=1;// How Many Sensor on the Bus
|
||||
|
||||
open_directory(pfad_devices);
|
||||
|
||||
while((dirpointer=readdir(dir)) != NULL)
|
||||
{
|
||||
if((*dirpointer).d_name[2]=='-')
|
||||
{
|
||||
//printf("\t %d %s\n",i,(*dirpointer).d_name);
|
||||
//printf("\t %d %s\n",sensor_count,(*dirpointer).d_name);
|
||||
//printf("\t\t treffer\n");
|
||||
sensor_count++;
|
||||
if(sensor_count == sensor_number)
|
||||
{
|
||||
sprintf(buffer,"%s/%s/w1_slave",pfad_devices,(*dirpointer).d_name);
|
||||
*pfad=buffer;
|
||||
return 0;
|
||||
}
|
||||
//printf("Temperatursensor %d: %f\n",i,sensor_lesen(buffer));
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
close_directory(pfad_devices);
|
||||
return sensor_count;
|
||||
}
|
||||
|
||||
float ds1820::get_sensor_value (char *pfad_devices,int sensor_number)
|
||||
{
|
||||
int sensor_count=1;// How Many Sensor on the Bus
|
||||
char buffer[ZEILENLAENGE];
|
||||
|
||||
open_directory(pfad_devices);
|
||||
|
||||
while((dirpointer=readdir(dir)) != NULL)
|
||||
{
|
||||
if((*dirpointer).d_name[2]=='-')
|
||||
{
|
||||
//printf("\t %d %s\n",sensor_count,(*dirpointer).d_name);
|
||||
//printf("\t\t treffer\n");
|
||||
//sensor_count++;
|
||||
//printf("%d %d\n",sensor_count,sensor_number);
|
||||
if(sensor_count == sensor_number)
|
||||
{
|
||||
sprintf(buffer,"%s/%s/w1_slave",pfad_devices,(*dirpointer).d_name);
|
||||
//printf("Temperatursensor %d: %f\n",sensor_count,sensor_read(buffer));
|
||||
close_directory(pfad_devices);
|
||||
return sensor_read(buffer) ;
|
||||
}
|
||||
sensor_count++;
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
close_directory(pfad_devices);
|
||||
return 666;
|
||||
}
|
||||
|
|
18
ds1820.h
18
ds1820.h
|
@ -39,6 +39,7 @@ Programm erhalten haben. Wenn nicht, siehe <http://www.gnu.org/licenses/>.
|
|||
//#include </usr/include/sys/types.h>
|
||||
#include <dirent.h>
|
||||
#include <stdio.h>
|
||||
#include <iostream>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
|
@ -54,14 +55,19 @@ class ds1820
|
|||
|
||||
struct dirent *dirpointer;
|
||||
DIR *dir;
|
||||
string pfad_devices;
|
||||
|
||||
//static string pfad_device;
|
||||
//static char pfad_devices[30];
|
||||
//static char pfad_devices[]= "/sys/bus/w1/devices";
|
||||
float sensor_read (char *sensor_pfad);
|
||||
int open_directory (char *pfad_devices);
|
||||
int close_directory (char *pfad_devices);
|
||||
|
||||
public:
|
||||
float sensor_read (string *sensor_pfad);
|
||||
int open_directory (void);
|
||||
int close_directory (void);
|
||||
int get_directory_name (string *pfad, int *sensor_number);
|
||||
//static string pfad_device;
|
||||
|
||||
|
||||
int get_howmanny_sensors (char *pfad_devices);
|
||||
float get_sensor_value (char *pfad_devices,int sensor_number);
|
||||
|
||||
};
|
||||
|
||||
|
|
18
main.cpp
18
main.cpp
|
@ -44,8 +44,26 @@ Programm erhalten haben. Wenn nicht, siehe <http://www.gnu.org/licenses/>.
|
|||
int main()
|
||||
{
|
||||
ds1820 ds;
|
||||
char pfad_devices[]= "/sys/bus/w1/devices";
|
||||
int i,sensor_count;
|
||||
|
||||
|
||||
sensor_count=ds.get_howmanny_sensors(pfad_devices);
|
||||
|
||||
printf("Temperatur auslesen\n\n");
|
||||
for( i=1;i<sensor_count;i++)
|
||||
{
|
||||
printf("Sensor %d: \t",i);
|
||||
}
|
||||
printf(" \n");
|
||||
|
||||
|
||||
for( i=1;i<sensor_count;i++)
|
||||
{
|
||||
printf("%f \t",ds.get_sensor_value(pfad_devices,i));
|
||||
}
|
||||
printf(" \n");
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue