物流设备管理系统界面.docx

上传人:b****2 文档编号:3187771 上传时间:2023-05-05 格式:DOCX 页数:29 大小:23.07KB
下载 相关 举报
物流设备管理系统界面.docx_第1页
第1页 / 共29页
物流设备管理系统界面.docx_第2页
第2页 / 共29页
物流设备管理系统界面.docx_第3页
第3页 / 共29页
物流设备管理系统界面.docx_第4页
第4页 / 共29页
物流设备管理系统界面.docx_第5页
第5页 / 共29页
物流设备管理系统界面.docx_第6页
第6页 / 共29页
物流设备管理系统界面.docx_第7页
第7页 / 共29页
物流设备管理系统界面.docx_第8页
第8页 / 共29页
物流设备管理系统界面.docx_第9页
第9页 / 共29页
物流设备管理系统界面.docx_第10页
第10页 / 共29页
物流设备管理系统界面.docx_第11页
第11页 / 共29页
物流设备管理系统界面.docx_第12页
第12页 / 共29页
物流设备管理系统界面.docx_第13页
第13页 / 共29页
物流设备管理系统界面.docx_第14页
第14页 / 共29页
物流设备管理系统界面.docx_第15页
第15页 / 共29页
物流设备管理系统界面.docx_第16页
第16页 / 共29页
物流设备管理系统界面.docx_第17页
第17页 / 共29页
物流设备管理系统界面.docx_第18页
第18页 / 共29页
物流设备管理系统界面.docx_第19页
第19页 / 共29页
物流设备管理系统界面.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

物流设备管理系统界面.docx

《物流设备管理系统界面.docx》由会员分享,可在线阅读,更多相关《物流设备管理系统界面.docx(29页珍藏版)》请在冰点文库上搜索。

物流设备管理系统界面.docx

物流设备管理系统界面

 

广西科技大学

 

课程设计报告

 

设计名称:

物流设备界面管理系统

专业班级:

自动化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&");

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2