物联传媒 旗下网站
登录 注册
RFID世界网 >  技术文章  >  其他  >  正文

使用射频IC卡管理货场的系统设计

作者:孙玉洁 余雪丽 李玉冰
来源:中国一卡通网
日期:2007-08-24 15:26:58
摘要:主要介绍一种射频IC卡就货场事务管理的硬件和软件设计。硬件设计方面简述系统结构;软件方面给出了开发环境.设计架构和关键代码。数据库服务器采用SQLServer。灵活的C/S结构使得系统扩充很容易。
1、引言 

    如何对大型货场中的货物进行管理,是一个非常关键的问题 本文介绍了一种对货物进入货场进行验证和查收的解决方案。即:使用手持电脑与远程数据服务器联系,对货物进行管理。 

2、系统总体方案

    本系统采用美国HP公司的SI850射频识别IC卡读写器、HP掌上电脑、HP射频卡、无线接收装置、以太网络开发货场管理系统 系统具有目标识别、身份验证、数据采集、数据加密和数据库管理的功能。系统由掌上电脑、与掌上电脑匹配的读写卡器、本地服务器、数据库管理系统、掌上电脑和数据库管理微机及本地服务器的通讯系统部分组成。本地主机与掌上电脑之间的通信采用TCP/IP协议。采用C/S模式。本地服务器和数据库服务器之问用基于以太网的ADO接口进行数据交流。

    本系统主要目的是对物流运输行业中的货场部分进行管理, 当有车辆到达时。如网络连通.使用车辆所带的IC卡查询远程数据库.如网络不通.则读出IC卡中的物料清单.并将货物清单显示在掌上电脑上.供货场管理人员审核,如无误.则将货物已到货场信息写入数据库服务器.并写入IC卡.通过使用IC卡的方式.管理物流问题,具体流程如图1所示。 
 

射频IC卡管理货场流程图

3、系统硬件结构

    系统由远程数据服务器,本地服务器,若干掌上电脑及读卡器组成。如图2所示。若干个掌上电脑通过无线通讯网络与本地服务器通讯.本地服务器与远程数据库服务器使用以太网通讯。

射频IC卡管理货场系统硬件结构

4、软件结构 

    掌上电脑使用微软WINCE操作系统.该客户端软件使用EVC4.0为开发工具.使用Pocket PC 2003 SDK库.本地服务器程序使用VC6.0开发.数据库服务器使用SQL Server为数据库平台,通讯都采用TCP, 中的面向连接的服务。其中掌上电脑与本地服务器之间通讯采用无线通讯。掌上电脑使用红外端口。而本地服务器采用无线网卡。本地服务器与数据库服务器通讯使用以太网。

1.掌上电脑软件

 
    掌上电脑软件分为两部份。第一部分为读,写卡软件。第二部分为无线通讯部分.无线通讯与普通通讯软件没有任何区别,系统底层屏蔽了有线与无线的通讯差异,都采用WINSOCKET通讯。

    (1) 读写卡部份 

    HP公司提供了掌上电脑的读写器.并将掌上电脑安装在其中。通过这一单元来进行卡的读写。编写卡读写软件时,只须将随读写器一起提供的动态连接库安装到台式机上,并且连接到EVC4、0的工程内。对于此动态连接库来说。常用的函数有四个:

    第一个函数用来打开与读写器的连接。第一个参数为返回的句柄hCom.第二个参数为用来通讯的端口。可以设为“COM1:”到“COM9”中的一个。第二个函数用来关闭打开的句柄。 

    第三个函数用来向卡中写入一个32位整数.hCom 为端口句柄,word 为写入整数的地址。data为写入的32位整形数据。标志flags一般设为0。

    第四个函数用来从卡中读人数据,*data为指向读人的整形数据的指针。word_ start为读人数据的起始地址,word_length要读入的数据个数.flags同上。使用这些函数时应按如下步骤:首先用RFIDOpen打开一个与读写器相连的端口.并获得一个句柄:接着用SaharaWfitd SaharaRead读写卡;读写完毕后用RHDCIose关闭端口以释放资源。必须注意的是打开通讯口时必须用一个循环从Com1开始向上试探。如果某个口被成功打开(返回值为scs_OK)时退出循环。另外须注意读写卡时可能会出错.所以用循环读取,如果成功则退出,否则等待100豪秒后继续读写.如果读写循环次数用完还未成功,则写错误日志并退出。

    (2) 通讯程序 

    掌上电脑通讯软件为客户端软件.所以在这里主动与本地服务器通讯。遵循以下步骤: 

    第一根据本地服务器的IP地址和给定的端口打开一个与服务器的连接。 
    第二根据协议类型使用此连接向本地主机发送协议数据,或从本地主机接收数据。进行数据传输。 
    第三完成流程后断开连接.以释放本地服务器和掌上电脑资源。

    从掌上电脑打开与本地服务器的连接使用TCP/IP协议.虽然使用无线网卡与本地服务器通讯. 由于系统屏蔽了无线通讯与有线通讯的差别,所以对程序员来说是透明的,无线通讯与有线通讯是一样的接口,没有任何区别。每次发送或接收的数据类型都是BYTE型的,所以当接收到一定数量的数据后。都将其转换为相应的数据结构。关键代码如下: 

    打开连接的关键代码:

以上代码中m_psecket是Csecket派生类的对象. 

2.本地服务器端的程序 

    本地服务器端的程序由以下两功能.一是建立一个监听服务线程.用于接收掌上电脑端的连接请求。二是接收到掌上电脑的连接请求后。建立一个单独的线程用于和掌上电脑进行通讯,并且和远程服务器进行通讯。处理数据流动。

    (1)监听服务线程  

    本地服务器软件启动后。首先建立监听服务线程。用于监听掌上电脑的连接请求.即用来启动服务程序.在本软件中是通过菜单来启动的.建立一个新的线程使用函数AfxBeginThread(Re.ceiveSeivice。&data)来实现,第一个参数为线程函数的执行体的函数名。第二个参数为传递给此线程的数据结构。用于向该线程给出一些具体的数据.成功执行此函数后.线程函数便独立于主程序运行.直至正常退出或被异常中断.以下是关键代码:

 

以上代码显示在服务线程中接收到客户请求后。启动客户线程的流程。
 
    (2)客户线程

    客户线程启动后.根据接收到的套接字句柄建立新的套接字,与掌上电脑端进行通讯,接受协议数据,根据协议数据要同远程数据库或掌上电脑端进行数据交流.同远程数据库服务器进行数据交换是采用ADO组件.以下是关键代码:


3.远程数据库服务器
 

    远程数据库服务器使用SQL Server 20o0作为数据库平台.建立数据库.并向本地服务器提供数据。 

参考文献: 
1.方可燕主编,VC6.0实战与精通,清华大学出版社,2000 
2.Steve Holzner著,潇湘工作室译,VC6.0高级鳊程,人民邮电出版社2000