Ich habe mal dein Beispiel etwas abgewandelt (ohne Garantie).
Bei jedem Aufruf wird entweder der Zustand von Pin 2.0 ausgelesen und ausgegeben, oder eine Fehlermeldung.
Code: Select all
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h> //fuer die Konstante O_RDWR und open()
#include <unistd.h> //fuer close()
#include <stdint.h> //fuer den Datentypen uint32_t
#include <sys/ioctl.h>
#include <errno.h>
#define ANZAHL 1
int main()
{
uint32_t daten[ANZAHL];
const int offset=2;
int bytesread = 0;
int device = -1;
device = open( "/dev/piControl0", O_RDWR );
if ( device < 0 )
{
fprintf( stderr, "Fehler bei open(): %s", strerror(errno) );
return -1;
}
if ( lseek( device, offset, SEEK_SET ) < 0 )
{
fprintf( stderr, "Fehler bei lseek(): %s", strerror(errno) );
return -2;
}
bytesread = read( device, daten, ANZAHL );
if ( bytesread < 0 )
{
fprintf( stderr, "Fehler bei read(): %s", strerror(errno) );
return -3;
}
printf( "%d\n", daten[0] );
fclose ( device );
}