Voor een project moet ik direct naar de framebuffer ( /dev/fb ) in linux schrijven. Ik zal tekst en een grafiek op het scherm moeten tonen. Nou is het mij alleen niet duidelijk hoe ik dit voor mekaar moet krijgen. Tot nu toe heb ik de onderstaande code dat de hele scherm een kleurtje geeft. Ik heb lang gezocht, maar kan geen tutorial (of iets dergelijks) vinden waarmee ik verder kom. Er bestaat niet de mogelijkheid om bijv. gtk (of dergelijke) te gebruiken. Ik moet direct de framebuffer manipuleren.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
| // Read in header files
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <linux/fb.h>
#include <unistd.h>
#include <sys/mman.h>
#include <sys/ioctl.h>
main ()
{
int row, column;
// open framebuffer device and read out info
int fd = open ("/dev/fb0", O_RDWR);
struct fb_var_screeninfo screeninfo;
ioctl (fd, FBIOGET_VSCREENINFO, &screeninfo);
// continue only if 8 bit colour depth
if (screeninfo.bits_per_pixel == 8)
{
// determine size
int width = screeninfo.xres;
int height = screeninfo.yres;
// embed framebuffer into memory
unsigned char *data = (unsigned char *) mmap (0, width * height,
PROT_READ | PROT_WRITE,
MAP_SHARED, fd, 0);
// process screen content line by line
for (row = 0; row < height; row++)
{
for (column = 0; column < width; column++)
{
data[column + row * width] = 0x02;
};
};
// mask framebuffer out of memory
munmap (data, width * height);
};
}; |
If an experiment works, something has gone wrong