文件浏览器_数码相框项目总结 (上)
来源:互联网 发布:云桌面软件 编辑:程序博客网 时间:2024/05/15 02:04
趁着闲余时间我们一起重温下这个项目,通过这个项目来复习一些知识,正是我这次总结的目的。---雪松(●'◡'●)
让我们一起来做 韦东山老师 第三期项目:文件浏览器_数码相框 项目吧
功能需求:
- 在JZ2440 LCD上显示电子书文件,可解析的电子书文件编码格式支 持UTF-8、 UTF-16le、UTF-16be、GBK、ASCII。
- 字符显示:矢量字体。(Freetype实现任意放大或缩小字体)
- 可将电子书远程打印到电脑终端上。(socket编程)
- 在JZ2440 上实现数码相框。
- libgpej 的使用
流程:
1、使用encoding_manage.c 来解析文件,获得编码
2、使用font_manager.c 来处理编码,获得字体点阵
3、使用display_manager.c 来输出点阵
前期要学习知识汇总:
- 了解u-boot启动流程
- 了解内核启动流程
- 了解根文件驱动流程
- 网络编程
- 多线程编程
- makefile的编写
- 单链表操作&函数指针
- 字符编码
分享几个不错的总结图解。
1、u-boot启动流程
移植部分 见下次博客
2、内核启动流程
3、根文件系统启动流程
4、网络编程
对于熟悉TCP/UDP 的同学 下面两个图应该很熟悉。
无连接的socket工作过程
有连接的socket工作过程
5、多线程编程
http://blog.csdn.net/monkey_d_meng/article/details/5628663
推荐个不错的博客总结
6、makefile的编写
一、各级子目录的Makefile:
它最简单,形式如下:
obj-y += file.o
obj-y += subdir/
“obj-y += file.o”表示把当前目录下的file.c编进程序里,
“obj-y += subdir/”表示要进入subdir这个子目录下去寻找文件来编进程序里,是哪些文件由subdir目录下的Makefile决定。
二、顶层目录的Makefile:
它除了定义obj-y来指定根目录下要编进程序去的文件、子目录外,主要是定义工具链、编译参数、链接参数──就是文件中用export导出的各变量。
三、顶层目录的Makefile.build:
这是最复杂的部分,它的功能就是把某个目录及它的所有子目录中、需要编进程序去的文件都编译出来,打包为built-in.o
四、怎么使用这套Makefile:
1.把顶层Makefile, Makefile.build放入程序的顶层目录
2.修改顶层Makefile
2.1 修改工具链
2.2 修改编译选项、链接选项
2.3 修改obj-y决定顶层目录下哪些文件、哪些子目录被编进程序
2.4 修改TARGET,这是用来指定编译出来的程序的名字
在各一个子目录下都建一个Makefile,形式为:
obj-y += file1.o
obj-y += file2.o
obj-y += subdir1/
obj-y += subdir2/执行”make”来编译,执行”make clean”来清除,执行”make distclean”来彻底清除
http://www.cnblogs.com/amanlikethis/p/3675486.html
讲解了内核makefile结构,很详细。
7、单链表操作&函数指针
7.1、单链表的操作
单链表的概念:
data + next 数据域 指针域
单链表的构造:
创建头节点 、增加节点、修改节点、查询节点 、删除节点 、释放节点
节点结构: typedef int datatype; typedef struct _node_ { datatype data; struct _node_ * next; }linknode;
我这里就只贴一个 增加节点
尾部增加法:
tmp= L;
while(tmp->next)
{
tmp= tmp->next
}
tmp->next = node;
让我们看看项目代码:
7.2、函数指针:
函数指针在项目中大量运用,我们一起分析下项目中的这个定义。
int (*GetFontBitmap(unsigned int dwCode, PT_FontBitMap ptFontBitMap))
函数指针是存放函数的地址的指针,函数地址是一个函数的入口地址。
当一个函数指针指向了一个函数,就可以通过这个指针来调用该函数,可以将函数作为参数传递给函数指针。
函数指针声明方式:
<数据类型> (*<函数的指针名称>)(<参数说明列表>)
8、字符编码
分类:
GBK —> 内地(gb2312)
BIG5 —>港澳台
ASCII —>二进制码
目的:为了统一数值和某个字符的关系。
结果:Unicode编码表—>(用三个字节表示一个unicode码)(过于浪费出现了)
表示方法:
UTF-8——>(前段EF BB BF)(容错性)
UTF-16le(小端)
UTF-16be(大端)
这里重点说下UTF-8
———未完待续
- 文件浏览器_数码相框项目总结 (上)
- 数码相框项目
- 数码相框项目模块【二】 UART
- 数码相框项目模块【三】 KEY
- 数码相框项目模块【四】 TIMER
- 数码相框项目之LCD模块
- 数码相框项目之触摸屏模块
- 特权的DIY数码相框总结
- linux应用项目(一)数码相框(1)数码相框之系统框架
- linux应用项目(一)数码相框(3)数码相框之电子书
- 数码相框项目模块【一】 跑马灯
- 数码相框实现遍历文件夹图片文件
- 数码相框实现遍历文件夹图片文件
- 数码相框
- 数码相框笔记
- linux应用项目(一)数码相框(2)数码相框之freetype实现矢量字体的显示
- 浏览器兼容问题项目总结(一)浏览器
- 韦东山第三期视频数码相框中的电子书项目的ShowOnePage函数解析
- 初识HTTP
- Linux errno 错误对照表
- BZOJ2863 愤怒的元首
- 第一篇--python selenium 环境配置
- 6、ICMP:Internet控制报文协议
- 文件浏览器_数码相框项目总结 (上)
- HDU1792(公式)
- UILabel,UITextField,UIButton,UIimageView
- [DFS] HOJ 1797 Red and Black
- Eigen 输出格式
- Linux 的字符串截取很有用:有八种方法。
- 汇编中调用printf
- Python---4.文件读写
- 百家讲坛 大风歌