主题 : 64*32点阵屏显示24位bmp和字符 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 89344
精华: 0
发帖: 14
金钱: 75 两
威望: 15 点
综合积分: 28 分
注册时间: 2013-03-26
最后登录: 2017-08-21
楼主  发表于: 2013-04-09 21:30

 64*32点阵屏显示24位bmp和字符

打开bmp图片显示,但是怎么显示字符?没有驱动源码
#define LEDWID 64
#define LEDHIT 32




static char bufTmp[3*LEDWID*LEDHIT+1024];//24bit bmp picture:8b+8g+8r
static char LedBuf[32*64];//0-YELLOW 1-GREEN 2-RED 3-DARK
static int bmpfd;
static int ledfd;

void Form1::SlotWrite()
{
    memset(bufTmp, 0, 3*LEDWID*LEDHIT+1024);
    memset(LedBuf, 3, 32*64);

    bmpfd = open("/tmp/face.bmp", O_RDWR);
    if(bmpfd <=0)
    {
    printf("error:bmp file not exist\n");
    return;
    }
    int ret = read(bmpfd, bufTmp, 3*LEDWID*LEDHIT+1024);
    if(ret <= 14)
    {
    printf("error: no bmp data\n");
    close(bmpfd);
    return;
    }
    int off = bufTmp[10]+bufTmp[11]*256+bufTmp[12]*256*256+bufTmp[13]*256*256*256;
    
    if(ret < (3*LEDWID*LEDHIT+off))
    {
    printf("error: bmp file length\n");
        close(bmpfd);
    return;
    }
    for(int i = 0; i < 32*64; i++)
    {
    if(bufTmp[off+i*3+2])    //red
        LedBuf -= 1;
    if(bufTmp[off+i*3+1])    //green
            LedBuf -= 2;
    if(LedBuf == 0 && bufTmp[off+i*3])
        LedBuf += 3;
    }      


    write(ledfd, LedBuf, 32*64);
}
级别: 新手上路
UID: 89344
精华: 0
发帖: 14
金钱: 75 两
威望: 15 点
综合积分: 28 分
注册时间: 2013-03-26
最后登录: 2017-08-21
1楼  发表于: 2013-04-09 21:30
void Form1::SlotOpen()
{
    ledfd = open("/dev/ledCard", O_RDWR);
    if(ledfd <= 0)
    {
    printf("error:led ctl card not exist");
    return;
    }
}
级别: 新手上路
UID: 89344
精华: 0
发帖: 14
金钱: 75 两
威望: 15 点
综合积分: 28 分
注册时间: 2013-03-26
最后登录: 2017-08-21
2楼  发表于: 2013-04-13 13:15
没人搭理啊!?