• 大小: 3.71MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-02
  • 语言: 其他
  • 标签: linux  C语言  Arm  

资源简介

Arm平台下开发的一款触摸式简易电子钢琴,可弹奏十几个不同的音符

资源截图

代码片段和文件信息

///////////////////////////////////////////////////////////
//
//  Copyright(C) 2013-2017 GEC Tech. Co. Ltd.
//
//  文件: piano/src/bmp.c
//  日期: 2017-9
//  描述: 处理BMP格式图像数据
//
//  作者: Vincent Lin (林世霖)  微信公众号:秘籍酷
//
//  技术微店: http://weidian.com/?userid=260920190
//  技术交流: 260492823(QQ群)
//
///////////////////////////////////////////////////////////

#include 
#include “bmp.h“

char * load_bmp(const char *bmpfile struct image_info *minfo)
{
int fd = open(bmpfile O_RDONLY);
if(fd == -1)
{
fprintf(stderr “opening \“%s\“ failed: %s\n“
bmpfile strerror(errno));
exit(0);
}

// 获得文件大小,并分配内存
struct stat fileinfo;
fstat(fd &fileinfo);

int   rgb_size = fileinfo.st_size;
char *rgb_buf  = calloc(1 rgb_size);

// 读取BMP内容到内存中
struct bitmap_header header;
struct bitmap_info info;
struct rgb_quad quad;
read(fd &header sizeof(header));
read(fd &info sizeof(info));
if(info.compression != 0)
{
read(fd &quad sizeof(quad));
fprintf(stderr “read quad! \n“);
}
read(fd rgb_buf rgb_size);

minfo->width = info.width;
minfo->height= info.height;
minfo->pixel_size = info.bit_count/8;

close(fd);
return rgb_buf;
}

void display(char *bmpfile char *FB
 struct fb_var_screeninfo *vinfo
 int xoffset int yoffset)
{
struct image_info *minfo = calloc(1 sizeof(struct image_info));
char *rgb_buf = load_bmp(bmpfile minfo);
char *tmp = rgb_buf;

// 从最后一行开始显示BMP图像
int pad = ((4-( minfo->width * minfo->pixel_size ) % 4)) % 4; // 0-3
rgb_buf += (minfo->width * minfo->pixel_size + pad) * (minfo->height-1);

FB += (yoffset * vinfo->xres + xoffset) * 4;
int lcd_w = vinfo->xres - xoffset;
int lcd_h = vinfo->yres - yoffset;

int x y;
for(x=0; xheight; x++)
{
for(y=0; ywidth; y++)
{
unsigned long lcd_offset = (vinfo->xres*x + y) * 4;

memcpy(FB + lcd_offset + vinfo->red.offset/8   rgb_buf + 2 1);
memcpy(FB + lcd_offset + vinfo->green.offset/8 rgb_buf + 1 1);
memcpy(FB + lcd_offset + vinfo->blue.offset/8  rgb_buf + 0 1);

rgb_buf += minfo->pixel_size;
}

rgb_buf += pad;
rgb_buf -= (minfo->width * minfo->pixel_size + pad) * 2;
}

free(tmp);
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件    1152056  2018-08-20 14:03  模拟钢琴\07阶段项目\bmp\background.bmp

     文件    1145160  2018-08-20 14:03  模拟钢琴\07阶段项目\bmp\background.psd

     文件     112856  2018-08-20 14:03  模拟钢琴\07阶段项目\bmp\bar.bmp

     文件      18964  2018-08-20 14:03  模拟钢琴\07阶段项目\bmp\BMPfileFormat.png

     文件      54936  2018-08-20 14:03  模拟钢琴\07阶段项目\bmp\key_off.bmp

     文件      54936  2018-08-20 14:03  模拟钢琴\07阶段项目\bmp\key_on.bmp

     文件      67902  2018-08-20 14:03  模拟钢琴\07阶段项目\bmp\logo.bmp

     文件      16384  2018-09-10 21:36  模拟钢琴\07阶段项目\bmp\yrncxafk

     文件     611285  2018-08-20 14:03  模拟钢琴\07阶段项目\Linux音频编程.pdf

     文件      21316  2018-08-20 14:03  模拟钢琴\07阶段项目\mp3\d1.mp3

     文件      19644  2018-08-20 14:03  模拟钢琴\07阶段项目\mp3\d10.mp3

     文件      19226  2018-08-20 14:03  模拟钢琴\07阶段项目\mp3\d11.mp3

     文件      18808  2018-08-20 14:03  模拟钢琴\07阶段项目\mp3\d12.mp3

     文件      20898  2018-08-20 14:03  模拟钢琴\07阶段项目\mp3\d2.mp3

     文件      20898  2018-08-20 14:03  模拟钢琴\07阶段项目\mp3\d3.mp3

     文件      20898  2018-08-20 14:03  模拟钢琴\07阶段项目\mp3\d4.mp3

     文件      20898  2018-08-20 14:03  模拟钢琴\07阶段项目\mp3\d5.mp3

     文件      20898  2018-08-20 14:03  模拟钢琴\07阶段项目\mp3\d6.mp3

     文件      21316  2018-08-20 14:03  模拟钢琴\07阶段项目\mp3\d7.mp3

     文件      20062  2018-08-20 14:03  模拟钢琴\07阶段项目\mp3\d8.mp3

     文件      20062  2018-08-20 14:03  模拟钢琴\07阶段项目\mp3\d9.mp3

     文件       2422  2018-08-31 10:26  模拟钢琴\07阶段项目\piano_v1\bmp.c

     文件       1995  2018-08-31 10:26  模拟钢琴\07阶段项目\piano_v1\bmp.h

     文件       2892  2018-08-31 10:26  模拟钢琴\07阶段项目\piano_v1\piano.c

     文件        712  2018-08-31 10:26  模拟钢琴\07阶段项目\piano_v2\inc\audio.h

     文件       1995  2018-08-31 10:26  模拟钢琴\07阶段项目\piano_v2\inc\bmp.h

     文件        997  2018-08-31 10:26  模拟钢琴\07阶段项目\piano_v2\inc\ts.h

     文件        739  2018-08-31 10:26  模拟钢琴\07阶段项目\piano_v2\Makefile

     文件       3853  2018-08-31 10:26  模拟钢琴\07阶段项目\piano_v2\piano.c

     文件        793  2018-08-31 10:26  模拟钢琴\07阶段项目\piano_v2\src\audio.c

............此处省略33个文件信息

评论

共有 条评论