2009-12-02 1 views
0
#include <unistd.h> 
#include <stdio.h> 
#include <fcntl.h> 
#include <linux/fb.h> 
#include <sys/mman.h> 

int main() 
{ 
int fbfd = 0; 
struct fb_var_screeninfo vinfo; 
struct fb_fix_screeninfo finfo; 
long int screensize = 0; 
char fbp = 0; 
int x = 0, y = 0; 
long int location = 0; 

// Open the file for reading and writing 
fbfd = open("/dev/fb0", O_RDWR); 
if (!fbfd) { 
printf("Error: cannot open framebuffer device.\n"); 
exit(1); 
} 
printf("The framebuffer device was opened successfully.\n"); 

// Get fixed screen information 
if (ioctl(fbfd, FBIOGET_FSCREENINFO, &finfo)) { 
printf("Error reading fixed information.\n"); 
exit(2); 
} 

// Get variable screen information 
if (ioctl(fbfd, FBIOGET_VSCREENINFO, &vinfo)) { 
printf("Error reading variable information.\n"); 
exit(3); 
} 

// Figure out the size of the screen in bytes 
screensize = vinfo.xres * vinfo.yres * vinfo.bits_per_pixel/8; 

// Map the device to memory 
fbp = (char *)mmap(0, screensize, PROT_READ | PROT_WRITE, 
MAP_SHARED, fbfd, 0); 
if ((int)fbp == -1) { 
printf("Error: failed to map framebuffer device to memory.\n"); 
exit(4); 
} 
printf("The framebuffer device was mapped to memory successfully.\n"); 

for (y = 0; y < 240; y++) 
{ 
for (x = 0; x < 320; x++) 
{ 
x = 100; y = 100; // Where we are going to put the pixel 

// Figure out where in memory to put the pixel 
location = (x+vinfo.xoffset) * (vinfo.bits_per_pixel/4) + (y+vinfo.yoffset) * finfo.line_length; 
*(fbp + location)= 255; 


} 
} 
munmap(fbp, screensize); 
close(fbfd); 
return 0; 
} 


ERROR:in line number 57 
getting error: invalid type argument of ‘unary *' (have ‘long int') 

답변

1
char fbp = 0; 

char *fbp; 

를 했어야
관련 문제