11计科4班
115031303
4鲁敏杰
嵌入式实习报告
实习内容:学习并自己动手在Ubuntu系统下制作电子相框
实验目的:Ubuntu操作系统的使用,利用C语言编写程序制作电子相框第一周学习:学习Ubuntu操作系统的简单使用
使用VMware 虚拟机搭建Ubuntu操作系统环境;作为主要由自由软件构建的操作系统,Ubuntu具有庞大的社区力量,用户可以方便地从社区获得帮助。Ubuntu的一些基本命令操作如下所示:
Ls查看系统目录下的文件
Cd进入目录 后接地址cd ..返回上级
Gedit进行编译操作 后接需要编译的文件
Cat查看文件 在编译器中查看与vi 相似
Make进行编译make clean 清理编译
Ctrl+Alt+F2 进入Ubuntu系统的控制台
Ctrl+Alt +F7退出控制台操作
ctrl + C控制台操作时终止程序运行
第二周学习:在Ubuntu中利用C语言实现图片的特效运转
电子相册的主体结构在编译器中实现编译,主要学习C语言程序的编写实现图片的特效显示 。图片特效的实现学习完毕,就开始制作电子相册,实现图片的添加。
图片的添加:图片加入文件中。在showpic.c文件中实现特效 在main.c文件中实现显示 。用C语言编写的特效有上到下、左到右、中间分屏、上下分屏、圆的扩展与缩小、四分屏等。
部分特效关键代码如下:
画点实现在屏幕中设定坐标、参数中添加了颜色
void pixel_point(struct fb_var_screeninfo fb_var,char *mem, int x, int
y, int color)//画点函数
{int *buf = (int *)((fb_var.xres*y+x)*fb_var.bits_per_pixel/8 + mem);
*buf = color;
}
利用C语言实现画圆的特效
void pixel_circle(struct fb_var_screeninfo fb_var, char *mem, int x, int
y,int len,int color)//画圆
{int i,j;
for(i=0; i
for(j=0; j
if(((j-x)*(j-x) + (i-y)*(i-y)) > (len*len))continue;
else
pixel_point(fb_var,mem,j,i,color);
}
满屏打印输出函数
voidpixel_full_screen(struct fb_var_screeninfo fb_var, char *mem,int color)//满屏
{int i,j;
for(i=0; i
for(j=0; j
pixel_point(fb_var,mem,j,i,color);
usleep(1000);
}
第三周学习:制作一个完整可运行的相册程序
编程在showpic.c函数中实现图片的特效输出;修改showpic.c添加已有特效;
编程main.c实现图片及特效的可控定向显示;完成实际操作并成功运行通过验收
学习心得:
Ubuntu操作系统与Linux操作系统相似学习起来不难,超级终端的使用就是命令行的操作,这点在以前学习的Linux操作系统中有一定的基础。最重要的感受就是特效算法的实现。这是一个学习C语言与linux的很好机会。 出现问题:
1.自下到上或者自右到左实现特效时候无法正常运行,只能出现两张图片的一半效果。
2.分屏输出出现很多重合的图片,不能按照一定的速率打印。
解决问题:
多次刷屏,当读出一半图片时候,重新读取另一半图片以及新的另一半图片。不能安装预定的方式打印图片
心得:
在为期三周的实习过程中,首先了解在VMware虚拟机上搭建的Ubuntu操作系统,加深了对Linux系统的理解和认识。其次就是学会一些基本的图片特效的实现,由于时间紧迫的缘故,不能熟练的掌握。但是实现一些基本特效还是比较容易的,对C程序又有了新的理解。总是犯一些很浅显的错误,说明还是学的不够扎实。这次实习也给了重新认识自己的机会,知道了以前学到的跟实践起来还是有很大的差别,面临工作的压力,我们这点能力是不够看的。要想找到理想的工作,同志仍需努力!