资源简介
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个文件信息
相关资源
- 实现QQ注册登录并保存注册信息源码
- linux-sublime-text3.deb
- 基于三谱线加窗插值FFT的数字电能表
- 云计算-Linux系统管理-Linux常用命令.
- fluent圆柱绕流卡曼涡街仿真case
- RC522实现钱包功能
- ARM嵌入式系统基础教程(周立功第2版
- 基于51单片机的数字电压表.rar
-
gtkmpla
yer - net-core磊科NW392无线网卡Linux系统驱动
- Essential Linux Device Drivers + 源码
- 银河麒麟V10 server系统安装手册
- rarlinux-x64-5.3.0.tar.gz
- neper安装包
- oozie -4.3.0 .tar for linux.64
- 3rdlib.rar
- STM32/ARM的官方DSP库
- 深入浅出ARM7-LPC213x_214x(上下册)
- COMP51编译器
- Linux常用命令汇总
- ARM AXI协议标准版
- cdlinux无线安全审计包
- FFTW ARM cortex-A 平台测试程序
- ARM9芯片手册中文版
- Understanding the Linux Kernel 3rd 原版pdf
- OMNET++IDE_P2P网络仿真的安装步骤(Wi
- Linux 下 diff 工具源码
- Realtek RTL8188 WIFI驱动程序for linux
- 几种辐射传输模型大气校正及气溶胶
- LinuxUNIX系统编程手册(英文版)
评论
共有 条评论