预览加载中,请您耐心等待几秒...
1/9
2/9
3/9
4/9
5/9
6/9
7/9
8/9
9/9

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

(19)中华人民共和国国家知识产权局(12)发明专利申请(10)申请公布号CN109302646A(43)申请公布日2019.02.01(21)申请号201811397296.X(22)申请日2018.11.22(71)申请人安徽翼迈科技股份有限公司地址230001安徽省合肥市高新区柏堰科技园香樟大道168号科技实业园C3’号厂房(72)发明人郭春松(51)Int.Cl.H04Q9/00(2006.01)权利要求书2页说明书5页附图1页(54)发明名称一种基于GPRS的水表远程抄表系统和系统的实现方法(57)摘要一种基于GPRS的水表远程抄表系统和系统的实现方法SPSERVER框架实现并发抄表,每个DTU设备通过socket连接被dispatch到SP_handler,然后根据socket连接的fd和DTU的卡号的不同把DTU设备与SP_handler联系起来,这样DTU的所有行为和方法都映射到SP_handler;软件把有线表和无线表通过组网和读取数据的方式有机地集合在一起,使得采集过程简单、程序结构清晰,便于维护和使用。CN109302646ACN109302646A权利要求书1/2页1.一种基于GPRS的水表远程抄表系统,其特征在于:包括:SPSERVER框架、Sever服务器、Firewall装置、DTU设备、无线非扩频集中器、无线扩频集中器、有限MUS采集器;所述Sever服务器无线连接Firewall装置,Sever服务器和Firewall装置构成SPSERVER一框架,所述SPSERVER框架通过无线信号连接DTU设备,所述DTU设备设置3个,分别无线连接所述无线非扩频集中器、无线扩频集中器和有限MUS采集器。2.根据权利要求1所述的一种基于GPRS的水表远程抄表系统的实现方法其特征在于:包括:SPServer是一个实现了半同步/半异步(Half-Sync/Half-Async)和领导者/追随者(Leader/Follower)模式的服务器框架,能够简化TCPserver的开发工作;SPSERVER里面的半同步半异步模式相当于主线程负责所有的数据收发,工作者线程负责逻辑;主线程与工作者线程之间通过消息队列进行通信,SPSERVER主要实现流程如下所述:(1)、连接接收套接字AcceptSocket,并设置必要的属性,如非阻塞等等;(2)、一个完成端口对象,并将AcceptSocket套接字与它关联;(3)、一个单独的子线程用于接收连接,该线程首先在AcceptSocket上调用Accept,然后调用WaitForSingleObject等待连接事件;(4)、创建2个任务队列,用于存储服务端的待执行任务;(5)、创建2个线程池,在后面用于执行任务队列中的任务;(6)、主线程此后不断调用GetQueuedCompletionStatus,检查该IOCP,从而找出待处理任务,然后根据任务的类别,有连接事件时,通知连接接收线程;将Recv任务放入任务队列1;将Send任务放入任务队列2;然后将这两个任务队列中的任务交由2个线程池处理;程序就有4个并行的部分:连接接收线程、主线程也就是任务产生和分配线程、线程池1处理Recv任务、线程池2处理Send任务;SPSERVER程序具体实现:(1)、SP_Handler基于spserver实现网络服务的基类,包含start,handle等方法,用户可以通过覆盖这些方法,实现网络服务的真正逻辑;(2)、SP_IOChannel网络IO操作基类,包含receive,transmit等方法,用户可以通过覆盖这些方法,实现不同的IO操作,比如文件读写,SSL等;(3)、SP_IocpServer实现服务器的用户接口类,负责配置服务器的各项属性(例如:最大连接数,连接超时等),引用用户的业务服务类(SP_Handler)并引用底层IO类(SP_IOChannel),并提供runforever方法实现spserver运行;(4)、SP_IocpEventCallback定义了一系列回调函数,比如OnAccept(当发生accept事件时回调),eventloop(spserver主循环回调)等;(5)、SP_IocpEventHelper封装doClose,doStart,doError和doWork等成为SP_Task,利用线程池异步执行,这些被封装的函数会调用;(6)、SP_Handler中用户覆盖的方法,从而实现用户业务逻辑;(7)、SP_MsgDecoder把buffer内的数据(rawdata)decode,例如接收数据后,decode判断接收到的数据是否拥有完整语义,如果完整就进行处理,如果不完整,就继续接收;(8)、SP_Task封装线程的函数名,传入参数等,线程池管理类读取S