基于RFID的仓库管理系统设计讲解Word格式文档下载.docx
《基于RFID的仓库管理系统设计讲解Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于RFID的仓库管理系统设计讲解Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。
最基本的RFID系统由三部分组成:
A、标签(有、无源):
由耦合元件及芯片组成,每个标签具有唯一的电子编码,附着在物体上标识目标对象;
B、读写器:
读取(可以写入)标签信息的设备;
C、天线:
在标签和读取器间传递射频信号。
摘要
关键字
1.案例描述应用
1.1系统特色及应用领域.……………………………………………………4
二.需求分析
2.1.实验箱模块的选择……………………………………………………5
2.2.开发语言的选择……………………………………………………6
2.3.存储系统设计及分析……………………………………………………8
3.整体描述和实现
4.1.系统模块的连接………………………………………9
4.2.系统模块的数据读写设计………………………………………11
4.3.应用系统UI设计………………………………………13
四.代码……………………………………………………..……15
五.总结……………………………………………………………29
六.致谢……………………………………………………………30
参考文件………………………………………………………31
1.案例描述
1.1应用系统特色及应用领域
信息的管理。
它不但增加了一天内处理货物的件数,还监看着这些货物的一切信息。
射频卡是贴在货物所通过的仓库大门边上,读写器和天线都放在叉车上,每个货物都贴有条码,所有条码信息都被存储在仓库的中心计算机里,该货物的有关信息都能在计算机里查到。
当货物被装走运往别地时,由另一读写器识别并告知计算机中心它被放在哪个拖车上。
这样管理中心可以实时地了解到已经生产了多少产品和发送了多少产品。
并可自动识别货物,确定货物的位置。
另外,从全球发展趋势来看,随着RFID相关技术的不断完善和成熟,RFID产业将成为一个新兴的高技术产业群,成为国民经济新的增长点。
因此,RFID技术有望成为推动现代物流加速发展的润滑剂。
二.需求分析:
1、所有的设备均配备有唯一标识的RFID标签。
通过固定读写器和天线可以实现对货架上的所有设备进行进行实施的状态跟踪。
2、可通过手持机随时获取设备编码并查询设备相关信息。
3、可使用手持机在一定距离内对货架上的设备进行定位。
4、可以通过管理系统提供设备外借归还功能。
5、管理系统可以提供查询功能,可随时获知各设备的状态。
6、设备库房出入口配备有固定读写装置,当带有标签的设备在到达出入区域时,该设备的信息和进入时间将会被
7、对于未办理外借手续的设备到达出入区域时,系统将会发出报警并记录。
8、系统配备有盘点功能,利用PDA可以实现对设备的快速盘点并生成盘点文件。
2.1实验箱模块的选择;
高频RFID阅读器
设计中选用高频阅读器模块,做基于高频RFID的实验室管理系统。
考虑到高频工作频率在3MHz~30MHz,典型频率为13.56MHz。
其工作范围比较大,性价比高,综合考虑采用高频RFID阅读器。
2.2开发语言的选择;
MicrosoftVisualC++,(简称VisualC++、MSVC、VC++或VC)微软公司的C++开发工具,具有集成开发环境,可提供编辑C语言,C++以及C++/CLI等编程语言。
VC++整合了便利的除错工具,特别是整合了微软视窗程式设计(WindowsAPI)、三维动画DirectXAPI,Microsoft.NET框架它以拥有“语法高亮”,IntelliSense(自动完成功能)以及高级除错功能而著称。
比如,它允许用户进行远程调试,单步执行等。
还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。
其编译及建置系统以预编译头文件、最小重建功能及累加连结著称。
这些特征明显缩短程式编辑、编译及连结花费的时间,在大型软件计划上尤其显著。
VisualStudio是微软公司推出的开发环境,VisualStudio可以用来创建Windows平台下的Windows应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和Office插件。
VisualStudio是目前最流行的Windows平台应用程序开发环境。
VisualStudio2008包括各种增强功能,例如可视化设计器(使用.NETFramework3.5加速开发)、对Web开发工具的大量改进,以及能够加速开发和处理所有类型数据的语言增强功能。
VisualStudio2008为开发人员提供了所有相关的工具和框架支持,帮助创建引人注目的、令人印象深刻并支持AJAX的Web应用程序。
[2]
开发人员能够利用这些丰富的客户端和服务器端框架轻松构建以客户为中心的Web应用程序,这些应用程序可以集成任何后端数据提供程序、在任何当前浏览器内运行并完全访问ASPNET应用程序服务和Microsoft平台。
2.3存储系统设计及分析;
SQLServer
SQLServer是一个关系数据库管理系统。
它最初是由MicrosoftSybase和Ashton-Tate三家公司共同开发的,于1988年推出了第一个OS/2版本。
在WindowsNT推出后,Microsoft与Sybase在SQLServer的开发上就分道扬镳了,Microsoft将SQLServer移植到WindowsNT系统上,专注于开发推广SQLServer的WindowsNT版本。
Sybase则较专注于SQLServer在UNIX操作系统上的应用。
SQLServer2000是Microsoft公司推出的SQLServer数据库管理系统,该版本继承了SQLServer7.0版本的优点,同时又比它增加了许多更先进的功能。
具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行MicrosoftWindows98的膝上型电脑到运行MicrosoftWindows2000的大型多处理器的服务器等多种平台使用。
三.整体描述和实现(在实验室搭建):
3.1系统模块的连接
3.2系统模块的数据读写设计
1)建立数据库,2)建立信息存储表,3)通过DBMS连接SQLserver,将开发软件vs2005通过ADO连接数据库,在系统中插入原始表,用来存储信息
3.3应用系统UI设计
1)系统流程分析
根据物联网的结构定义和设备资产管理领域的实际情况,智能货架管理方案将根据功能划分为三层,即感知层、网络层和应用层,具体的系统结构如下图;
如图所示,货架上各个设备均安装的RFID无源抗金属标签、货架上安装的固定读写器和天线组、PDA手持机、位于出入口的固定读写器及天线以及资产借还器组成了RFID智能货架管理系统,其工作原理和流程如下:
2)系统UI设计
4.代码
//课设.cpp:
Definestheclassbehaviorsfortheapplication.
//
#include"
RFID.h"
智能货架.h"
智能货架Dlg.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
//CMyApp
BEGIN_MESSAGE_MAP(CMyApp,CWinApp)
//{{AFX_MSG_MAP(CMyApp)
//NOTE-theClassWizardwilladdandremovemappingmacroshere.
//DONOTEDITwhatyouseeintheseblocksofgeneratedcode!
//}}AFX_MSG
ON_COMMAND(ID_HELP,CWinApp:
:
OnHelp)
END_MESSAGE_MAP()
//CMyAppconstruction
CMyApp:
CMyApp()
{
//TODO:
addconstructioncodehere,
//PlaceallsignificantinitializationinInitInstance
}
//TheoneandonlyCMyAppobject
CMyApptheApp;
//CMyAppinitialization
BOOLCMyApp:
InitInstance()
AfxEnableControlContainer();
//Standardinitialization
//Ifyouarenotusingthesefeaturesandwishtoreducethesize
//ofyourfinalexecutable,youshouldremovefromthefollowing
//thespecificinitializationroutinesyoudonotneed.
#ifdef_AFXDLL
Enable3dControls();
//CallthiswhenusingMFCinasharedDLL
#else
Enable3dControlsStatic();
//CallthiswhenlinkingtoMFCstatically
CMyDlgdlg;
m_pMainWnd=&
dlg;
intnResponse=dlg.DoModal();
if(nResponse==IDOK)
{
//TODO:
Placecodeheretohandlewhenthedialogis
//dismissedwithOK
}
elseif(nResponse==IDCANCEL)
//dismissedwithCancel
//Sincethedialoghasbeenclosed,returnFALSEsothatweexitthe
//application,ratherthanstarttheapplication'
smessagepump.
returnFALSE;
//课设Dlg.cpp:
implementationfile
stdafx.h"
课设.h"
课设Dlg.h"
//CAboutDlgdialogusedforAppAbout
classCAboutDlg:
publicCDialog
public:
CAboutDlg();
//DialogData
//{{AFX_DATA(CAboutDlg)
enum{IDD=IDD_ABOUTBOX};
//}}AFX_DATA
//ClassWizardgeneratedvirtualfunctionoverrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtualvoidDoDataExchange(CDataExchange*pDX);
//DDX/DDVsupport
//}}AFX_VIRTUAL
//Implementation
protected:
//{{AFX_MSG(CAboutDlg)
DECLARE_MESSAGE_MAP()
};
CAboutDlg:
CAboutDlg():
CDialog(CAboutDlg:
IDD)
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
voidCAboutDlg:
DoDataExchange(CDataExchange*pDX)
CDialog:
DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
//Nomessagehandlers
//}}AFX_MSG_MAP
//CMyDlgdialog
CMyDlg:
CMyDlg(CWnd*pParent/*=NULL*/)
:
CDialog(CMyDlg:
IDD,pParent)
//{{AFX_DATA_INIT(CMyDlg)
//NOTE:
theClassWizardwilladdmemberinitializationhere
//NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32
m_hIcon=AfxGetApp()->
LoadIcon(IDR_MAINFRAME);
voidCMyDlg:
//{{AFX_DATA_MAP(CMyDlg)
theClassWizardwilladdDDXandDDVcallshere
BEGIN_MESSAGE_MAP(CMyDlg,CDialog)
//{{AFX_MSG_MAP(CMyDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON4,OnButton4)
ON_BN_CLICKED(IDC_BUTTON5,&
OnBnClickedButton5)
//CMyDlgmessagehandlers
BOOLCMyDlg:
OnInitDialog()
OnInitDialog();
//Add"
About..."
menuitemtosystemmenu.
//IDM_ABOUTBOXmustbeinthesystemcommandrange.
ASSERT((IDM_ABOUTBOX&
0xFFF0)==IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX<
0xF000);
CMenu*pSysMenu=GetSystemMenu(FALSE);
if(pSysMenu!
=NULL)
CStringstrAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if(!
strAboutMenu.IsEmpty())
{
pSysMenu->
AppendMenu(MF_SEPARATOR);
AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);
}
//Settheiconforthisdialog.Theframeworkdoesthisautomatically
//whentheapplication'
smainwindowisnotadialog
SetIcon(m_hIcon,TRUE);
//Setbigicon
SetIcon(m_hIcon,FALSE);
//Setsmallicon
Addextrainitializationhere
returnTRUE;
//returnTRUEunlessyousetthefocustoacontrol
OnSysCommand(UINTnID,LPARAMlParam)
if((nID&
0xFFF0)==IDM_ABOUTBOX)
CAboutDlgdlgAbout;
dlgAbout.DoModal();
else
CDialog:
OnSysCommand(nID,lParam);
//Ifyouaddaminimizebuttontoyourdialog,youwillneedthecodebelow
//todrawtheicon.ForMFCapplicationsusingthedocument/viewmodel,
//thisisautomaticallydoneforyoubytheframework.
OnPaint()
if(IsIconic())
CPaintDCdc(this);
//devicecontextforpainting
SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);
//Centericoninclientrectangle
intcxIcon=GetSystemMetrics(SM_CXICON);
intcyIcon=GetSystemMetrics(SM_CYICON);
CRectrect;
GetClientRect(&
rect);
intx=(rect.Width()-cxIcon+1)/2;
inty=(rect.Height()-cyIcon+1)/2;
//Drawtheicon
dc.DrawIcon(x,y,m_hIcon);
OnPaint();
//Thesystemcallsthistoobtainthecursortodisplaywhiletheuserdrags
//theminimizedwindow.
HCURSORCMyDlg:
OnQueryDragIcon()
return(HCURSOR)m_hIcon;
OnButton4()
//T