物流设备管理系统界面.docx
- 文档编号:16903490
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:29
- 大小:23.54KB
物流设备管理系统界面.docx
《物流设备管理系统界面.docx》由会员分享,可在线阅读,更多相关《物流设备管理系统界面.docx(29页珍藏版)》请在冰点文库上搜索。
物流设备管理系统界面
广西科技大学
课程设计报告
设计名称:
物流设备界面管理系统
专业班级:
自动化142
学生姓名:
学生学号:
指导教师:
设计时间:
2016.11
1、设计介绍
1.1设计目的
此次课程设计是基于s5pv210芯片在linux系统上进行编程设计。
旨在通过具体的工程项目实训能够使我们基本掌握在虚拟机环境下,运用linux系统指令进行程序设计与编写;理解模块化的设计思想以及学会利用库函数进行编程;熟知函数之间的封装,调用与API接口。
为将来进行大规模的系统设计与开发打下良好基础。
1.2课题分析
课题名称为“物流设备界面管理系统”,具体分为4大模块:
Wife设备管理,Camrea设别管理,Zigbee设备管理以及RFID管理。
希望能够通过编程实现每个设备的借还记录管理,方便仓库管理人员对设备的管理与维护。
具体描述为,当从仓库中向外借出设备时,该设备的数量减一;反之数量加一。
如此,可大大减轻相关人员的工作量,实现设备的自动化管理。
2、系统硬件模块
由于此次设计是由校企合作和培训机构导师进行讲解,于是我们硬件模块用到了S5PV210的开发板。
一下详细介绍这块芯片以及我们系统使用到开发板的相应功能模块。
2.1S5PV210
S5PV210采用了ARMCortexTM-A8内核,ARMV7指令集,主频可达1GHZ,64/32位内部总线结构,32/32KB的数据/指令一级缓存,512KB的二级缓存,可以实现2000DMIPS(每秒运算2亿条指令集)的高性能运算能力。
S5PV210包含很多强大的硬件编解码功能,内建MFC(MultiFormatCodec),支持MPEG-1/2/4,H.263,H.264等格式视频的编解码,支持模拟/数字TV输出。
JPEG硬件编解码,最大支持8000x8000分辨率,内建高性能PowerVRSGX5403D图形引擎和2D图形引擎,支持2D/3D图形加速,是第五代PowerVR产品,其多边形生成率为2800万多边形/秒,像素填充率可达2.5亿/秒,在3D和多媒体方面比以往大幅提升,能够支持DX9,SM3.0,OpenGL2.0等PC级别显示技术。
具备IVA3硬件加速器,具备出色的图形解码性能,可以支持全高清、多标准的视频编码,流畅播放和录制30帧/秒的1920×1080像素(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月份发布的Linux2.4版内核已经能够完全支持Intel 64位芯片架构。
同时Linux也支持多处理器技术。
多个处理器同时工作,使系统性能大大提高。
3.2编译工具
因为装了ubantu的虚拟机所以采用了交叉编译,编译工具为gcc。
GCC的外部接口长得像一个标准的Unix编译器。
使用者在命令列下键入gcc之程序名,以及一些命令参数,以便决定每个输入档案使用的个别语言编译器,并为输出程序码使用适合此硬件平台的组合语言编译器,并且选择性地执行连接器以制造可执行的程序。
每个语言编译器都是独立程序,此程序可处理输入的原始码,并输出组合语言码。
全部的语言编译器都拥有共通的中介架构:
一个前端解析符合此语言的原始码,并产生一抽象语法树,以及一翻译此语法树成为GCC的暂存器转换语言〈RTL〉的后端。
编译器最佳化与静态程序码解析技术(例如FORTIFY_SOURCE,一个试图发现缓冲区溢位〈bufferoverflow〉的编译器)在此阶段应用于程序码上。
最后,适用于此硬件架构的组合语言程序码以JackDavidson与ChrisFraser发明的算法产出。
几乎全部的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"
#defineTS_DEV"/dev/event0"
#defineLCD_DEV"/dev/fb0"
intlcd_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("mmapg_fd_menfailed!
\n");
return-1;
}
return0;
}
intshow_shape(unsignedlong*g_fd_men,intx,inty,intw,inth,constchar*pathname)
{
intbmp_fd,i,j;
charbmp_buffer[w*h*3];
intlcd_buffer[w*h];
bmp_fd=open(pathname,O_RDONLY);//图片首地址
if(bmp_fd==-1)
{
printf("openfailed!
\n");
return-1;
}
lseek(bmp_fd,54,SEEK_SET);
read(bmp_fd,bmp_buffer,sizeof(bmp_buffer));
for(i=0;i { lcd_buffer[i]=bmp_buffer[3*i]|bmp_buffer[3*i+1]<<8|bmp_buffer[3*i+2]<<16; } for(i=0;i for(j=0;j { *(g_fd_men+(y+i)*800+x+j)=lcd_buffer[(h-1-i)*w+j]; } close(bmp_fd); return0; } show_wifi_number(intx,inty,intwifi) { intfd; charbuffer[1]; show_shape(g_fd_men,x,y,72,72,bmp[wifi]); } 4.2wifi设备模块 4.2.1功能描述 此模块主要实现,wifi设备的数量管理以及语音提示相关操作人员的误操作。 涉及到的有图片处理用于显示当前数量以及相关按键;语音提示数量已达上下限。 4.2.2程序代码 voidwifi(void) { //显示wifi设备主页 show_shape(g_fd_men,0,0,800,480,"wifi.bmp"); //显示wifi初始值 //show_shape(g_fd_men,540,18,118,118,"5.bmp"); //wifi数量初值 intwifi=wifi_init; bai=wifi/100; shi=wifi%100/10; ge=wifi%100%10; show_wifi_number(512,33,bai); show_wifi_number(602,33,shi);//x+20 show_wifi_number(692,33,ge); //进行坐标扫描 while (1) { //扫描是不是有触摸按下,读坐标的值 ts_read(ts,&samp,1); if(samp.x>345&&samp.x<458&&samp.y>230&&samp.y<317&&(samp.pressure>0)){ system("madplaycity_in_sky.mp3-r&"); } if(samp.x>29&&samp.x<110&&samp.y>391&&samp.y<461&&(samp.pressure>0)){ system("killall-9madplaycity_in_sky.mp3"); } if(samp.x>28&&samp.x<170&&samp.y>200 &&samp.y<275&&(samp.pressure>0)) { if(wifi>0){ 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+20 show_wifi_number(692,33,ge); } else{ //system("killall-STOPmadplaycity_in_sky.mp3&");//暂停 system("madplaywifi1.mp3&"); //system("killall-CONTmadplaycity_in_sky.mp3&"); } } if(samp.x>630&&samp.x<770&&samp.y>200 &&samp.y<275&&(samp.pressure>0)) { { //while(wifi<1000){ if(wifi<10){ bai=wifi/100; shi=wifi%100/10; ge=wifi%100%10; show_wifi_number(512,33,bai); show_wifi_number(602,33,shi);//x+20 show_wifi_number(692,33,ge); wifi++; } else{ //system("killall-STOPmadplaycity_in_sky.mp3&"); system("madplaywifi2.mp3&"); //system("killall-CONTmadplaycity_in_sky.mp3&"); } } if(samp.x>490&&samp.x<780&&samp.y>360 &&samp.y<442&&(samp.pressure>0)) { 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" #defineTS_DEV"/dev/event0" #defineLCD_DEV"/dev/fb0"//打开屏幕 #definewifi_init5 #definecamrea_init5 #definezigbee_init5 #definerfid_init5 structtsdev*ts; structts_samplesamp; unsignedlong*g_fd_men;//得到的地址不变 intg_lcd_fd; intge,shi,bai; charbmp[10][6]={"0.bmp","1.bmp","2.bmp","3.bmp","4.bmp","5.bmp","6.bmp","7.bmp","8.bmp","9.bmp"; //初始化屏幕 intlcd_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("mmapg_fd_menfailed! \n"); return-1; } return0; } //解除映射 intlcd_uninit(void) { munmap(g_fd_men,800*480*4);//该调用在进程地址空间中解除一个映射关系,addr是调用mmap()时返回的地址, //len是映射区的大小。 当映射关系解除后,对原来映射地址的访问将导致段错误发生。 } /*unsignedlong*g_fd_men映射的起始地址 *intx控件起始坐标x *inty控件起始坐标y *intw控件的宽 *inth控件的高 *intcolor控件的颜色 * */ //open(constchar*pathname,intflags) //图片处理 intshow_shape(unsignedlong*g_fd_men,intx,inty,intw,inth,constchar*pathname) { intbmp_fd,i,j; charbmp_buffer[w*h*3]; intlcd_buffer[w*h]; bmp_fd=open(pathname,O_RDONLY);//图片首地址 if(bmp_fd==-1) { printf("openfailed! \n"); return-1; } lseek(bmp_fd,54,SEEK_SET); read(bmp_fd,bmp_buffer,sizeof(bmp_buffer)); for(i=0;i { lcd_buffer[i]=bmp_buffer[3*i]|bmp_buffer[3*i+1]<<8|bmp_buffer[3*i+2]<<16; } for(i=0;i for(j=0;j { *(g_fd_men+(y+i)*800+x+j)=lcd_buffer[(h-1-i)*w+j]; } close(bmp_fd); return0; } intshow_wifi_number(intx,inty,intwifi) { /*intfd; charbuffer[1]; //打开存储WIFI设备的文件 fd=open("wifi",O_RDWR);//打开 if(fd==-1) { printf("openwififailure\n"); return-1; } //从文件WIFI中读取出数量,并存储在数据中 read(fd,buffer,sizeof(buffer));//从文件中读出来的为字符 //读取到的值为字符类型 printf("buffer=%c\n",buffer[0]); wifi_number=buffer[0]-48; */ show_shape(g_fd_men,x,y,72,72,bmp[wifi]); //close(fd); } voidwifi(void) { //显示wifi设备主页 show_shape(g_fd_men,0,0,800,480,"wifi.bmp"); //显示wifi初始值 //show_shape(g_fd_men,540,18,118,118,"5.bmp"); //wifi数量初值 intwifi=wifi_init; bai=wifi/100; shi=wifi%100/10; ge=wifi%100%10; show_wifi_number(512,33,bai); show_wifi_number(602,33,shi);//x+20 show_wifi_number(692,33,ge); //进行坐标扫描 while (1) { //扫描是不是有触摸按下,读坐标的值 ts_read(ts,&samp,1); if(samp.x>345&&samp.x<458&&samp.y>230&&samp.y<317&&(samp.pressure>0)){ system("madplaycity_in_sky.mp3-r&"); } if(samp.x>29&&samp.x<110&&samp.y>391&&samp.y<461&&(samp.pressure>0)){ system("killall-9madplaycity_in_sky.mp3"); //system("killall-STOPmadplay&"); } //借坐标 if(samp.x>28&&samp.x<170&&samp.y>200 &&samp.y<275&&(samp.pressure>0)) { if(wifi>0){ 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+20 show_wifi_number(692,33,ge); } else{ //system("killall-STOPmadplaycity_in_sky.mp3&");//暂停 system("madplaywifi1.mp3&"); //system("killall-CONTmadplaycity_in_sky.mp3&"); } } // //还坐标 if(samp.x>630&&samp.x<770&&samp.y>200 &&samp.y<275&&(samp.pressure>0)) { //while(wifi<1000){ if(wifi<10){ bai=wifi/100; shi=wifi%100/10; ge=wifi%100%10; show_wifi_number(512,33,bai); show_wifi_number(602,33,shi);//x+20 show_wifi_number(692,33,ge); wifi++; } else{ //system("killall-STOPmadplaycity_in_sky.mp3&"); system("madplaywifi2.mp3&"); //system("killall-CONTmadplaycity_in_sky.mp3&"); } } //
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 物流 设备管理 系统 界面