CN107122237A - 数据通信方法及装置 - Google Patents
数据通信方法及装置 Download PDFInfo
- Publication number
- CN107122237A CN107122237A CN201710284431.9A CN201710284431A CN107122237A CN 107122237 A CN107122237 A CN 107122237A CN 201710284431 A CN201710284431 A CN 201710284431A CN 107122237 A CN107122237 A CN 107122237A
- Authority
- CN
- China
- Prior art keywords
- data
- task
- control
- sent
- link
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000006854 communication Effects 0.000 title claims abstract description 115
- 238000004891 communication Methods 0.000 title claims abstract description 111
- 238000000034 method Methods 0.000 title claims abstract description 34
- 230000005540 biological transmission Effects 0.000 claims abstract description 80
- 238000012545 processing Methods 0.000 claims abstract description 46
- 230000004044 response Effects 0.000 claims description 62
- 238000012546 transfer Methods 0.000 claims description 22
- 238000006243 chemical reaction Methods 0.000 claims description 17
- 238000013481 data capture Methods 0.000 claims description 12
- 230000010354 integration Effects 0.000 claims description 7
- 241001672694 Citrus reticulata Species 0.000 claims 1
- 230000007246 mechanism Effects 0.000 abstract description 6
- 238000010438 heat treatment Methods 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000000429 assembly Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/321—Interlayer communication protocols or service data unit [SDU] definitions; Interfaces between layers
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种数据通信方法及装置,涉及通信技术领域,其中的方法包括:在APP运行时,建立数据链路;创建发送任务池和接收任务池;基于任务发送优先规则从发送任务池中获取第一数据,并通过数据链路发送给底层通信服务端;通过数据链路接收由底层通信服务端发送的第二数据,将第二数据加入接收任务池中并进行相应地处理;当APP退出时,则关闭数据链路。本发明的通信方法及系统,能够实现控制数据发送以及接收的排队机制,使数据可以有序发送和接收,能够有效控制数据通信的多线程、多链路并发数量,可以优化通信流程,延长硬件使用寿命,解决多线程和多数据链路的并发造成的硬件发热等问题,提高工作的安全性以及用户的体验度。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种数据通信方法及装置。
背景技术
随着智能家居技术的不断发展,智能家居终端不再仅限于手机、平板电脑,目前也支持嵌入式终端控制器等。嵌入式终端控制器中的通信是基于OSI七层协议模型中应用层与底层之间的通信,在控制器中安装有嵌入式APP,APP需要快速高效地与底层进行通信,包括进行状态查询和控制等。目前嵌入式APP的通信方式基于UDP、TCP、HTTP/HTTPS等,基本原理都为新建socket并通过指定IP、port进行发送数据、接收数据。通信链路有的是长连接,有的是短连接。短连接是指通信链路只负责数据的发送,数据发送完毕通信链路断开;长连接是指通信链路的生命周期贯穿某一帧数据的发送以及接收,接收完毕通信链路断开。长连接或短连接的通信链路都会导致APP或者底层程序中发送和接收数据的线程多而杂,且数据链路也因不同功能而数量较多,在优化程序时对于多线程和多数据链路的管理尤为复杂,并且在实际的使用过程中,由于多线程和多数据链路的并发容易造成系统CPU资源的占用率过高、电路板温度较高、硬件使用寿命较短等问题。
发明内容
有鉴于此,本发明要解决的一个技术问题是提供一种数据通信方法及装置,在APP运行期间通过数据链路与底层通信服务端进行通信,并基于发送任务池以及任务发送优先规则进行数据的发送。
根据本发明的一个方面,提供一种数据通信方法,包括:在APP运行时,建立数据链路;创建发送任务池和接收任务池;基于任务发送优先规则从所述发送任务池中获取所述第一数据,并通过所述数据链路发送给底层通信服务端;通过所述数据链路接收由所述底层通信服务端发送的第二数据,将所述第二数据加入所述接收任务池中并进行相应地处理;当所述APP退出时,则关闭所述数据链路。
可选地,启动发送线程和接收线程;所述接收线程轮询所述发送任务池,当确定所述发送任务池中有第一数据时,获取所述第一数据并通过所述数据链路发送给所述底层通信服务端;所述接收线程对所述数据链路进行轮询,当确定通过所述数据链路接收到所述底层通信服务端发送的第二数据时,获取所述第二数据并加所述接收任务池中。
可选地,基于任务发送优先规则从所述发送任务池中获取所述第一数据、并通过所述数据链路发送给底层通信服务端包括:确定所述第一数据的优先级,按照优先级高低顺序获取所述第一数据;将获取的所述第一数据通过所述数据链路发送给底层通信服务端,并将此第一数据从所述发送任务池中移除。
可选地,如果所述第一数据的优先级相同,则按照加入所述发送任务池的顺序获取具有相同优先级的所述第一数据。
可选地,接收到发送任务数据,确定所述发送任务数据的优先级;将所述发送任务数据转换为具有第一数据格式的所述第一数据,并将所述第一数据加入到所述发送任务池中;其中,所述第一数据包含有所述发送任务数据的优先级、数据转换时间。
可选地,所述发送任务数据包括:控制帧和查询帧;将所述控制帧和所述查询帧转换为具有第一数据格式的控制任务数据和查询任务数据;其中,所述控制帧的优先级高于所述查询帧的优先级。
可选地,获取所述控制任务数据和所述查询任务数据中的数据转换时间,根据所述数据转换时间的顺序获取所述控制任务数据和所述查询任务数据;当确定需要获取的数据是所述查询任务数据时,判断在所述发送任务池中是否存在与此查询任务数据的数据转换时间的时间差值小于时间阈值的所述控制任务数据;如果存在,则获取此控制任务数据并通过所述数据链路发送给底层通信服务端,如果不存在,则获取此查询任务数据并通过所述数据链路发送给底层通信服务端。
可选地,从所述接收任务池中获取所述第二数据,确定所述第二数据的数据类型;将所述第二数据转换为具有与所述数据类型对应的数据格式的接收数据,并将此第二数据从所述接收任务池中移除;基于预设的处理规则对所述接收数据进行处理。
可选地,所述数据类型包括:查询响应数据类型、控制响应类型;将所述第二数据转换为具有与所述查询响应类型对应的数据格式的查询任务响应数据,或者将所述第二数据转换为具有与所述控制响应类型对应的数据格式的控制任务响应数据;所述基于预设的处理规则对所述接收数据进行处理包括:在所述APP界面上显示所述查询任务响应数据和/或所述控制任务响应数据。
可选地,所述建立数据链路包括:创建本地套接字LocalSocket,获取所述LocalSocket的输入流InputStream和输出流OutputStream;通过所述OutputStream向所述底层通信服务端发送所述第一数据,通过所述InputStream接收所述底层通信服务端发送的第二数据。
根据本发明的另一方面,提供一种数据通信装置,包括:链路建立模块,用于在APP运行时,建立数据链路;任务池建立模块,用于创建发送任务池和接收任务池;发送处理模块,用于基于任务发送优先规则从所述发送任务池中获取所述第一数据,并通过所述数据链路发送给底层通信服务端;接收处理模块,用于通过所述数据链路接收由所述底层通信服务端发送的第二数据,将所述第二数据加入所述接收任务池中并进行相应地处理;链路关闭模块,用于当所述APP退出时,则关闭所述数据链路。
可选地,所述发送处理模块,用于启动发送线程;所述接收线程轮询所述发送任务池,当确定所述发送任务池中有第一数据时,获取所述第一数据并通过所述数据链路发送给所述底层通信服务端;所述接收处理模块,还用于启动接收线程;所述接收线程对所述数据链路进行轮询,当确定通过所述数据链路接收到所述底层通信服务端发送的第二数据时,获取所述第二数据并加入所述接收任务池中。
可选地,所述发送处理模块,还包括:优先级确定单元,用于确定所述第一数据的优先级;数据获取单元,用于按照优先级高低顺序获取所述第一数据;数据发送单元,用于将获取的所述第一数据通过所述数据链路发送给底层通信服务端;数据移除单元,用于将此第一数据从所述发送任务池中移除。
可选地,所述数据获取单元,还用于如果所述第一数据的优先级相同,则按照加入所述发送任务池的顺序获取具有相同优先级的所述第一数据。
可选地,所述数据转换模块,用于接收发送任务数据,确定所述发送任务数据的优先级;将所述发送任务数据转换为具有第一数据格式的所述第一数据,并将所述第一数据加入到所述发送任务池中;其中,所述第一数据包含有所述发送任务数据的优先级、数据转换时间。
可选地,所述发送任务数据包括:控制帧和查询帧;所述数据转换模块,还用于将所述控制帧和所述查询帧转换为具有第一数据格式的控制任务数据和查询任务数据;其中,所述控制帧的优先级高于所述查询帧的优先级。
可选地,所述数据获取单元,还用于获取所述控制任务数据和所述查询任务数据中的数据转换时间,在所述发送任务池中根据所述数据转换时间的顺序获取所述控制任务数据和所述查询任务数据;当确定需要获取的数据是所述查询任务数据时,判断是否存在与此查询任务数据的数据转换时间的时间差值小于时间阈值的所述控制任务数据;如果存在,则获取此控制任务数据,如果不存在,则获取此查询任务数据;所述数据发送单元,还用于将获取的所述查询任务数据和所述控制任务数据通过所述数据链路发送给底层通信服务端。
可选地,所述接收处理模块,包括:数据接收单元,用于从所述接收任务池中获取所述第二数据;类型确定单元,用于确定所述第二数据的数据类型;数据整合单元,用于将所述第二数据转换为具有与所述数据类型对应的数据格式的接收数据,并将此第二数据从所述接收任务池中移除;数据处理单元,用于基于预设的处理规则对所述接收数据进行处理。
可选地,所述数据类型包括:查询响应数据类型、控制响应类型;所述数据整合单元,还用于将所述第二数据转换为具有与所述查询响应类型对应的数据格式的查询任务响应数据,或者将所述第二数据转换为具有与所述控制响应类型对应的数据格式的控制任务响应数据;所述数据处理单元,还用于在所述APP界面上显示所述查询任务响应数据和/或所述控制任务响应数据。
可选地,所述链路建立模块,还用于创建本地套接字LocalSocket,获取所述LocalSocket的输入流InputStream和输出流OutputStream;所述发送处理模块,还用于通过所述OutputStream向所述底层通信服务端发送所述第一数据;所述接收处理模块,还用于通过所述InputStream接收所述底层通信服务端发送的第二数据。
本发明的数据通信方法及装置,在APP运行期间通过数据链路与底层通信服务端进行通信,并基于发送任务池以及任务发送优先规则进行数据的发送,能够实现控制数据发送以及接收的排队机制,使数据可以有序发送和接收,能够有效控制数据通信中的多线程、多链路并发,能够优化通信流程。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为根据本发明的数据通信方法的一个实施例的流程示意图;
图2为根据本发明的数据通信方法的一个实施例的通信机制示意图;
图3为根据本发明的数据通信方法的一个实施例中发送数据的流程示意图;
图4为根据本发明的数据通信方法的一个实施例中接收数据的流程示意图;
图5为根据本发明的数据通信装置的一个实施例的模块示意图;
图6为根据本发明的数据通信装置的一个实施例中发送处理模块的模块示意图;
图7为根据本发明的数据通信装置的一个实施例中接收处理模块的模块示意图
具体实施方式
下面参照附图对本发明进行更全面的描述,其中说明本发明的示例性实施例。下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。下面结合各个图和实施例对本发明的技术方案进行多方面的描述。
下文中的“第一”、“第二”等仅用于描述上相区别,并没有其它特殊的含义。
图1为根据本发明的数据通信方法的一个实施例的流程示意图,如图1所示:
步骤101,在APP运行时,建立数据链路。APP可以为嵌入式APP等。
步骤102,创建发送任务池和接收任务池。发送任务池和接收任务池可以实现为队列等。
步骤103,基于任务发送优先规则从发送任务池中获取第一数据,并通过数据链路发送给底层通信服务端。任务发送优先规则可以根据发送的数据类型等进行设置,可以有多种。
步骤104,通过数据链路接收由底层通信服务端发送的第二数据,将第二数据加入接收任务池中并进行相应地处理。
步骤105,当APP退出时,则关闭数据链路。
在上述的实施例中,在APP运行时建立数据链接,APP退出时数据链路关闭,将数据链路的生命周期与APP的生命周期绑定起来,在APP运行的过程中数据链路一直保持通畅。可以采用一个数据链路负责APP所有的功能模块与底层通信服务端的数据通信(包括发送、接收),采用排队机制管理数据的有序发送和接收。
在一个实施例中,APP可以采用异步方式发送、接收数据。启动发送线程和接收线程,接收线程轮询发送任务池,当确定发送任务池中有第一数据时,获取第一数据并通过数据链路发送给底层通信服务端。接收线程对数据链路进行轮询,当确定通过数据链路接收到底层通信服务端发送的第二数据时,获取第二数据并加接收任务池中。使用发送线程、接收线程分别发送数据、接收数据,与APP的UI等线程分开工作,能够避免发生阻塞。
在操作系统系统启动时,创建底层通信服务,可以创建通信进程,底层通信服务端能够与外部的设备、机组等进行通信。APP在应用层中运行时建立数据链路,通过数据链路与底层通信服务端进行数据通信。底层通信服务端和数据链路可以有多种实现方式。
例如,如图2所示,在安卓系统中,系统运行时创建底层通信服务。创建LocalServerSocket,并通过LocalServerSocket的OutputStream和InputStream进行数据通信。APP在运行时创建本地套接字LocalSocket,获取LocalSocket的输入流InputStream和输出流OutputStream,通过OutputStream向底层通信服务端发送第一数据,通过InputStream接收底层通信服务端发送的第二数据。
安卓系统基于UNIX,APP可以在UNIX域名空间内创建一个LocalSocket(非服务器),LocalSocket完全不同于java.net.socket,APP可以通过LocalSocket与安卓系统的底层通信,LocalServerSocket是底层通信服务,能够与机组或者设备通过UART、RS485等进行通信。
启动用于发送数据的发送线程,将APP的各个功能模块发出的数据,如查询帧、控制帧等,通过OutputStream向底层通信服务端发送。启动用于接收数据的线程,通过InputStream接收底层通信服务端发送的数据,包括查询返回帧、控制返回帧等,将接收的数据发送给APP的各个功能模块进行显示。
图3为根据本发明的数据通信方法的一个实施例中发送数据的流程示意图,如图3所示:
步骤301,当APP启动时,创建LocalSocket。
步骤302,获取输出流OutputStream。
步骤303,创建发送任务池、接收线程。
步骤304,接收控制数据帧、查询数据帧。
步骤305,分配发送任务数据的优先级。
步骤306,将控制数据帧、查询数据帧转换为控制任务数据、查询任务数据。
步骤307,将控制任务数据、查询任务数据加入到发送任务池中。
步骤308,发送线程轮询发送任务池,判断发送任务池中是否有数据,如果是,则进入步骤309,如果否,则在经过设置的轮询周期后进入步骤308。
步骤309,获取控制任务数据、查询任务数据,通过OutputStream发送给底层通信服务端。
在一个实施例中,基于任务发送优先规则从发送任务池中获取第一数据,任务发送优先规则可以有多种,能够根据需求进行设置。例如,确定发送任务池中的第一数据的优先级,按照优先级高低顺序获取第一数据,将获取的第一数据通过数据链路发送给底层通信服务端,并将此第一数据从发送任务池中移除。如果第一数据的优先级相同,则按照加入发送任务池的顺序获取具有相同优先级的第一数据。
在一个实施例中,在接收到发送任务数据,确定发送任务数据的优先级,将发送任务数据转换为具有第一数据格式的第一数据,并将第一数据加入到发送任务池中。第一数据包含有发送任务数据的优先级、数据转换时间等。第一数据格式可以根据不同的APP以及控制器等进行设置。
发送任务数据可以为多种,例如有控制帧和查询帧。将控制帧和查询帧转换为具有第一数据格式的控制任务数据和查询任务数据,控制帧的优先级高于查询帧的优先级。
控制帧用于控制某个机组或者设备的、具有规定统一的数据格式的数据帧。控制帧的数据包括:数据发送端的id、数据接收端的id以及控制参数和控制值。查询帧用于查询某个机组或者设备参数的、具有规定统一的数据格式的数据帧。查询帧包括:数据发送端id、数据接收端id以及查询参数。
将控制帧和查询帧根据预设的第一数据格式进行封装,转换为控制任务数据和查询任务数据。控制任务数据包括:控制帧的优先级、控制帧的转换时间(时间戳)、被封装的控制帧数据。查询任务数据包括:查询帧的优先级、查询帧的转换时间(时间戳)、被封装的查询帧数据。
在一个实施例中,APP的界面显示根据机组或者设备的状态实时更新,因此,机组或者设备的状态更新显示需要不断的向机组或者设备发查询状态请求。当用户操作APP控制机组或者设备某个参数时,需要向机组或者设备发送控制状态请求。APP的各个功能模块组装各自的数据,根据业务规则生成控制帧或查询帧,可以将控制帧或查询帧经由优先级分配中心模块重新组装为控制任务数据或查询任务数据后加入发送任务池。
优先级分配中心模块可以为APP的一个功能单元,所有的控制帧和查询帧都先进入优先级分配中心模块分配优先级,控制帧的优先级高于查询帧。例如,控制帧的优先级为1,查询帧的优先级为2。优先级分配完毕后将控制帧或查询帧重新组装,转换为具有约定好数据格式的控制任务数据和查询任务数据,并将控制任务数据和查询任务数据加入发送任务池。
发送任务池为存放控制任务数据和查询任务数据的任务队列。当发送线程获取发送任务池中的数据时,优先获取优先级高的控制任务数据,如果无控制任务数据则遵循FIFO(先入先出)原则获取数据。
获取控制任务数据和查询任务数据中的数据转换时间,根据数据转换时间的顺序获取控制任务数据和查询任务数据。当确定需要获取的数据是查询任务数据时,判断在发送任务池中是否存在与此查询任务数据的数据转换时间的时间差值小于时间阈值的控制任务数据。如果存在,则获取此控制任务数据,并通过数据链路发送给底层通信服务端,如果不存在,则获取此查询任务数据,并通过数据链路发送给底层通信服务端。
例如,发送线程基于5秒轮询间隔周期轮询发送任务池。当判断发送任务池不为空时,发送线程按照时间顺序获取发送任务池中的数据。当获取的为查询任务数据时,需要判断是否存在与此查询任务数据的数据转换时间的时间差值小于时间阈值的控制任务数据。
例如,时间阈值为1秒,当获取的为查询任务数据时,此查询任务数据的数据转换时间为19点20分15秒25。发送线程遍历发送任务池,判断是否存在与此查询任务数据的数据转换时间的时间差值小于1秒的控制任务数据。确定发送任务池中的一个控制任务数据的数据转换时间为19点20分16秒,则19点20分16秒与19点20分15秒5的时间差值小于1秒,则先获取此控制任务数据。
如果不存在与此查询任务数据的数据转换时间的时间差值小于1秒的控制任务数据,则直接获取并发送此查询任务数据。可以在查询任务数据和控制任务数据的头部或其它位置设置关键字。例如关键字为status表示查询任务数据,关键字为cmd表示控制任务数据。通过获取关键字确定是否为查询任务数据或控制任务数据。
图4为根据本发明的数据通信方法的一个实施例中接收数据的流程示意图,如图4所示:
步骤401,当APP启动时,创建LocalSocket。
步骤402,获取输出流InputStream。
步骤403,创建接收任务池、接收线程。
步骤404,接收线程对InputStream进行轮询,判断是否接收到第二数据。
步骤405,获取第二数据并放入接收任务池中。
步骤406,解析数据的头部标识,确定第二数据的数据类型。
步骤407,将第二数据转换为查询任务响应数据、控制任务响应数据。
步骤408,在APP界面上显示查询任务响应数据、控制任务响应数据。
在一个实施例中,从接收任务池中获取第二数据,确定第二数据的数据类型,将第二数据转换为具有与数据类型对应的数据格式的接收数据,并将此第二数据从接收任务池中移除,基于预设的处理规则对接收数据进行处理。
数据类型包括:查询响应类型、控制响应类型等。将第二数据转换为具有与查询响应类型对应的数据格式的查询任务响应数据,或者将第二数据转换为具有与控制响应类型对应的数据格式的控制任务响应数据。可以在APP界面上显示查询任务响应数据、控制任务响应数据。
第二数据的头部或其它的位置中设置有关键字。解析第二数据获取关键字。当关键字为status时,第二数据的数据类型为查询响应类型,当关键字为cmd时,第二数据的数据类型为控制响应类型。通过解析第二数据并基于关键字确定第二数据是否为查询响应类型或控制响应类型。将第二数据转换为具有与数据类型对应的数据格式的接收数据可以有多种方式。
例如,接收线程定时从InputStream接收底层通信服务端发送的第二数据,将第二数据放进接收任务池。在接收任务池接收到第二数据后,将第二数据放入结构为哈希表的MAP<key,value>中,键(key)是第二数据接收的顺序Id,值(value)是接收到的第二数据。
数据解析中心模块在解析数据时从该MAP中获取第二数据进行解析。数据解析中心模块将接收到的第二数据通过获取第二数据中的关键字确定第二数据的数据类型为查询响应类型或控制响应类型。如果是控制响应类型,则根据控制数据的协议将第二数据转换为具有与控制响应类型对应的数据格式的控制任务响应数据。如果是查询响应类型,则根据查询数据的协议将第二数据转换为具有与查询响应类型对应的数据格式的查询任务响应数据。在第二数据转换完毕后,将查询任务响应数据、控制任务响应数据分发给APP的对应功能模块,用于填充界面展示给用户。
上述实施例提供的数据通信方法,在APP运行期间通过数据链路与底层通信服务端进行通信,并基于发送任务池以及任务发送优先规则进行数据的发送,能够实现控制数据发送以及接收的排队机制,使数据可以有序发送和接收,数据链路可以实现为单个实例,能够很好地控制在数据通信中的多线程、多链路并发,能够优化通信流程,提高APP架构的移植性并降低对CPU的占用,延长硬件使用寿命,解决多线程和多数据链路的并发造成的硬件发热等问题。
在一个实施例中,本发明提供一种数据通信装置51,如图5所示,包括:链路建立模块51、任务池建立模块52、发送处理模块53、接收处理模块54、链路关闭模块55和数据转换模块56。链路建立模块51在APP运行时,建立数据链路。任务池建立模块52创建发送任务池和接收任务池。
发送处理模块53基于任务发送优先规则从发送任务池中获取第一数据,并通过数据链路发送给底层通信服务端。接收处理模块54通过数据链路接收由底层通信服务端发送的第二数据,将第二数据加入接收任务池中并进行相应地处理。链路关闭模块55当APP退出时,则关闭数据链路。
在一个实施例中,发送处理模块53启动发送线程,接收线程轮询发送任务池,当确定发送任务池中有第一数据时,获取第一数据并通过数据链路发送给底层通信服务端。接收处理模块54启动接收线程,接收线程对数据链路进行轮询,当确定通过数据链路接收到底层通信服务端发送的第二数据时,获取第二数据并加入接收任务池中。
数据转换模块56接收发送任务数据,确定发送任务数据的优先级。数据转换模块56将发送任务数据转换为具有第一数据格式的第一数据,并将第一数据加入到发送任务池中。第一数据包含有发送任务数据的优先级、数据转换时间。
发送任务数据包括:控制帧和查询帧。数据转换模块56将控制帧和查询帧转换为具有第一数据格式的控制任务数据和查询任务数据,控制帧的优先级高于查询帧的优先级。
链路建立模块51创建本地套接字LocalSocket,获取LocalSocket的输入流InputStream和输出流OutputStream。发送处理模块53通过OutputStream向底层通信服务端发送第一数据。接收处理模块54通过InputStream接收底层通信服务端发送的第二数据。
如图6所示,发送处理模块53包括:优先级确定单元531、数据获取单元532、数据发送单元533和数据移除单元534。优先级确定单元531确定第一数据的优先级。数据获取单元532按照优先级高低顺序获取第一数据。数据发送单元533将获取的第一数据通过数据链路发送给底层通信服务端。数据移除单元534将此第一数据从发送任务池中移除。如果第一数据的优先级相同,则数据获取单元532按照加入发送任务池的顺序获取具有相同优先级的第一数据。
在一个实施例中,数据获取单元532获取控制任务数据和查询任务数据中的数据转换时间,在发送任务池中根据数据转换时间的顺序获取控制任务数据和查询任务数据。当确定需要获取的数据是查询任务数据时,数据获取单元532判断是否存在与此查询任务数据的数据转换时间的时间差值小于时间阈值的控制任务数据。如果存在,则数据获取单元532获取此控制任务数据,如果不存在,则数据获取单元532获取此查询任务数据。数据发送单元533将获取的查询任务数据和控制任务数据通过数据链路发送给底层通信服务端。
如图7所示,接收处理模块54包括:数据接收单元541、类型确定单元542、数据整合单元543和数据处理单元544。数据接收单元541从接收任务池中获取第二数据。类型确定单元542确定第二数据的数据类型。数据整合单元543将第二数据转换为具有与数据类型对应的数据格式的接收数据,并将此第二数据从接收任务池中移除。数据处理单元544基于预设的处理规则对接收数据进行处理。
数据类型包括:查询响应类型、控制响应类型。数据整合单元543将第二数据转换为具有与查询响应类型对应的数据格式的查询任务响应数据,或者将第二数据转换为具有与控制响应类型对应的数据格式的控制任务响应数据。数据处理单元544在APP界面上显示查询任务响应数据、控制任务响应数据。
上述实施例提供的数据通信方法及装置,在APP运行期间通过数据链路与底层通信服务端进行通信,并基于发送任务池以及任务发送优先规则进行数据的发送,能够实现控制数据发送以及接收的排队机制,使数据可以有序发送和接收,数据链路可以实现为单个实例,能够控制数据通信的多线程、多链路并发,可以优化通信流程,提高APP架构的移植性并降低对CPU的占用,延长硬件使用寿命,解决多线程和多数据链路的并发造成的硬件发热等问题,提高工作的安全性以及用户的体验度。
可能以许多方式来实现本发明的方法和系统。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本发明的方法和系统。用于方法的步骤的上述顺序仅是为了进行说明,本发明的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本发明实施为记录在记录介质中的程序,这些程序包括用于实现根据本发明的方法的机器可读指令。因而,本发明还覆盖存储用于执行根据本发明的方法的程序的记录介质。
本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。
Claims (20)
1.一种数据通信方法,其特征在于,包括:
在APP运行时,建立数据链路;
创建发送任务池和接收任务池;
基于任务发送优先规则从所述发送任务池中获取所述第一数据,并通过所述数据链路发送给底层通信服务端;
通过所述数据链路接收由所述底层通信服务端发送的第二数据,将所述第二数据加入所述接收任务池中并进行相应地处理;
当所述APP退出时,则关闭所述数据链路。
2.如权利要求1所述的方法,其特征在于,还包括:
启动发送线程和接收线程;
所述接收线程轮询所述发送任务池,当确定所述发送任务池中有第一数据时,获取所述第一数据并通过所述数据链路发送给所述底层通信服务端;
所述接收线程对所述数据链路进行轮询,当确定通过所述数据链路接收到所述底层通信服务端发送的第二数据时,获取所述第二数据并加所述接收任务池中。
3.如权利要求2所述的方法,其特征在于,基于任务发送优先规则从所述发送任务池中获取所述第一数据、并通过所述数据链路发送给底层通信服务端包括:
确定所述第一数据的优先级,按照优先级高低顺序获取所述第一数据;
将获取的所述第一数据通过所述数据链路发送给底层通信服务端,并将此第一数据从所述发送任务池中移除。
4.如权利要求3所述的方法,其特征在于,还包括:
如果所述第一数据的优先级相同,则按照加入所述发送任务池的顺序获取具有相同优先级的所述第一数据。
5.如权利要求4所述的方法,其特征在于,还包括:
接收到发送任务数据,确定所述发送任务数据的优先级;
将所述发送任务数据转换为具有第一数据格式的所述第一数据,并将所述第一数据加入到所述发送任务池中;
其中,所述第一数据包含有所述发送任务数据的优先级、数据转换时间。
6.如权利要求5所述的方法,其特征在于,所述发送任务数据包括:控制帧和查询帧;
将所述控制帧和所述查询帧转换为具有第一数据格式的控制任务数据和查询任务数据;
其中,所述控制帧的优先级高于所述查询帧的优先级。
7.如权利要求6所述的方法,其特征在于,还包括:
获取所述控制任务数据和所述查询任务数据中的数据转换时间,根据所述数据转换时间的顺序获取所述控制任务数据和所述查询任务数据;
当确定需要获取的数据是所述查询任务数据时,判断在所述发送任务池中是否存在与此查询任务数据的数据转换时间的时间差值小于时间阈值的所述控制任务数据;
如果存在,则获取此控制任务数据并通过所述数据链路发送给底层通信服务端,如果不存在,则获取此查询任务数据并通过所述数据链路发送给底层通信服务端。
8.如权利要求2所述的方法,其特征在于,
从所述接收任务池中获取所述第二数据,确定所述第二数据的数据类型;
将所述第二数据转换为具有与所述数据类型对应的数据格式的接收数据,并将此第二数据从所述接收任务池中移除;
基于预设的处理规则对所述接收数据进行处理。
9.如权利要求8所述的方法,其特征在于,所述数据类型包括:查询响应类型、控制响应类型;
所述将所述第二数据转换为具有与所述数据类型对应的数据格式的接收数据包括:
将所述第二数据转换为具有与所述查询响应类型对应的数据格式的查询任务响应数据,或者将所述第二数据转换为具有与所述控制响应类型对应的数据格式的控制任务响应数据;
所述基于预设的处理规则对所述接收数据进行处理包括:
在所述APP界面上显示所述查询任务响应数据和/或所述控制任务响应数据。
10.如权利要求1至9任一项所述的方法,其特征在于,所述建立数据链路包括:
创建本地套接字LocalSocket,获取所述LocalSocket的输入流InputStream和输出流OutputStream;
通过所述OutputStream向所述底层通信服务端发送所述第一数据,通过所述InputStream接收所述底层通信服务端发送的第二数据。
11.一种数据通信装置,其特征在于,包括:
链路建立模块,用于在APP运行时,建立数据链路;
任务池建立模块,用于创建发送任务池和接收任务池;
发送处理模块,用于基于任务发送优先规则从所述发送任务池中获取所述第一数据,并通过所述数据链路发送给底层通信服务端;
接收处理模块,用于通过所述数据链路接收由所述底层通信服务端发送的第二数据,将所述第二数据加入所述接收任务池中并进行相应地处理;
链路关闭模块,用于当所述APP退出时,则关闭所述数据链路。
12.如权利要求11所述的装置,其特征在于,
所述发送处理模块,用于启动发送线程;所述接收线程轮询所述发送任务池,当确定所述发送任务池中有第一数据时,获取所述第一数据并通过所述数据链路发送给所述底层通信服务端;
所述接收处理模块,还用于启动接收线程;所述接收线程对所述数据链路进行轮询,当确定通过所述数据链路接收到所述底层通信服务端发送的第二数据时,获取所述第二数据并加入所述接收任务池中。
13.如权利要求12所述的装置,其特征在于,
所述发送处理模块,还包括:
优先级确定单元,用于确定所述第一数据的优先级;
数据获取单元,用于按照优先级高低顺序获取所述第一数据;
数据发送单元,用于将获取的所述第一数据通过所述数据链路发送给底层通信服务端;
数据移除单元,用于将此第一数据从所述发送任务池中移除。
14.如权利要求13所述的装置,其特征在于,
所述数据获取单元,还用于如果所述第一数据的优先级相同,则按照加入所述发送任务池的顺序获取具有相同优先级的所述第一数据。
15.如权利要求14所述的装置,其特征在于,还包括:
所述数据转换模块,用于接收发送任务数据,确定所述发送任务数据的优先级;将所述发送任务数据转换为具有第一数据格式的所述第一数据,并将所述第一数据加入到所述发送任务池中;其中,所述第一数据包含有所述发送任务数据的优先级、数据转换时间。
16.如权利要求15所述的装置,其特征在于,所述发送任务数据包括:控制帧和查询帧;
所述数据转换模块,还用于将所述控制帧和所述查询帧转换为具有第一数据格式的控制任务数据和查询任务数据;其中,所述控制帧的优先级高于所述查询帧的优先级。
17.如权利要求16所述的装置,其特征在于,
所述数据获取单元,还用于获取所述控制任务数据和所述查询任务数据中的数据转换时间,在所述发送任务池中根据所述数据转换时间的顺序获取所述控制任务数据和所述查询任务数据;当确定需要获取的数据是所述查询任务数据时,判断是否存在与此查询任务数据的数据转换时间的时间差值小于时间阈值的所述控制任务数据;如果存在,则获取此控制任务数据,如果不存在,则获取此查询任务数据;
所述数据发送单元,还用于将获取的所述查询任务数据和所述控制任务数据通过所述数据链路发送给底层通信服务端。
18.如权利要求12所述的装置,其特征在于,
所述接收处理模块,包括:
数据接收单元,用于从所述接收任务池中获取所述第二数据;
类型确定单元,用于确定所述第二数据的数据类型;
数据整合单元,用于将所述第二数据转换为具有与所述数据类型对应的数据格式的接收数据,并将此第二数据从所述接收任务池中移除;
数据处理单元,用于基于预设的处理规则对所述接收数据进行处理。
19.如权利要求18所述的装置,其特征在于,所述数据类型包括:查询响应类型、控制响应类型;
所述数据整合单元,还用于将所述第二数据转换为具有与所述查询响应类型对应的数据格式的查询任务响应数据,或者将所述第二数据转换为具有与所述控制响应类型对应的数据格式的控制任务响应数据;
所述数据处理单元,还用于在所述APP界面上显示所述查询任务响应数据和/或所述控制任务响应数据。
20.如权利要求11至19任一项所述的装置,其特征在于,
所述链路建立模块,还用于创建本地套接字LocalSocket,获取所述LocalSocket的输入流InputStream和输出流OutputStream;
所述发送处理模块,还用于通过所述OutputStream向所述底层通信服务端发送所述第一数据;
所述接收处理模块,还用于通过所述InputStream接收所述底层通信服务端发送的第二数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710284431.9A CN107122237B (zh) | 2017-04-27 | 2017-04-27 | 数据通信方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710284431.9A CN107122237B (zh) | 2017-04-27 | 2017-04-27 | 数据通信方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107122237A true CN107122237A (zh) | 2017-09-01 |
CN107122237B CN107122237B (zh) | 2020-08-04 |
Family
ID=59724950
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710284431.9A Active CN107122237B (zh) | 2017-04-27 | 2017-04-27 | 数据通信方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107122237B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109120486A (zh) * | 2018-08-28 | 2019-01-01 | 珠海格力电器股份有限公司 | WiFi模块数据传输方法、传输系统、智能家电数据传输系统 |
CN112579279A (zh) * | 2020-12-25 | 2021-03-30 | 广州威茨热能技术有限公司 | 一种锅炉控制器串行通讯方法、存储装置及移动终端 |
CN112698927A (zh) * | 2019-10-23 | 2021-04-23 | 杭州海康威视数字技术股份有限公司 | 双向通信方法、装置、电子设备及机器可读存储介质 |
CN115052044A (zh) * | 2022-08-12 | 2022-09-13 | 南瑞轨道交通技术有限公司 | 一种基于双网双链路的海量数据传输方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103107931A (zh) * | 2012-12-05 | 2013-05-15 | 清华大学 | 基于iec104规约的非阻塞式通信方法及系统 |
CN103139157A (zh) * | 2011-11-28 | 2013-06-05 | 北京南车时代信息技术有限公司 | 一种基于socket的网络通信方法、装置及系统 |
CN105681321A (zh) * | 2016-02-24 | 2016-06-15 | 公安部第一研究所 | 一种数据处理方法及装置 |
-
2017
- 2017-04-27 CN CN201710284431.9A patent/CN107122237B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103139157A (zh) * | 2011-11-28 | 2013-06-05 | 北京南车时代信息技术有限公司 | 一种基于socket的网络通信方法、装置及系统 |
CN103107931A (zh) * | 2012-12-05 | 2013-05-15 | 清华大学 | 基于iec104规约的非阻塞式通信方法及系统 |
CN105681321A (zh) * | 2016-02-24 | 2016-06-15 | 公安部第一研究所 | 一种数据处理方法及装置 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109120486A (zh) * | 2018-08-28 | 2019-01-01 | 珠海格力电器股份有限公司 | WiFi模块数据传输方法、传输系统、智能家电数据传输系统 |
CN112698927A (zh) * | 2019-10-23 | 2021-04-23 | 杭州海康威视数字技术股份有限公司 | 双向通信方法、装置、电子设备及机器可读存储介质 |
CN112698927B (zh) * | 2019-10-23 | 2024-05-28 | 杭州海康威视数字技术股份有限公司 | 双向通信方法、装置、电子设备及机器可读存储介质 |
CN112579279A (zh) * | 2020-12-25 | 2021-03-30 | 广州威茨热能技术有限公司 | 一种锅炉控制器串行通讯方法、存储装置及移动终端 |
CN112579279B (zh) * | 2020-12-25 | 2024-02-09 | 广州威茨热能技术有限公司 | 一种锅炉控制器串行通讯方法、存储装置及移动终端 |
CN115052044A (zh) * | 2022-08-12 | 2022-09-13 | 南瑞轨道交通技术有限公司 | 一种基于双网双链路的海量数据传输方法 |
CN115052044B (zh) * | 2022-08-12 | 2022-11-18 | 南瑞轨道交通技术有限公司 | 一种基于双网双链路的海量数据传输方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107122237B (zh) | 2020-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106789259B (zh) | 一种LoRa核心网系统及实现方法 | |
CN107122237A (zh) | 数据通信方法及装置 | |
CN104158755B (zh) | 传输报文的方法、装置和系统 | |
CN110113359A (zh) | 一种物联网平台协议适配方法 | |
WO2006110349A3 (en) | System and method for optimizing sessions and network resources in a loadbalancing environment | |
CN109302372A (zh) | 一种通信方法、设备及存储介质 | |
KR20070102091A (ko) | 이동통신 단말기의 채널 관리 장치 및 방법 | |
CN102307230B (zh) | 业务传输方法和装置 | |
CN206461640U (zh) | 一种兼容多接口的网关系统 | |
CN105208585A (zh) | 调度信息的配置、配置参数的处理方法及装置 | |
CN104410982B (zh) | 一种无线异构网络中终端聚合与重构方法 | |
US9906412B2 (en) | Collaboration method and system in distributed resilient network interconnect system | |
CN106375401A (zh) | 一种支持多流汇聚的电力多模异构融合装置及通信方法 | |
CN105306418A (zh) | 多应用程序共享通信连接的方法和系统 | |
CN102624634B (zh) | 一种在客户端控制网络带宽的方法及装置 | |
CN106878060A (zh) | 一种多业务综合接入设备的主备同步系统及方法 | |
CN105357373B (zh) | 基于安卓系统的多网络并用方法和系统 | |
CN110519093A (zh) | 一种基于泛在电力物联网的信息采集系统网络架构 | |
CN111010323A (zh) | 一种智能设备的配网方法及系统 | |
CN103973762A (zh) | 用于智能家居系统主机与智能终端之间的通信方法 | |
CN111953655B (zh) | 一种通信系统中服务器响应请求消息的方法及设备 | |
CN109889513A (zh) | 实现融合设备内部网关与ott端之间进行通信控制的方法 | |
CN104158712A (zh) | 局域网的时分工作方法 | |
CN104539576B (zh) | 基于IPv6网络的通信方法与系统 | |
CN102983988A (zh) | 一种设备代理装置以及网络管理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |