




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、 设计介绍31.1 设计目的31.2 课题分析3二、 系统硬件模块32.1 S5PV2103三、 系统软件43.1 操作系统43.2 编译工具4四、 模块划分44.1主界面模块44.1.1 功能描述44.1.2 程序代码54.2 wifi设备模块64.2.1 功能描述64.2.2 程序代码6五、 结束语8六、 附录9 6.1 设备管理完整代码9 广 西 科 技 大 学 课 程 设 计 报 告 设 计 名 称: 物流设备界面管理系统 专 业 班 级: 自动化142 学 生 姓 名: 学 生 学 号: 指 导 教 师: 设 计 时 间: 2016.11 1、 设计介绍 1.1 设计目的 此次课程设计是基于s5pv210芯片在linux系统上进行编程设计。旨在通过具体的工程项目实训能够使我们基本掌握在虚拟机环境下,运用linux系统指令进行程序设计与编写;理解模块化的设计思想以及学会利用库函数进行编程;熟知函数之间的封装,调用与API接口。为将来进行大规模的系统设计与开发打下良好基础。 1.2 课题分析课题名称为“物流设备界面管理系统”,具体分为4大模块:Wife设备管理,Camrea设别管理,Zigbee设备管理以及RFID管理。希望能够通过编程实现每个设备的借还记录管理,方便仓库管理人员对设备的管理与维护。具体描述为,当从仓库中向外借出设备时,该设备的数量减一;反之数量加一。如此,可大大减轻相关人员的工作量,实现设备的自动化管理。2、 系统硬件模块 由于此次设计是由校企合作和培训机构导师进行讲解,于是我们硬件模块用到了S5PV210的开发板。一下详细介绍这块芯片以及我们系统使用到开发板的相应功能模块。2.1 S5PV210 S5PV210采用了ARM CortexTM-A8内核,ARM V7指令集,主频可达1GHZ,64/32位内部总线结构,32/32KB的数据/指令一级缓存,512KB的二级缓存,可以实现2000DMIPS(每秒运算2亿条指令集)的高性能运算能力。S5PV210包含很多强大的硬件编解码功能,内建MFC(Multi Format Codec),支持MPEG-1/2/4,H.263,H.264等格式视频的编解码,支持模拟/数字TV输出。JPEG硬件编解码,最大支持8000x8000分辨率,内建高性能PowerVR SGX540 3D图形引擎和2D图形引擎,支持2D/3D图形加速,是第五代PowerVR产品,其多边形生成率为2800万多边形/秒,像素填充率可达2.5亿/秒,在3D和多媒体方面比以往大幅提升,能够支持DX9,SM3.0,OpenGL2.0等PC级别显示技术。具备IVA3硬件加速器,具备出色的图形解码性能,可以支持全高清、多标准的视频编码,流畅播放和录制30帧/秒的19201080像素(1080p)的视频文件,可以更快解码更高质量的图像和视频,同时,内建的HDMIv1.3,可以将高清视频输出到外部显示器上。此次设计我们主要用到了一下模块:LCD屏幕显示,触摸板,以及摄像头等模块。3、 系统软件 3.1 操作系统这次设计选择了linux作为操作系统。Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似Windows图形界面的X-Window系统,用户可以使用鼠标对其进行操作。在X-Window环境中就和在Windows中相似,可以说是一个Linux版的Windows。Linux可以运行在多种硬件平台上,如具有x86、680x0、SPARC、Alpha等处理器的平台。此外Linux还是一种嵌入式操作系统,可以运行在掌上电脑、机顶盒或游戏机上。2001年1月份发布的Linux 2.4版内核已经能够完全支持Intel64位芯片架构。同时Linux也支持多处理器技术。多个处理器同时工作,使系统性能大大提高。 3.2 编译工具 因为装了ubantu的虚拟机所以采用了交叉编译,编译工具为gcc。GCC的外部接口长得像一个标准的Unix编译器。使用者在命令列下键入gcc之程序名,以及一些命令参数,以便决定每个输入档案使用的个别语言编译器,并为输出程序码使用适合此硬件平台的组合语言编译器,并且选择性地执行连接器以制造可执行的程序。每个语言编译器都是独立程序,此程序可处理输入的原始码,并输出组合语言码。全部的语言编译器都拥有共通的中介架构:一个前端解析符合此语言的原始码,并产生一抽象语法树,以及一翻译此语法树成为GCC的暂存器转换语言RTL的后端。编译器最佳化与静态程序码解析技术(例如FORTIFY_SOURCE,一个试图发现缓冲区溢位buffer overflow的编译器)在此阶段应用于程序码上。最后,适用于此硬件架构的组合语言程序码以Jack Davidson与Chris Fraser发明的算法产出。几乎全部的GCC都由C写成,除了Ada前端大部分以Ada写成。4、 模块划分4.1主界面模块4.1.1 功能描述主界面主要是调用了LCD屏幕显示相关机构及开发人员的详细信息,并附上属于自己的Logo。具体编程思路为:首先对LCD屏幕进行配置,相关的参数可以通过库函数进行修改;显示自己制作的Logo图片;通过循环输出每个像素点。4.1.2 程序代码#include #include #include #include #include #include #include #include tslib.h#define TS_DEV /dev/event0#define LCD_DEV /dev/fb0 int lcd_init(void)/void *则为“无类型指针”,void *可以指向任何类型的数据g_lcd_fd = open(/dev/fb0,O_RDWR); /打开屏幕g_fd_men=(unsignedlong*)mmap(NULL,800*480*4,PROT_READ|PROT_WRITE,MAP_SHARED, g_lcd_fd,0); /强制转换为无符号长整型指针if(g_fd_men = NULL)printf(mmap g_fd_men failed!n);return -1;return 0;int show_shape(unsigned long *g_fd_men,int x,int y,int w,int h,const char *pathname)int bmp_fd,i,j;char bmp_bufferw*h*3;int lcd_bufferw*h;bmp_fd = open(pathname,O_RDONLY);/图片首地址if(bmp_fd = -1)printf(open failed!n);return -1;lseek(bmp_fd,54,SEEK_SET);read(bmp_fd,bmp_buffer,sizeof(bmp_buffer);for(i=0;iw*h;i+)lcd_bufferi = bmp_buffer3*i | bmp_buffer3*i+18 | bmp_buffer3*i+216; for(i=0;ih;i+)for(j=0;j345&samp.x230&samp.y0)system(madplay city_in_sky.mp3 -r &);if(samp.x29&samp.x391&samp.y0)system(killall -9 madplay city_in_sky.mp3);if(samp.x28 & samp.x200& samp.y0)if(wifi0)wifi-;bai = wifi/100; shi = wifi%100/10; ge = wifi%100%10;show_wifi_number(512,33,bai);show_wifi_number(602,33,shi);/x+20show_wifi_number(692,33,ge);else / system(killall -STOP madplay city_in_sky.mp3 &);/暂停system(madplay wifi1.mp3 &); / system(killall -CONT madplay city_in_sky.mp3 &);if(samp.x630 & samp.x200& samp.y0)/while(wifi1000)if(wifi490 & samp.x360& samp.y0)show_shape(g_fd_men,0,0,800,480,index.bmp);break;剩余三个模块与wifi设备管理大同小异,限于篇幅,不做多余描述,具体代码至附录中进行查阅。5、 结束语通过此次课程设计我知道了设计是一个把需求分析、程序编写、程序调试、撰写报告结合为一体的过程。在这个过程中,不仅锻炼了我们缜密的思维和坚持不解的毅力,更磨练了一个队伍的团结互助的精神。只有通过大家一起努力才能将课程设计的所有环节都顺利的完成。另外程序设计中我们遇到问题并解决问题的过程,使得我们独自探索并解决问题的能力了有了一个提高,这有利于我们以后的学习。同时这整一个过程,也使我们对程序编写的整个过程有了一个统筹全局的思想,因为需求分析、程序编写、程序调试、撰写报告这些过程是环环相扣的,绝对不可能独立进行。课程设计是学习C程序设计后对知识的全面测试,刚拿到题目时不知道怎么去处理,觉得很复杂,经过和小组成员的讨论,上网查资料,逐个问题逐个击破,问题不再那么复杂。通过课程设计,我发现自己还存在很多知识漏洞,编写程序时,经常会出现低级错误,很多知识点都不熟悉。在今后的时间里,我一定要投入更多精力学习C语言,以课本为基础,请教老师,与同学讨论努力将课堂上的内容与实践融为一体。 6、 附录 6.1 设备管理完整代码#include #include #include #include #include #include #include #include tslib.h#define TS_DEV /dev/event0#define LCD_DEV /dev/fb0 /打开屏幕#define wifi_init 5#define camrea_init 5#define zigbee_init 5#define rfid_init 5struct tsdev *ts;struct ts_sample samp;unsigned long *g_fd_men; /得到的地址不变int g_lcd_fd;int ge,shi,bai;char bmp106=0.bmp,1.bmp,2.bmp,3.bmp,4.bmp,5.bmp,6.bmp,7.bmp,8.bmp,9.bmp;/初始化屏幕int lcd_init(void)/void *则为“无类型指针”,void *可以指向任何类型的数据g_lcd_fd = open(/dev/fb0,O_RDWR); /打开屏幕g_fd_men=(unsignedlong*)mmap(NULL,800*480*4,PROT_READ|PROT_WRITE,MAP_SHARED, g_lcd_fd,0);/强制转换为无符号长整型指针if(g_fd_men = NULL)printf(mmap g_fd_men failed!n);return -1;return 0;/解除映射int lcd_uninit(void)munmap(g_fd_men,800*480*4);/该调用在进程地址空间中解除一个映射关系,addr是调用mmap()时返回的地址, /len是映射区的大小。当映射关系解除后,对原来映射地址的访问将导致段错误发生。 /*unsigned long *g_fd_men 映射的起始地址 *int x 控件起始坐标x *int y 控件起始坐标y *int w 控件的宽 *int h 控件的高 *int color 控件的颜色 */ /open(const char *pathname,int flags) /图片处理int show_shape(unsigned long *g_fd_men,int x,int y,int w,int h,const char *pathname)int bmp_fd,i,j;char bmp_bufferw*h*3;int lcd_bufferw*h;bmp_fd = open(pathname,O_RDONLY);/图片首地址if(bmp_fd = -1)printf(open failed!n);return -1;lseek(bmp_fd,54,SEEK_SET);read(bmp_fd,bmp_buffer,sizeof(bmp_buffer);for(i=0;iw*h;i+)lcd_bufferi = bmp_buffer3*i | bmp_buffer3*i+18 | bmp_buffer3*i+216; for(i=0;ih;i+)for(j=0;j345&samp.x230&samp.y0)system(madplay city_in_sky.mp3 -r &);if(samp.x29&samp.x391&samp.y0)system(killall -9 madplay city_in_sky.mp3);/system(killall -STOP madplay &);/借坐标if(samp.x28 & samp.x200& samp.y0)if(wifi0)wifi-;bai = wifi/100; shi = wifi%100/10; ge = wifi%100%10;show_wifi_number(512,33,bai);show_wifi_number(602,33,shi);/x+20show_wifi_number(692,33,ge);else / system(killall -STOP madplay city_in_sky.mp3 &);/暂停system(madplay wifi1.mp3 &); / system(killall -CONT madplay city_in_sky.mp3 &);/还坐标if(samp.x630 & samp.x200& samp.y0)/while(wifi1000)if(wifi490 & samp.x360& samp.y0)show_shape(g_fd_men,0,0,800,480,index.bmp);break;int show_camrea_number(int x,int y,int camrea)show_shape(g_fd_men,x,y,72,72,bmpcamrea);/camreavoid camrea(void)int camrea=camrea_init;bai = camrea/100;shi = camrea%100/10; ge = camrea%100%10;show_shape(g_fd_men,0,0,800,480,camrea.bmp);show_camrea_number(472,59,bai);show_camrea_number(572,59,shi);/x+30show_camrea_number(672,59,ge);/进行坐标扫描while(1)/扫描是不是有触摸按下,读坐标的值ts_read(ts, &samp, 1);if(samp.x338&samp.x224&samp.y0)system(madplay missing.mp3 -r &);if(samp.x2&samp.x391&samp.y0)system(killall -9 madplay missing.mp3);/system(killall -STOP madplay missing.mp3 &); /借坐标if(samp.x67 & samp.x229& samp.y0)if(camrea0)camrea-;bai = camrea/100; shi = camrea%100/10; ge = camrea%100%10;show_camrea_number(472,59,bai);show_camrea_number(572,59,shi);/x+30show_camrea_number(672,59,ge);elsesystem(madplay wifi1.mp3 &);/还坐标if(samp.x598 & samp.x229& samp.y0)if(camrea512 & samp.x385& samp.y0)show_shape(g_fd_men,0,0,800,480,index.bmp);break;int show_zigbee_number(int x,int y,int zigbee)show_shape(g_fd_men,x,y,72,72,bmpzigbee);/zigbeevoid zigbee(void)show_shape(g_fd_men,0,0,800,480,zigbee.bmp);int zigbee=zigbee_init;bai = zigbee/100;shi = zigbee%100/10; ge = zigbee%100%10;/show_shape(g_fd_men,529,32,118,118,5.bmp);show_zigbee_number(510,30,bai);show_zigbee_number(610,30,shi);/x+30show_zigbee_number(710,30,ge);/进行坐标扫描while(1)/扫描是不是有触摸按下,读坐标的值ts_read(ts, &samp, 1);/借坐标if(samp.x62 & samp.x216& samp.y0)if(zigbee0)zigbee-;bai = zigbee/100; shi = zigbee%100/10; ge = zigbee%100%10;show_zigbee_number(510,30,bai);show_zigbee_number(610,30,shi);/x+30show_zigbee_number(710,30,ge);elsesystem(madplay wifi1.mp3 &);/还坐标if(samp.x596 & samp.x216& samp.y0)if(zigbee495 & samp.x369& samp.y0)show_shape(g_fd_men,0,0,800,480,index.bmp);break;int show_rfid_number(int x,int y,int rfid)show_shape(g_fd_men,x,y,72,72,bmprfid);/rfidvoid rfid(void)int rfid=rfid_init;bai = rfid/100;shi = rfid%100/10; ge = rfid%100%10;show_shape(g_fd_men,0,0,800,480,rfid.bmp);/show_shape(g_fd_men,436,28,118,118,5.bmp);show_rfid_number(460,36,bai);show_rfid_number(570,36,shi);/x+30show_rfid_number(680,36,ge);/进行坐标扫描while(1)/扫描是不是有触摸按下,读坐标的值ts_read(ts, &samp, 1);/借坐标if(samp.x28 & samp.x216& samp.y0)if(rfid0)rfid-;bai = rfid/100; shi = rfid%100/10; ge = rfid%100%10;show_rfid_number(460,36,bai);show_rfid_number(570,36,shi);/x+30show_rfid_number(680,36,ge);elsesystem(madplay wifi1.mp3 &);/还坐标if(samp.x630 & samp.x216& samp.y0) if(rfid507 & samp.x374& samp.y0)show_shape(g_fd_men,0,0,800,480,index.bmp);break;int main(void)/打开触摸屏ts = ts_open(TS_DEV,0);if(ts = NULL)printf(open ts failuren);return -1;/配置触摸屏int ret = ts_conf
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电厂化学专业试题及答案
- 小学专业测试题及答案
- 石油专业试题讲解及答案
- 园林专业规范试题及答案
- 电工类专业试题及答案
- JavaEE轻量级框架Struts2 spring Hibernate整合开发 第2章Struts2与MVC模式
- 深圳审计专业试题及答案
- 煤矿杂物运输施工方案
- 戗台施工方案
- 暖风工程施工方案
- 房地产项目总经理岗位职责说明
- GJB297B-2020钝化黑索今规范
- 关于懂你的600字初三作文9篇
- 2025-2026学年青岛版(五四制)(2024)小学科学三年级上册(全册)教学设计(附目录P230)
- 2025至2030年中国猫砂行业发展监测及投资战略研究报告
- 2025年理赔人员上岗考试题库
- 2025-2026年秋季学期各周国旗下讲话安排表+2025-2026学年上学期升旗仪式演讲主题安排表
- 2025年公务员(国考)之公共基础知识考试题库(带答案解析)
- 初级医学影像技术师考试试卷及答案2025年
- 幼儿园一日生活指引培训
- 宣传思想文化试题及答案
评论
0/150
提交评论