于GPRS的快递投递实时系统设计与实现
2017-11-02李宇锋
李宇锋
摘要:为提高快递投递业务效率并能实时监控投递整个过程,设计了一种基于GPRS技术的实时系统。系统由用户端、主机与ARM设备组成:用户端通过互联网提交请求,主机通过GPRS模块将任务消息传递给投递员所持的ARM设备,并保存在SQLite 数据库中,在投递任务完成之后,手持设备通过GPRS模块进行消息的反向传递。测试结果表明,每个快递任务的发送、投递、到达及确认整个过程实时、稳定、可靠。
关键词:GPRS;SQLite;ARM;投递系统
DOIDOI:10.11907/rjdk.171395
中图分类号:TP319文献标识码:A文章编号:16727800(2017)010010903
0引言
随着网络技术与移动终端的发展与普及, 移动用户可以方便地享用Internet提供的服务, 给生活带来了诸多便捷。而传统物流行业以手工操作为主, 投递员在投递过程中以纸质文件为主要记录工具, 在业务量飞速增加的情况下,很难高效处理所分配到的投递任务,且通过纸质媒介记录投递信息易出现信息不准确等问题,最终影响投递效率。有些投递员由于业务熟练可在很短时间内完成所分配的业务,而有些投递员由于业务生疏导致任务完成率很低,企业如果不能掌握投递情况,就不能动态地分配任务,会影响整个企业的运行效率,相应成本也会有所增加。此外,用户如果要邮寄物品,需到物流公司店面办理业务或电话请求服务,很不方便。这些因素不利于物流企业的快速发展, 现实需求迫使物流业作出相应调整。面对挑战, 借助移动网络开展投递业务信息化工作,已经势不可挡。
投递业务移动终端以实际业务需求为出发点, 实现业务操作的信息化, 使得物流配送更快速、可控,并能实时监控投递的整个过程,减少人工成本、提高工作效率[12]。本文介绍了以芯片S3C4510B为基础、结合GPRS模块实现手持设备的硬件部分,在此硬件基础上移植了Fedora操作系统,通过Qt设计用户界面并安装SQlite数据库,最终实现了系统所需功能。
1系统结构
整个系统由3部分组成:客户端、主机、手持终端。具体流程如下:用户通过互联网将所需要办理的业务信息发送至主机服务器,主机接受用户请求后,生成对应的任务数据,并根据当前投递员的工作状态,将任务分配给合适人员。投递员通过手持设备接受到任务后开始工作,在完成任务后,通过手持设备将信息传回主机服务器,主机上的任务信息将被更新。此外用户可以实时查询所办理业务的状态。图1展示了系统结构。
图2展示了整个系统的层次,具有两个核心部分:主机与手持终端。主机扮演着连接客户端与手持终端的中间角色,含有3项子功能:接受用户需求形成相应任务并发送给合适的员工、检查终端设备状态(检查员工终端是否处于连接状态)、查询员工信息。手持终端设备选用S3C4510B开发板, 包括3项功能:GPRS连接负责通过GPRS连接上网、登录负责检验用户是否合法、查询与更新任务状态负责查看所分配任务,并在任务完成时更新对应任务的状态[34]。
2功能模块设计
系统主要包括两个模块:主机模块与终端模块。主机模块主要实现任务管理、终端机器状态查询以及员工信息管理等功能。终端模块主要实现连接、登录、查询、反馈等功能。
2.1主机
(1)任务管理功能。①创建新任务;②将任务分配给合适人员;③接受员工终端反馈,更新任务状态,即当任务完成,对应的任务状态更新为已完成。
(2)查询功能。查询手机终端状态,通过比较每个手机终端的任务量以决定当前可用人员。
(3)人员管理功能。查询与显示员工的个人信息,并且可以进行新用户注册。
2.2手持终端
(1) GPRS连接。初始化GPRS程序块并与主机相连接。
(2)登录功能。输入职工ID以及对应密码,登录系统。
(3)查询与任务处理功能。查询未完成的任务以及确定任务是否完成。
3硬件设计
手持终端是系统核心所在。本系统中选用的是TQ2440开发板,它是一款高效低成本的ARM9E开发板,基于Samsung S3C2440微处理器,包含电源稳定芯片及复位芯片以确保整个系统能够正常稳定工作。GPRS 模块选用SIMCOM公司的SIM300, RS232 串口被作为连接器来连接GPRS模块与TQ2440主板。图3展示了GPRS与开发板之间的连接。
3.1GPRS 模块
GPRS是通用分组无线业务(General Packet Radio Service)的简称,是在现有GSM系统上发展起来的一种新承载业务,目的是为GSM用户提供分组形式的数据业务。GPRS允许用户在端到端分组转移模式下发送与接收数据,而不需要利用电路交换模式的网络资源,从而提供了一种高效、低成本的无线分组数据业务。特别适合间断、突发性以及频繁、少量的数据传输,也适用于偶尔的大数据量传输[57]。
SIM300是一种便携式即插即用GSM/GPRS模块组件。它能够以低功耗实现語音、SMS、数据与传真信息的高速传输。SIM组件内嵌TCP/IP协议栈,支持基于RS232标准的UART 接口。PPP 拨号功能以及AT命令都被嵌入在 SIM300中。图4展示了SIM300的工作流程。
3.2UART 程序块
TQ2440主板提供了3种类型的串口:UART0、UART1、UART2。UART是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输与接收。在嵌入式设计中,UART用作主机与辅助设备通信,工作原理是将传输数据的每个字符一位接一位地传输,因此在连续的信息交换中,数据能以比特的速度传输,一根传输线便可完成整个过程,所以成本很低,适合在成本要求较低的企业使用。图5展示了UART的工作流程。endprint
4软件设计
4.1软件平台
手持终端软件平台是基于Fedora 操作系统开发的,Fedora的核心是Linux2.6.30.4。而用户界面则是基于Qtopia开发的。Qtopia是qt的嵌入式版本[79],在主机上所开发的程序,通过Qtopia编译之后,传送到嵌入式平台就可以直接运行了。
4.2Qtopia脚本
具体代码如下:
export set HOME=MYMPWD/root //设置home环境变量
cd opt/Qtopia
export set PATH=MYMPWD/bin:MYMPATH // 设置PATH变量
export set LD_LIBRARY_PATH = MYMPWD/lib: MYMLD_LIBRARY_PATH //设置环境变量
export set QTDIR=MYMPWD //设置QTDIA变量
export set QPEDIR=MYMPWD //设置QPEDIR变量
export set KDEDIR=MYMPWD/../kde // 设置KDEDIR变量
4.3SIM300 初始化
SIM300在工作前需要进行一系列初始化,具体步骤如下:
主机IP 地址被作为连接 IP. 相关AT指令: AT+CDNSORIP=0
设置返回值后AT+CIPSEND指令被执行. 相关AT指令: AT+CIPSPRT=0
设置所接收到数据的IP 头部 . 相关AT指令: AT+CIPHEAD=1
设置GPRS连接. AT+CIPCSGP = 1, "cmnet", "guest", "guest"
存储结构. AT+CIPSCONT
实施以上步骤后,GPRS程序块将启动。通过下列AT指令可建立与主机的连接:①AT+CIPSTART=“TCP”,“113.194.185.229”,“66655” ;②AT+CIPSEND命令发送数据到主机。任务完成后,AT+CIPClose关闭 TCP 连接,所有操作都在 read() 与 write() 函数中完成。
4.4串口初始化
串口设置的主要参数是波特率、停止位与奇偶校验位。在 Linux中, struct termios数据结构负责串口参数的设置。具体代码如下[23]:
打开I/O 函数
fd = open("/dev/tq2440_serial1", O_RDWR | O_NOCTTY | O_NDELAY);
恢复串口为阻断状态
fcntl(fd, F_SETFL, 0)
测试设备终端的IO
If(0== isatty(fd))
{close (fd);
return ERROR_ISATTY;}
激活本地连接和使能
newtio=oldtio;
newtio.c_cflag |= CLOCAL | CREAD;
设置符号
newtio.c_cflag &= ~CSIZE; // 消除屏蔽位
newtio.c_cflag |= CS8; //設置数据位
设置校验位
newtio.c_cflag &= ~PARENB;
设置波特率
cfsetispeed(&newtio, B115200);
cfsetospeed(&newtio, B115200);
设置停止位
newtio.c_cflag &= ~CSTOPB;
激活新的配置
(tcsetattr(fd, TCSANOW, &newtio)
4.5SQLite数据库连接
SQLite是一个开源的轻量级数据库,极其适合嵌入在移动便携式设备中。在本系统中SQlite用来存储来自主机所分配的任务。具体连接代码如下[10]:
sqlite3 *db=NULL;
result=sqlite3_open("/dbDir/lgs.db",&db);
db (the sqlite3 *) 指针将返回.此指针可以完成数据处理
5结语
本文从软硬件方面介绍了一种基于GPRS的投递业务移动终端设计过程。该系统设计合理,运行稳定,实现了投递任务的创建、分配以及任务状态查询等功能。实践证明,利用该系统可以对投递过程进行有效实时管理,提高了企业运行效率,降低了运营成本。当然,该系统还有进一步改进空间,比如当前系统还是人工方式分配任务,当任务及员工数较多时,很难人为判断如何分配任务,所以需要通过一种算法进行动态分配;如何自动分配任务给投递员,也是未来需要探讨的问题。
参考文献参考文献:
[1]王志平,程韬波.基于GPRS的远程无线监控系统的数据中心设计[J].工业控制计算机,2005,18(3):34.
[2]于明.ARM9嵌入式系统设计与开发教程[M].北京:电子工业出版社,2006.
[3]李别.基于S3C4510B 的ARM 开发平台[J].微计算机信息,2006(29):3436.
[4]李正民,刘伟伟,王建辉.基于ARM和GPRS技术的无线自动抄表系统的设计[J].测控技术,2012,31(6):5052.
[5]崔秀玉,王志勇,王成祥.GPRS技术在电力系统通信中的应用[J].电力系统通信,2004,25(8):34.
[6]张莉莉,张峰.实时调度算法综述[J].软件导刊,2008,7(10):6263.
[7]马爱永,王平,董秀英.嵌入式Linux系统实时性设计[J].软件导刊,2010,9(9):1617.
[8]郑国云,王林.基于ARM9平台的嵌入式Linux的移植与研究[J].软件导刊,2010,9(8):4041.
[9]郭振宇,司风琪,徐治皋,等.跨地域热电联产机组实时监测系统的开发与应用[J].电力系统自动化,2010,34(3):107111.
[10]王树森.基于ARMLinux的嵌入式SQLite研究与应用[J].电脑知识与技术,2010(20):54105412.
责任编辑(责任编辑:何丽)endprint