显示" Hello World"在linux中的framebuffer上

时间:2018-05-28 09:06:06

标签: linux framebuffer

我在ARM目标上使用了linux 3.14版本,我希望使用帧缓冲区在显示中显示一些字符行。我可以使用下面的代码更改显示的颜色。

 #include <stdio.h>

unsigned char colours[8][4] = {
    { 0x00, 0xFF, 0x00, 0xFF }, // green
    { 0x00, 0xFF, 0x00, 0xFF }, // green
    { 0x00, 0xFF, 0x00, 0xFF }, // green
    { 0x00, 0xFF, 0x00, 0xFF }, // green
    { 0x00, 0xFF, 0x00, 0xFF }, // green
    { 0x00, 0xFF, 0x00, 0xFF }, // green
    { 0x00, 0xFF, 0x00, 0xFF }, // green
    { 0x00, 0xFF, 0x00, 0xFF }, // green
};

int frames[] = {0,5,10,15,20,25,30};

int columns = 800;
int lines = 480;

#define ARRAY_SIZE(a)   (sizeof(a)/sizeof(a[0]))        

int frame(int c, int l){
    int i;
    for(i=0; i < ARRAY_SIZE(frames); i++){
        if((c==frames[i])&&((l>=frames[i])&&l<=(lines-frames[i]))){
            return 1;
        }
        if((c==columns-frames[i])&&((l>=frames[i])&&l<=(lines-frames[i]))){
            return 1;
        }
        if((l==frames[i])&&((c>=frames[i])&&c<=(columns-frames[i]))){
            return 1;
        }
        if((l==lines-frames[i])&&((c>=frames[i])&&c<=(columns-frames[i]))){
            return 1;
        }
    }
    return 0;
}

int main(int argc, char **argv)
{
    unsigned char pixel[3];
    int l, c;
    char *filename = argv[1];       
    printf ("Device : %s\n",filename);
    FILE *f = fopen(filename,"wb");

    if(f){
    printf("Device open success \n");
        for(l=0; l<lines; l++){
            for(c=0; c < columns; c++){
                if(frame(c,l)){
                    fwrite(colours[3], 1, sizeof(colours[3]), f);
                }else{
                    int colour = c/(columns/ARRAY_SIZE(colours)); 
                    fwrite(colours[colour], 1, sizeof(colours[colour]), f);
                }
            }
        }
        fclose(f);
    }
    else
       printf("Device open failed \n");

    return 0;
}

我想以同样的方式向显示器显示一些字符。例如,我想展示角色&#34; Hello world !!!&#34;在显示器中使用帧缓冲区。

任何人都可以帮我解决这个问题。

0 个答案:

没有答案