24. juli 2011 - 01:14
Der er
7 kommentarer og 1 løsning
C Program til Linux - Læs: Linux input subsystem
Hej Jeg prøver at skrive et C program der læser data fra et accelerometer på en ARM processor der kører Linux Kernel 2.6. Jeg kan tilgå data på de 3 kanaler fra accelerometret på følgende 2 måder: 1: system("printevent ai"); Udskriver alle 3 kanaler løbende efter hinanden. 2: system("cat /sys/class/sbc2800/ai8/value"); system("cat /sys/class/sbc2800/ai9/value"); system("cat /sys/class/sbc2800/ai10/value"); Men hvordan opsamler jeg disse værdier ? Eller er der en helt anden måde at læse data fra Subsystem ? Håber i kan hjælpe.
Annonceindlæg fra FPT Software
fopen("/sys/class/sbc2800/ai8/value", "r") og laes derfra ??
Hej Jeg har prøvet følgende: int fd = -1; fd = fopen("/sys/class/sbc2800/ai8/value", "r"); if(fd < 0) { printf("\nUnable to read from the device\n"); } printf("Output %d",fd); close (fd);Output: 228~ Som er forkert, det burde være et tal i størrelsen: 3824120
Tak, fik det til at virke :) int main(void) { printf("Start"); int i; FILE *fd; fd = fopen("/sys/class/sbc2800/ai8/value", "r"); if(fd < 0) { printf("\nUnable to read from the device\n"); } fscanf(fd, "%d", &i); printf("i: %d",i); fprintf(fd, "Testing...\n"); fclose (fd); printf("End"); //puts("!!!Hello World!!!"); /* prints !!!Hello World!!! */ return EXIT_SUCCESS; } Point ? Tak for hjælpen endnu en gang.
Hej arne_v Fik det til at virke med fopen: printf("Start"); int i; FILE *fd; fd = fopen("/sys/class/sbc2800/ai8/value", "r"); if(fd < 0) { printf("\nUnable to read from the device\n"); } fscanf(fd, "%d", &i); printf("i: %d",i); fprintf(fd, "Testing...\n"); fclose (fd); printf("End"); //puts("!!!Hello World!!!"); /* prints !!!Hello World!!! */ return EXIT_SUCCESS; Point ? Tak for hjælpen endnu en gang :)
Husk at det er: int fd; ... fd = open(...); men: FILE *fp; ... fp = fopen(...);
Så hvilken skal bruges ? Prøvede med : Int fd; ... fd =open(); Men det virkede ikke.
fscanf kraever FILE og fopen.
Kurser inden for grundlæggende programmering