《邮件快速分拣系统的设计与实现论文08327.doc》由会员分享,可在线阅读,更多相关《邮件快速分拣系统的设计与实现论文08327.doc(50页珍藏版)》请在三一办公上搜索。
1、邮件快速分拣系统的设计与实现摘要本文以VC+6.0和SQL server 2005为基本开发工具完成了邮件快速分拣系统应用软件部分的设计与实现,基于射频识别技术对系统硬件部分进行了研究与设计。在应用软件部分,本文首先给出了系统的总体设计然后介绍了对该系统数据库方面的设计工作,并给出了数据库的相关设计信息,其中包括数据库的配置信息和数据表的设计等。接着本文介绍了在VC+6.0环境下对软件系统各功能部分的设计与实现,并包括了必要的代码信息和系统各部分的运行界面。在软件部分的实现过程中,本文还给出了设计与实现步骤。最后本文通过少量数据对系统的剩余功能进行了基本的检测。在硬件部分,本文主要对相关硬件如
2、相机、图像采集卡,PC机等进行了研究和介绍。在相机标定技术方面本文研究了相关的算法;在视觉跟踪方面研究了多假设跟踪法;在射频识别技术方面进行了硬件设计和软件设计的相关研究。通过上机调试,本系统作为邮递系统的工业自动化的一个环节在应用上有着较好的实用意义,在理论上也有一定的参考价值。关键词 分拣;函数;数据库;工业机器人; RFIDThe Design and Implementation of the Fast Mail Sorting SystemAbstractIn this paper, we use VC + +6.0 and SQL server 2005 as the basic
3、tools to complete the software part of the Fast Mail Sorting System, and use the technology of RFID to complete the hardware part of the Fast Mail Sorting System. In the software part, the paper first gives the general design of the system and then describes the design of databases, and gives the de
4、sign. then this paper describes functional part of software systems design and implementation in the environment of VC + +6.0, and include the necessary code information and part of the operating system interface. In the implementation of the software part the paper also gives the design and impleme
5、ntation steps. At last, we used small amount of data on the system to test the basic functions of detection.In hardware, this article mainly related hardware such as cameras, image acquisition card, PC machines and so on to study and introduce. In camera calibration technology, this paper studies th
6、e relevant algorithm; in the visual tracking this paper studies the multi-hypothesis tracking method; in radio frequency identification technology, this article researches in hardware design and software design. Through the machine debugging, the system as a part of postal systems automation has a g
7、ood practical sense in applications, in theory, there is a certain reference value too.Keywords Sorting; Function; Database; Industrial robots ; RFID目录摘要IAbstractII第1章 绪论11.1 课题背景11.2 相关研究状况介绍11.3 论文的主要工作与结构1第2章 系统分析与总体设计32.1 系统需求分析32.2 系统应用软件体系结构设计32.3 系统数据库设计42.4 本章小结5第3章 系统应用软件模块设计63.1 工程框架设计63.1
8、.1 设置工程主界面63.1.2 为表添加类73.1.3 设计登录模块93.2 邮件分拣信息处理模块设计113.2.1 邮件信息添加对话框设计113.2.2 手动输入与查询对话框设计123.2.3 自动输入模块133.3 分拣箱信息管理模块133.3.1 分拣箱信息添加对话框133.3.2 分拣箱信息编辑对话框143.3.3 信息说明153.4 系统用户管理模块153.4.1 用户信息编辑对话框153.4.2 用户管理对话框153.4.3 密码修改对话框163.5 本章小结16第4章 系统硬件部分174.1 系统的硬件组成174.1.1 CCD相机174.1.2 镜头184.1.3 采集卡18
9、4.1.4 PC机194.1.5 主动式RFID阅读器194.1.6 Motocom机器人194.2 相关硬件算法及技术204.2.1 相机标定技术204.2.2 目标检测224.2.3 视觉跟踪的多假设法(MHT)224.3系统模拟运行234.4本章小结24结论25本文主要工作25对后续工作的展望25致谢26参考文献27附录29附录 A29附录 B 参考英文文献30附录C 英文参考文献(翻译)40第1章 绪论1.1 课题背景随着经济的发展,我国的大中城市的邮件投递数量也在急剧增长,在我国的多个邮件处理中心中,普遍存在生产效率低下的现象,对采用技术创新提高生产效率有着迫切的需求。本文根据RFI
10、D技术的特点,通过引入工业机器人的方法,结合我国目前邮政业务的实际,设计了基于RFID技术的邮件快速分拣系统。1.2 相关研究状况介绍分拣系统的主要任务是把要分拣的物品按照业务品种、邮件种类或地址等信息进行分离,使同种类或同目的地址的邮件进入同一存储位置。自动分拣设备中的邮件信息识别方式对设备的工作效率、业务流程的复杂程度、运营成本和业务的柔性拓展具有重要意义。目前世界上的自动分拣系统普遍采用二维条码和三维条码为邮件特征信息的载体,通过对条码的识别获取邮件相关信息。以条码作为信息载体的邮件分拣作业流程复杂,需逐件扫描才能进行邮件信息获取,因此工作效率低。射频识别技术(下文简称RFID)是上个世
11、纪末出现的新型自动识别技术,它将大规模集成电路与无线通讯技术相结合,实现了存储信息的快速、非接触式识别。相对于条形码技术,利用RFID设备可实现信息的非接触、可擦写、远距离的识别,且信息交换容量大,可实现集中读写,一次进行多个单体信息识别。鉴于自身的特点,RFID技术在现代物流系统中被广泛应用。目前世界上的邮件分拣系统大部分采用载物小车的方法用于邮件在传送带上的运输,但这种方法在面临大物流量的时候,就会出现分拣效率与系统维护成本的矛盾。本文介绍的系统采用了工业上已经成熟的机器人技术保证了系统运行的效率,并有效的降低了系统维护费。1.3 论文的主要工作与结构基于RFID技术的邮件快速分拣系统的开
12、发和研究,本文主要章节与内容包括:第一章:绪论。着重阐述了课题研究的目的意义及内容。第二章:系统分析与总体设计。主要是对系统的应用需求分析进行阐述以及对系统软件的总体规划与数据库的设计进行具体研究设计。第三章:系统应用软件部分。主要介绍软件各部分的功能和设计(包括部分的代码实现)。第四章 :系统硬件部分。具体介绍本系统采用的各种硬件,以及相关 硬件技术采用的算法。总 结:总结与展望。总结了本文主要工作,提出了本研究尚存的不 足之处与后续工作展望。第2章 系统分析与总体设计2.1 系统需求分析进入21世纪以来,随着网络等新兴技术的发展,我国的邮件传送产业快速发展,此时传统的邮件分拣方法已经严重拖
13、累了整个邮件系统的运行效率,由此催生了邮件快速分拣系统的产生与发展。现在邮件自动分拣技术已经得到了初步发展,但是或者运行十分复杂或者维护费用较高,对于一些小的邮寄网点仍然不适用,本文研究的邮件快速分拣系统适用于中小规模的邮寄网点,系统使用维护均十分简单方便。邮件快速分拣系统的用户主要是邮局或者快递公司的从业人员,其中分拣系统应该至少包括一名管理人员和若干员工,本系统主要实现邮件分拣信息管理、分拣箱信息管理以及用户管理等功能,具体功能如下:(1)邮件分拣信息的添加、修改、删除、查询和打印功能。其中的添加功能分为自动输入和手动输入两种,其余功能均为手动输入。(2)邮件分拣箱信息的添加、修改与删除。
14、此功能与具体的系统硬件相关,为系统分拣箱的添加、去除或者内容更改提供依据。(3)用户信息的管。2.2 系统应用软件体系结构设计本节将根据需求分析中总结的用户设计系统应用软件部分的体系结构。系统的功能模块如图2-1所示。在功能模块的树状结构中,每个叶节点都是一个最小的功能模块。每个功能模块都需要针对不同的表完成各种数据库操作包括记录的添加、删除、显示,查询或者直接启动相关的系统硬件进行工作。在系统设置模块中,主要实现整个系统的运行、暂停与退出。并且当用户选择了开始运行后系统的硬件部分已经开始工作,但此时必须对下一模块进行相应的选择后整个系统才能真正开始工作。邮件分拣信息处理模块主要实现邮件信息的
15、输入、修改、删除、显示、与打印功能。选择自动输入模块后,系统的运行将实现完全自动化,当邮件信息读入失败或者希望获得已分拣邮件的信息时可以选择手动输入与查询模块。分拣箱信息处理模块实现系统硬件的分拣箱方面的信息管理,属于系统设置。在这个模块中主要是对分拣箱信息进行添加、修改与删除操作。在本系统中,用户管理模块的功能比较简单。用户分为系统用户和普通用户两种,系统用户可以创建用户、修改用户以及删除用户,普通用户只能修改自己的用户名和密码,他们的密码统一默认为123(用户可以进入密码修改模块进行修改)。 图2-1 快速邮件分拣系统功能模块示意图2.3 系统数据库设计数据库是软件总体设计非常重要的环节,
16、好的数据库结构可以简化系统软件部分的开发过程,使得系统功能更加清晰明确。本系统采用的数据库命名为Postals。数据库包括3个表。即邮件分拣信息表 Postals、邮件分拣箱信息表 Boxes、和用户信息表 Users。下面介绍这些表的结构。(1)邮件信息表 Postals,用来保存邮件的各种信息。表结构如表2-1所示:表2-1 表Postals的结构编号字段名称数据类型说明1Pidvarchar(30)邮件编号,主键2PostDatevarchar(20)邮寄日期3BeginPlacevarchar(20)邮件发出邮编4PostPlacevarchar(20)邮件接收地邮编5Postidva
17、rchar(20)邮件分拣箱编号(2)用户信息表Users,用来保存系统用户信息,结构如表2-2所示:表2-2 表Users的结构编号字段名称数据类型说明1UserNamevarchar(40)用户名,主键2UserPwdvarchar(40)密码3UserTypevarchar(20)用户类型(3)分拣箱信息表Boxes,用来保存系统分拣箱的信息。表结构如表2-3所示:表2-3 表Boxes的结构编号字段名称数据类型说明1BoxIdvarchar(20)分拣箱编号2BoxNamevarchar(40)分拣箱编号对应的邮编其中在BoxName字段中,由于本系统的测试数据邮寄地址的设计是基于我国
18、内陆地区省级行政单位的,所以只需输入对应的邮政编码的前两位(在我国邮政编码中前两位代表省级新行政单位,有的省级行政单位对应的邮编前两位有多个的应该输入最小的一个,省级单位对应的邮编前两位简明表可见附录A),本系统若用于其他具体单位时,应根据具体情况对此字段进设计。这三个数据库表均为保存系统必要的信息而设计,在实际运行时应该做好数据库的维护和备份工作。这些工作虽然普通,但对于系统安全运行却是不可缺少的,做好维护工作可以保证系统的工作效率,做好备份工作,可以在数据因为不可抗拒因素遭到损毁时使系统得到及时恢复。2.4 本章小结本章首先介绍了系统的总体需求分析然后对应用软件部分的总体结构进行了设计,并
19、以图的形式对每个功能模块进行了说明。最后对系统使用的数据库进行了介绍并给出了相关的设计信息。第3章 系统应用软件模块设计3.1 工程框架设计3.1.1 设置工程主界面本系统的应用软件部分是一个基于对话框的工程,工程名设置为PostalSp。主对话框的属性如表3-1所示:表3-1 设置主对话框的属性属性设置值说明Caption邮件快速分拣系统对话框的标题条文本Minimizie Box选中激活最小化按钮在工程中添加ADO Data和DataGrid控件,然后依次添加DataCombo控件及DataList控件。向工程中添加类ADOConn类,注意在ADOConn.cpp中将连接字符串中“Data
20、base=”设置为“Database=Postals”,“Server=”设置为“Server=PC-201103201322”(设置服务器为本体服务器,具体应用本系统时要根据具体情况进行设置)。在类CDataGrid中添加成员函数GetItem(),用于从DataGrid表格中读取数。制作一个背景图片作为Bitmap资源加入到工程当中。设置主页面中的菜单。在工程中添加“Menu”资源,创建一个新的菜单,并对菜单项的属性进行设置。属性设置如表3-2所示:表3-2 菜单IDR_MENU1的属性标题ID属性系统设置开始运行IDR_BEGIN暂停运行IDR_PAUSE退出系统IDR_EXIT邮件分拣
21、信息管理自动输入IDR_AUTO手动输入与查询IDR_MANUAL分拣箱信息管理信息设置IDR_BOX信息说明IDR_READ1系统用户管理用户管理IDR_USER密码修改IDR_PWD打开默认主对话框的属性窗口,在MENU组合框中选择IDR_MENU1,运行系统,可以看到系统的主界面如图3-1所示: 图3-1系统主界面示意图为菜单项IDR_EXIT添加代码,对应函数为CPostalSpDlg:OnExit(),代码如下:void CPostalSpDlg:OnExit() exit(0);程序调用exit(0)函数关闭对话框,退出系统。从系统界面上可以看到,由于本系统面对的是中小规模的邮寄业
22、务,所以功能较为简单,仅仅设置了一些必须的功能。这对于使用人员的培训和使用都将十分有益。3.1.2 为表添加类本文为系统数据库的每一个表都创建了一个类,类的成员变量对应类的列,类的成员函数是对成员变量和表的操作。在系统中为各个表添加相应的类,并设置类名,类的命名规则是大写字母“C”加上表名,例如表Users对应的类名就是CUsers。在通常情况下类的成员变量与对应的表的列名相同。绝大多数成员函数的编码格式都是非常相似的,所以本节中只介绍每个类的成员函数的基本功能,并不对所有的成员函数进行具体的代码分析。3.1.2.1 CPostals类CPostals类用来管理表Postals的数据库操作,它
23、的成员函数如表3-3所示。表3-3 CPostals类的成员变量成员函数声明具体说明CPostals()初始化成员变量int HaveName()判断指定的邮件编号是否已经在数据库中,参数cPid表示指定的邮件的编号。返回-1表示不存在,返回1表示存在void GetData()读取邮件编号为cPid的邮件的所有信息void sql_delete()删除指定的邮件记录。参数cPid表示要删除的邮件的编号void sql_update()修改指定的邮件记录。参数cPid表示要修改的邮件的编号void sql_insert()插入新的邮件记录void SetPid()设置邮件编号CString G
24、etPid()获取相应的邮件编号void SetPostDate()设置邮件邮寄日期CString GetPostDate()获取邮件邮寄日期void SetBeginPlace()设置邮件发送地邮编CString GetBeginPlace()获取邮件发送地邮编void SetPostPlace()设置邮件接收地邮编CString GetPostPlace()获取邮件接收地邮编void SetPostid()设置邮件分拣箱编号CString GetPostid()获取邮件分拣箱编号在HaveName()函数中程序使用m_AdoConn.GetRecordSet()函数执行SELECT语句,将
25、结果返回到m_pRecordset对象中。如果m_pRecordset-adoEOF等于-1,则结果集为空;否则表示记录中存在指定的邮件编号。3.1.2.2 CBoxes 类CBoxes类用来管理表Boxes的数据库操作,他的成员函数如表3-4所示:表3-4 CBoxes类的成员函数函数名具体说明CBoxes()初始化成员变量void SetBoxId()设置分拣箱编号void SetBoxName()设置分拣箱对应的邮编CString GetBoxId()返回分拣箱编号CString GetBoxName()返回分拣箱对应的邮编int HaveName()判断指定分拣箱是否存在void sq
26、l_insert()插入新的分拣箱记录void sql_update()修改指定的分拣箱记录void sql_delete()删除指定的分拣箱记录3.1.2.3 CUsers类CUsers类用来管理表Users的数据库操作,它的成员函数如表3-5所示:表3-5 CUsers类的成员函数函数名具体说明Cusers()初始化成员变量void sql_insert()插入新的用户记录void sql_update()修改指定的用户记录void sql_delete()删除指定的用户记录void sql_updatePwd()修改指定用户的密码void SetUserType()设置用户类型void
27、SetPwd()设置用户密码void SetUserName()设置用户名CString GetUserName()获取用户名CString GetPwd()获取用户密码CString GetUser_type()获取用户类型类的设计是VC+设计工作的重点之一,除了以上三个针对数据库表的类,在设计过程中对于系统的对话框或者系统资源的使用等都要涉及到类的设计与调用,合理的成员函数设计以及恰到好处的成员变量加入对于系统各功能的实现极其重要,做好类的设计工作将十分有利于系统下一步的设计工作。3.1.3 设计登录模块登陆界面是系统自我保护的第一层防线,他的设计与系统用户直接相关。用户要使用本系统,首先
28、必须通过系统的身份认证,这个过程叫做登陆。本节将介绍登录模块的实现过程。当前用户的数据应该是全局有效的,在工程的任何位置都可以访问它。添加一个类CGlobal,用于保存全局变量。在CGlobal.h和CGlobal.cpp中添加如下代码:#include “Users.h”CUsers curuser;在StdAfx.h中添加: #include” CGlobal.h”.因为StdAfx.h包含在很多程序中,这样这些程序就可以直接访问curuser对象了。在访问之前添加如下命令:extern CUsers curuser; 引入外部变量。添加一个对话框,属性设置如表3-6所示:表3-6 设置主
29、对话框的属性属性设置值具体说明IDIDD_LOGIN_DIALOG对话框的ID值Captiion登录对话框对话框的标题条文本Font name宋体设置对话框的字体Font size9设置对话框的字号系统运行时的登陆对话框如图3-2所示: 图3-2 登陆对话框的界面按照如图所示添加控件,注意在密码控件中选中编辑框的Password属性,这样用户在输入数据时编辑框只能显示“*”。为对话框建立一个类,并给两个编辑框分别制定一个成员变量m_UserName和m_Pwd.最后在主对话框中添加CPostalSpDlg:OnInitDialog()函数,使对话框在启动时首先打开登陆对话框。代码如下:Logi
30、nDlg dlg;if (dlg.DoModal()!=IDOK)exit(0);elsecurUser.GetData(dlg.m_UserName);程序将打开登录对话框,如果用户不是通过单击“确定”按钮关闭对话框则调用exit(0)函数关闭对话框。在登录对话框的代码中,用户只有通过身份验证后才能调用exit(0)函数关闭对话框。因此可以判断,如果dlg.DoModal()的返回值为IDOK,则表示用户已经通过了身份验证。为了保护系统的安全,我们默认每个用户最多只能连续登陆3次,超过3次系统将在提示用户后自动退。3.2 邮件分拣信息处理模块设计邮件分拣信息处理模块包括“手动输入与查询”和“
31、自动输入”两部分。前者主要用于邮件信息无法正常读取时人工输入信息以及对邮件分拣信息的添加、修改、删除和打印功能。后者则是启动相关的分拣算法,使邮件信息随着系统硬件的运行自动输入信息到数据库中。3.2.1 邮件信息添加对话框设计此对话框主要用于添加邮件分拣信息和修改指定的邮件分拣信息。系统运行时,此界面如图3-3所示: 图3-3 邮件分拣信息添加框按照上图所示添加各种控件之后,并设置相应的属性值,如表3-7表所示:表3-7 控件属性设置表控件类型属性属性值说明Edit BoxIDIDC_PID_EDIT编辑邮件编号Edit BoxIDIDC_POSTDATE_EDIT编辑邮寄日期Edit Box
32、IDIDC_PPLACE_EDIT编辑邮件发出地址邮编Edit BoxIDIDC_GPLACE_EDIT编辑邮件接收地邮编Edit BoxIDIDC_CID_EDIT选择邮件分拣箱编号ButtonIDIDOK确定按钮Caption确定ButtonIDIDCANCEL取消按钮Caption取消为该对话框创建相应的类并为上述控件分别添加成员变量m_Pid、m_CPdate、m_CPPlace、m_CGPlace、m_Cid成员变量类型均为CString。双击“确定”按钮和“取消按钮为按钮添加函数。点击确定将填写的邮件信息输入数据,点击取消离开本界面。采用RFID技术后虽然与传统的条形码技术相比读取
33、成功率提高了很多,不过由于RFID标签读取距离较近所以一旦出现邮件放置位置不合理或者标签出现损坏的情况系统就无法正常读取数据或者用户希望修改已经读取的错误信息,这时系统必须暂停自动运行,转由工作人员手动读取邮件信息并将其通过此界面进行相关的而操作。3.2.2 手动输入与查询对话框设计此对话框主要用于实现邮件的删除、打印和调用上节所介绍的模块以修改和添加邮件信息。系统运行时,此界面如图3-4所示: 图3-4 手动输入与查询模块界面示意图在此模块中除了参照上节的控件属性进行设置外,还要再添加ADO Data控件和DataGrid控件,ADO Data控件的配置方法如表3-8所示,DataGrid控
34、件与ADO Data相关并将ADO Data控件的设置为不可见后,此模块既可以用于显示数据库表Postals中的内容了。为“添加”按钮写入相应的响应函数后便可调用上节的邮件信息添加模块了;点击“修改”按钮同样调用添加模块对邮件信息进行修改;点击“删除”按钮后调用表Postals的成员函数sql_delete()在数据库中删除相应的邮件信息;点击“打印”按钮可以调用打印机将相关邮件信息打印出来;在查询一栏中用户则只能在“邮件编号”和“分拣箱编号”两项中选择其一进行查询;点击“返回”按钮,系统将返回系统主界面。表3-8 ADO Data控件配置示意表控件ID属性属性值/说明IDC_ADODC1Co
35、nnectionStringProvider=SQLOLEDB.Passwrod=sa;Persist Security Info=True;Initial Catalog=PostalSp;Data Sourse =PC201103201322Visible取消CommandType8-Unknown CommandTypePasswordsaUserNamesaRecordSourseSELECT *FROM Postals此对话框是为了方便用户管理邮件信息而设计的,从操作界面上我们可以清楚的看到此界面的主要功能,除了在商界中已近介绍过的添加与修改功能之外,通过此界面我们还可以清楚的看到已
36、经输入的信邮件信息,并可以根据具体要求对邮件信息进行分类查询。此外本对话框的打印功能也可方便其他人员的办公所需。3.2.3 自动输入模块本模块实现的是系统两大运行方式之一的自动运行功能。点击进入自动分拣运行模式将启动RFID阅读器及其他硬件,自动对邮件进行读取并根据相关算法为所有的邮件设置分拣箱编号,以方便机器人根据此信息对邮件进行分类抓放针对分拣箱算法的实现,本文采用的简单的条件语句:将读取的邮件邮编信息与分拣箱所对应的邮编信息进行匹配,如果匹配成功就将相应的分拣箱编号赋予此邮件并继续读取下一个邮件信息,如果读取失败系统将自动跳出此模块暂停系统的运行等待用户的手动操作,然后再回复所有工作。3
37、.3 分拣箱信息管理模块本模块主要包括“信息设置”和“信息说明”两部分。前者主要用于分拣箱信息的设置、修改与删除。后者则是对该模块的信息说明。此模块的信息的查看功能虽然可以由所有用户使用,不过由于分拣箱信息的添加、修改与删除将直接影响相邮件信息的管理,所以这些功能将只能由系统管理员使用。而且一旦修改必须修改相关的分拣算法以保证系统的正常运行,所以笔者建议一旦系统部署完毕应当尽量避免分拣箱信息的修改。3.3.1 分拣箱信息添加对话框分拣箱信息添加对话框的ID属性为IDD_BOXSEDIT_DIALOG,其布局如图3-5所示: 图3-5 对话框IDD_BOXSEDIT_DIALOG的布局此模块的控
38、件相对简单,为两个Edit Box控件和两个按钮控件。为此对话框建立一个对应的类(类名CBoxEdit),并在类中为两个Edit Box控件分别添加两个成员变量:m_BoxId和m_BoxName,再为此类添加一个公共变量itype类型为int,公共变量itype的作用是为了区别下一节所述的模块的添加和修改两种不同的功能,若是添加就将itype初始化为0,若是修改则初始化为1。双击按钮“确定”和“取消”为他们添加相应的函数。点击“确定”按钮可将添加的分拣箱信息输入到数据库表Boxes中。3.3.2 分拣箱信息编辑对话框分拣箱信息编辑对话框ID为IDD_BOXMAN_DIALOG,其控件布局及数
39、据测试结果如图3-6所示: 图3-6 对话框IDD_BOXMAN_DIALOG的布局及数据测试结果显然在此对话框中我们添加了ADO Data控件和ADOGrid控件(此两种控件的配置方法参照3.2.2节中所述 )并分别为这两个控件添加成员变量m_adodc和m_datagrid用于此模块的数据库操作。除上述两种控件外,本模块还有四个按钮,分别实现分拣箱信息的添加、修改和删除。点击取消按钮退出此模块返回主界面。3.3.3 信息说明此模块是一个简单的对话框,只是向用户提供一些分拣箱使用应该注意的信息和使用方法简单介绍。3.4 系统用户管理模块此模块是所有信息管理类软件必须实现的功能。目的是为系统管
40、理用户,理论上应该每个系统应该设置一个系统管理员和若干普通用户根据用户类型的不同,用户管理模块的功能也不相同。可以包括以下情形:系统管理员可以创建其他用户,删除其他用户;其他用户只能修改自身的用户信息。3.4.1 用户信息编辑对话框编辑用户信息的对话框可以用来添加和修改用户信息,对话框ID为:IDD_USEREDIT_DIALOG。对话框的布局如图3-7所示: 图3-7 对话框IDD_USEREDIT_DIALOG布局对话框对应的类为CUserEdit。“用户类型”对应的控件为Combo Box,其属性设置如表3-9所示:表3-9 Combo Box控件属性控件类型属性属性值Combo Box
41、IDIDC_USERTYPE_COMBOListbox Items普通用户/系统管理员TypeDropList3.4.2 用户管理对话框用户管理对话框的ID为IDD_USERMAN_DIALOG,对话框的布局和数据测试结果如图3-8所示: 图3-8 对话框IDD_USERMAN_DIALOG的布局及测试结果此对话框对应的类为CUserManDlg。3.4.3 密码修改对话框密码修改对话框的ID为IDD_CHANGEPWD_DIALOG,对话框的布局如图3-9所示: 图3-9 对话框IDD_CHANGEPWD_DIALOG的布局此对话框对应的类为CChangePwdDlg。因为新注册的用户密码均
42、统一默认为“123”,此对话框的功能就是为用户修改密码所用。点击“确定”按钮密码修改便完成了。3.5 本章小结本章介绍了系统应用软件各模块的设计和实现过程,并给出了部分代码实现这也是本文的主要工作所在。在实现过程本文基于使用和维护简便的思想成功实现了邮件信息管理等功能。当然本章在设计上依然存在不足,例如分拣箱信息修改设计的工作较为繁琐且不方便等,不过这些问题必将随着以后相关工作的进行得到解决。第4章 系统硬件部分本章主要对本系统用到的硬件和相关的硬件技术算法进行了研究与介绍。4.1 系统的硬件组成该系统硬件土要由机器人、计算机、传送带、相机、RFID阅读器及镜头组成。其中相机和机器人分别通过传
43、输线和RS232与计算机相连。如图4-1所示。传送带为可手动调速且具有较大的调速范围(010m/s) ,方便本文在多种速度下测试分拣系统,而且一旦出现读取失败传送带将自动停止运转以方便手动输入邮件分拣信息。其余硬件选型在下文详述。图4-1系统硬件组成示意图4.1.1 CCD相机CCD(Charge Coupled Device)摄像机是电荷藕合器件,作为一种光电转换的设备在现代成像技术中有着十分重要的作用。CCD是1970年由美国贝尔研究所发明的,可以按照不同的方式配置成一系列小型和稳定的固态摄像机,CCD摄像机具有体积小、重量轻、耗电小、寿命长、灵敏度高、动态范围大、抗震动冲击性、没有几何畸
44、变、对光响应是高度线性的等特点。CCD的工作原理是:被摄物体反射光线,传播到镜头,经镜头聚焦到CCD芯片上,CCD根据光的强弱积聚相应的电荷,经周期性放电,产生表示一幅幅画面的电信号,经过滤波、放大处理,通过摄像头的输出端子输出一个标准的复合视频信号。这个标准的视频信号同家用的录像机、VCD机、家用摄像机的视频输出是一样的,所以也可以录像或接到电视机上观看。本系统采用日本JAI CV-A11相机拍摄图像,固定在天花板上。相机的部分参数如下:有效像素:648*492影像传感器:13英寸黑白低照度高解析逐行扫描摄像机外形尺寸:29*44*66 mm(H*W*D)光圈:手动对焦:手动扫描速度:30帧
45、每秒4.1.2 镜头镜头在机器视觉系统中扮演着重要的角色,它的主要功能是收集被拍摄物体的反射光并将其聚焦于CCD摄像机上,根据使用现场的环境,正确选用摄像机镜头是非常重要的,因为这直接影响到系统组成后在系统末端显示器上所看到的图像效果能否满足系统的设计要求,所以正确的选用摄像机镜头,可以使系统得到最优化设计并获得良好的监视效果。对镜头有两个基本要求:一个是要求成像比较清晰,另一个就是要求图像的畸变很小。基于上面两个要求,本系统选用Computar公司的M0814MP镜头,选择镜头时主要考虑的以下几个性能指标:焦距是光学镜头的重要参数,通常用f来表示。焦距直接与镜头的视场角相关。一般短焦距镜头具有较大的视场角,长焦距镜头的视场角较小。M0814-MP镜头焦距为f=8mm,焦点手动控制,成像大小适合设计的要求。4.1.3 采集卡图像采集卡是连接摄像机和图像处理器的关键接口部件,其功能是完成对模拟视频信号的转换,使之成为图像处理器可以处理的数字视频信号。图像采集卡中,AD(模拟数字)转换器件是最为重要的器件,特 别是对于实时图像处理来说,不仅数据量大,而且有一定的速度要求。模数转换器件的精度和速度就成了影响整个系统处理的质量和速度的一个关