新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于Socket网络编程的远程物流防伪系统的设计

基于Socket网络编程的远程物流防伪系统的设计

作者:时间:2014-01-23来源:网络收藏
随着当今社会的发展,假冒伪劣产品屡禁不止,甚至还有进一步蔓延之势,假冒伪劣产品的数量和范围也呈扩大趋势。因此,在商品中加大查询力度,以实现商品的实时跟踪已势在必然。
随着电子及自动化的飞速发展,拥有GPRS无线采集模块功能的智能采集器已随处可见,很多用户已经开始陆续使用智能采集器收集产品条码信息。虽然智能采集终端本身有自带的GPRS无线传输系统,但这些系统只是提供实际用户一个功能的扩展,其功能不够完善,并不能满足所有用户的实际需要,这使得智能采集终端不能充分发挥其智能化。因此笔者提出了利用socket网络编程来实现远程真伪查询系统。
笔者充分针对用户需求,利用socket网络编程和智能采集终端的GPRS无线传输功能,开发出满足用户需要的远程防伪系统。用户只需要下载该系统,通过简便、美观的操作界面,便可实现智能采集终端的即时查询功能,有效地实现了商品信息的防伪查询以及即时跟踪物流信息等功能。

1 总体设计
该远程物流查询系统流程图如图1所示。当移动终端采集器扫描完产品上附带的编码信息后,通过socket套接字所指定服务器的IP及端口和GPRS无线网络将采集的编码信息发送给远程的服务器端。端通过检索其数据库,将该商品相应的查询相关信息返回给采集终端。最终在采集终端将该商品的相应信息显示出来,这样便实现了采集终端对商品的即时查询功能。

a.jpg



2 系统环境
2.1 软件开发环境
本系统是在 2010结合SQL Server 2008的环境下开发而成,所选用的开发语言是由微软公司开发的visual basic语言以及功能强大的SQL语言。
通过 2010框架,能够提供对SQL Server2008的高效访问,从而为数据库应用开发提供支撑。Microsoft 2010通过整合的开发环境,让软件开发人员以熟悉技术及工具一致的开发方式,创建各个应用平台。从模型及构架设计、程序的撰写及管理、查错、测试到部署,所有的工作一气呵成,这些工作都在Visual studio 2010中完成。
2.2 智能采集器的GPRS无线采集模块
目前市场上大多数采集器都已具备了GPRS无线采集模块的功能。该系统所采用的采集器为新大陆科技集团生产的PT980系列产品,其GPRS无线采集模块如图2所示。该模块支持TCP/UDP两种通信协议;具有RS485和RS232的通信功能,通过485接口或232接口能方便地采集总线上挂接的各种仪器数据;具有4路开关量输入和4路开关量输出功能;拥有IM字节不掉电数据保存空间,主要用于存储采集到的模拟量和开关量数据;拥有高精度的模拟量采集;具有通过移动电话(手机)短信下载通信参数功能,例如通信中用到的IP地址等等;具有透明数据传输功能;具有支持动态域名解析功能,节约了采用固定IP所带来的昂贵费用;具有商店自动重新连接功能,适合远距离无人值守环境。

b.jpg


2.3 网络环境
本系统所采用的网络环境为GPRS无线网络。GPRS是一种采用分组交换模式传输数据及信令的高效率方式。它克服了电路交换型数据传输速率低、资源利用率差的缺陷。利用GPRS进行数据传输具有资源共享、频率利用率高、数据双向通信传输率高、接入时间短、永远在线等优点。智能采集器可通过GPRS无线网络将商品条码信息发送给。在本系统中,可同时监听处理多台智能采集器终端同时发送产品编码信息。

3 网络编程
是TCP/IP的编程接口,提供了大量的系统调用构成了网络程序的主体,是标准的C/S模式编程。在操作系统中,它属于文件系统的一部分,网络通信可以被看作是对文件的读取,使得我们对网络的控制和对文件的控制一样方便。Server用于服务器端,而Soc ket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,通过操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是Serversecket,它们的工作都是通过SecketImpl类及其子类完成。
Socket提供了两种数据传输的协议,分别为TCP和UDP协议;TCP(传输控制协议)提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功
能,保证数据能从一端传到另一端;UDP(用户数据报协议)是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。因为TCP协议不但能保证数据的正确性而且保证数据顺序正确,而UDP协议不能保证,所以TCP协议更符合本系统中传输采集终端所采集的编码的要求,因此本系统采用TCP协议。基于TCP协议的通信流程图如图3所示。
在该流程图中,Socket()用于建立流式套接字;Bind()将套接字与本地地址相连;Listen()通知TCP,使服务器准备好接受连接;Accept()用于接收连接;Read()、Write()这两个函数分别用于套接字上读、写数据,直到数据交换完;Close()用来关闭套接字;Connect()用于将套接字与远地主机连接。其中,Connect()、Accept()、Read()、Write()函数等都有可能造成阻塞,阻塞模式是Socket的缺省方式。客户端和服务器的连接有一个3次握手机制,即服务器调用Socket()、Bind()、Listen()完成初始化后,调用Accept()阻塞等待,处于监听端口的状态。而客户端调用Socket()初始化后,调用Connect()发出SYN段并阻塞等待服务器的应答,服务器应答一个SYN—ACK段,客户端收到后从Con nect()返回,同时应答一个ACK段,服务器收到后从Accept()返回。

4 代码的设计
4.1 服务端
在本系统中,一个服务端可能不只为一个智能采集终端提供服务。当N(N为正整数)台智能采集终端发送请求时,服务端必须做出异步响应,因此,一般在处理服务端的监听时会使用多线程的方法。正因使用了多线程的方法,控制显示控件将接受到的字符显示就必须使用委托的方法;而当程序无法得知从另外一个线程来控制其他线程的合法性,会认为程序有错误,故系统中采用了Delegate类,该类用于派生委托类型,派生前需要明确派生的委托和需要委托的函数输入值相匹配。
该系统可监听最多100个同时的客户端,通过与SQL查询语句,可查询出该产品的编码、仓库等信息。Socket套接字在笔者自定义的wait data()函数中实现,下面即给出了waitdata()函数的代码,来讲解整个Socket编程,其中部分代码后面有详细的注释。查询信息的代码在笔者自己命名的Getdata()函数中实现,分别通过对数据库中的防伪编码表,产品信息表,仓库信息表,入库信息表,发货信息表,供销商信息表的综合查询,将查询信息发送给采集终端,由于字数的限制,文中没有给出Getdata()函数的代码。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭