苗风明 吴德科 田 霞
(1、上海交通大学软件学院,上海 200240;2、莱芜钢铁集团有限公司自动化部,山东 莱芜 271104)
山东省莱芜市钢铁集团有限公司是年产钢铁量1000万吨以上的特大型钢铁联合企业,公司每日进出仓库物资数万吨,对外贸易和内部仓储物资倒运车辆日均千车,物资验收工作是关系到企业经济效益与企业形象的基础工作。近年来,随着经济的发展,生产规模的不断扩大,物资验收点也随之增多,原有的物资验收方法已不能满足企业发展的需要,为解决验收点增多而人员设备相对较少而带来的矛盾,我们借助手持移动数据终端开发了一套物资验收程序。
MS7000W 型手持移动数据终端完全体现了“ALL IN ONE”的设计思想,它将图像获取、无线通讯、条形码扫描、RFID读写器、WIFI等功能集一身。并且具有坚固耐用、多协议兼容、二次开发、多种读取方式、多种通讯传输方式、触摸屏幕、可扩展等优点,能广泛的应用于物流管理、仓储管理、防伪检测、图书馆、餐饮业、门禁考勤等各种场合。
手持移动数据终端整体框图
在物资收货工作中,主要利用手持设备的RFID读写器功能。此设备通过与IC卡的通讯实现了物资信息在IC卡中的存储,免去了纸质单据带来的不便。具体的开发流程是:
Microsoft ActiveSync
MS7000型手持移动设备装有Windows Embedded CE操作系统。要使手持设备与PC机相连接,首先需要安装Microsoft ActiveSync同步软件(网上可以下载,有多种版本)。安装后启动该软件,会在计算机右下角显示此软件的图标。此外还需安装Device Driver和SDK(Software Development Kits),前者是 MS7000W手持移动数据终端的驱动程序,安装驱动程序后电脑才能识别设备并通过同步软件与设备进行同步,而后者是MS7000W手持移动数据终端进行二次开发的必要条件,需要通过SDK联机进行程序调试。最后再把手持移动设备数据线连接在计算机的USB口上,手持设备和PC机都会有相应的提示连接成功。
这是本文的重点,也是手持设备二次开发的核心。手持设备通过其自带的感应区与RFID标签进行通讯,此设备的RFID感应区域在机器的背部,识别时需要把标签靠近感应区(标签不同,识别标签的距离也会不同),就可以识别相应的标签。RFID技术是一种非接触式的射频识别技术,它通过射频信号自动识别目标对象并获取射频卡里相关的数据信息,射频卡是RFID技术和IC卡技术的完美结合。
手持设备可以与多种类型的射频卡进行通讯,我们选用的射频卡类型是M1卡,也就是8位的非接触式IC卡,具有防冲突机制,可支持多卡操作。M1卡分为16个扇区,每个扇区分为4个块(块0~3),共64个块,按块号编辑为0-63。第0扇区的块0用于存放厂商的代码,已经固化,不可更改。其他各扇区的块0、块1、块2为数据块,用来存储数据;每个扇区的块3为控制块,用来存放密码A、存取控制、密码B。每个扇区的密码和存取控制都是独立的,新卡会带有一套初始密码,为安全起见,使用新卡时要利用IC卡的加密功能重新设定其各自扇区的密码及存取控制,以防持卡人员用其他读写设备对IC卡进行操作。
手持设备与IC卡建立通讯的步骤是:首先调用动态链接库文件(*.DLL)。这是手持设备与IC卡通讯的基础;执行模块初始化函数;把IC卡靠近手持设备感应区然后再执行寻卡函数,如果函数返回值为0,则说明手持移动设备与卡通讯成功了。否则说明通讯失败;通过上面对M1卡的介绍我们知道IC存放数据是按块来存储的,每个块存储一组数据,除了第一块和每个扇区用来存放密码的第4块,其他块均可存放数据,数据的读取和写入也都是按块来进行的。在对指定的块进行读写之前,需要对此块所在扇区的密码进行认证,此时需要调用密钥认证函数。如果忽略了此步骤,接下来执行IC卡读写函数时就会失败。以上步骤执行成功后,就可以调用读写函数对IC卡按块进行读写等操作。
前期测试工作完成后,就可以进行软件二次开发了。我们采用的是VS2005(Visual Studio 2005)平台,开发语言选择的是C#(也支持C++等语言)。新建项目选择智能设备Windows CE 5.0,即可进行程序的开发和测试。当程序开发完成后,连接上设备,启动调试,选择Windows CE 5.0就可以将程序部署在手持设备上。物资收货程序主要分为以下几个部分:用户登录、收货确认、收货查询和数据同步。
用户登录:为了便于管理,我们为每位收货操作人员建立一个用户,登录自己的用户名和密码即可进入程序进行物资收货和查询等操作。对每一个收货地点和收货人进行的收货操作,系统都要详细的记录。用户登陆后可根据需要修改自己的登录密码。
收货确认:在司机把货物运到目标仓库后,收货人员对司机随身携带的IC卡中的物资信息(例如车号、物资名称、重量、发货单位、去向等)进行读取,如果手持设备读出的IC卡物资信息与实际物资信息完全一致,则可进行收货确认。将目标仓库对应的收货单位名称和收货人员名字等信息写入IC卡中,同时将此条收货记录存储在手持移动设备的SQL CE数据库中。反之,若卡中信息与实际物资信息不一致,则不予收货,同时联系发货单位和计量中心核对相关信息。
收货查询:在手持设备中装入SQL Server Compact Edition(SQL CE)数据库,将收货记录存入数据库,以方便对历史信息的查询、修改和汇总。可支持多条件组合式查询。
数据同步:在应用程序部署完成后,由于移动设备里的SQL CE数据库是离线数据库,因此需要对离线数据进行初始化,就是将后台数据库中的数据导入到离线数据库中,即所谓的数据同步。SQL CE数据库支持桌面应用程序,可以先将SQL Server,Oracle等各种数据库的数据导入到SQL CE中,然后通过ActiveSync将SQL CE的数据库文件(*.sdf)拷贝到移动设备上。数据同步的技术有很多种,我们采用的是ADO.NET直接读写数据。这种方式性能好且灵活,可以节省大量的时间和成本。
手持移动设备在物资验收方面的应用,效率高、成本低。既解放了大批人力,使他们可以腾出手来进行其他方面的工作,又节约了大量设备,避免了浪费,还能够提高劳动生产率,尤其是物资采购、对外贸易和场内物资倒运的效率,提高了物资管理水平,增加了企业的经济效益,促进了企业的现代化和信息化进程。
[1].Karli Watson,Christian Nagel,Beginning Microsoft Visual C#2008[M],第4版 清华大学出版社,2008(12).
[2].王辉,马维华,基于SQL Server CE数据同步技术的研究与实现[J],计算机技术与发展,2008(04).
[3].闫红蕾,曾文火,Pocket PC 与 SQL Server数据库同步移动数据的研究[J],科学技术与工程,2007(18).