CN104486188B - 一种收发独立线程的设置方法及装置 - Google Patents
一种收发独立线程的设置方法及装置 Download PDFInfo
- Publication number
- CN104486188B CN104486188B CN201410657557.2A CN201410657557A CN104486188B CN 104486188 B CN104486188 B CN 104486188B CN 201410657557 A CN201410657557 A CN 201410657557A CN 104486188 B CN104486188 B CN 104486188B
- Authority
- CN
- China
- Prior art keywords
- request message
- polling request
- receiving
- message
- thread
- 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.)
- Active
Links
Landscapes
- Computer And Data Communications (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明公开了一种收发独立线程的设置方法及装置,该方法包括:设置发送线程,以发送命令报文以及轮询请求报文,其中,轮询请求报文发送完毕后,延迟轮询延迟时间间隔后发送下一条轮询请求报文;设置接收线程,以接收及解析DDC控制器的响应状态报文。实施本发明的有益效果是,发送线程负责命令报文和轮询请求报文的发送,发送轮询请求报文无需等待DDC控制器的响应状态报文,接收线程负责处理DDC控制器的响应状态报文的接收及解析,两条线程同时独立运行,大幅度提高BACnet数据的访问速度。
Description
技术领域
本发明涉及楼宇自动控制网络数据通讯领域,尤其涉及一种收发独立线程的设置方法及装置。
背景技术
BACnet(Building Automation and Control Net-works)是一种专为楼宇自动控制网络制定的数据通信协议,以其先进的技术、完善的体系结构和开放的理念正式成为建筑智能化系统领域中的唯一ISO标准,使智能建筑的自动控制设备和系统能够实现信息的交换和共享,从而达到互连和互操作的目的,为智能建筑实现智能提供了基础。
虽然楼控系统对实时性要求不是很苛刻,但是目前BACnet的访问速度还是存在不完善的地方,例如,控制一台新风机的运转,发送开启命令后,现场新风机已经开始运转,但有时出现过了半分钟才能在上位看到它的状态,造成这种现场的原因是发送命令的报文是立即报文,而读取状态的报文是轮询报文,每条轮询报文从上位机发出轮询请求指令到BACnet设备返回状态信息需要150ms左右,每条报文最多包含七个变量,假定每个DDC(Direct Digital Control,直接数字控制)控制器包含4条报文,共有50个DDC,则完成一次轮询需要150*4*50=30000ms=30s。通过对抓取各个厂家的BACnet实时报文进行分析,现有技术的缺点是:轮询报文均采用发送轮询请求报文,然后一直等待DDC控制器返回响应状态报文,在返回状态报文后再发送下一条轮询请求报文。
发明内容
本发明要解决的技术问题在于,针对上述轮询报文均采用发送轮询请求报文,需等待DDC控制器返回响应状态报文,从而造成访问速度极为低下的问题,提供一种收发独立线程的设置方法及装置。
本发明解决其技术问题所采用的技术方案是:构造一种收发独立线程的设置方法,该方法在BACnet通讯中设置收发独立线程,包括步骤:
设置发送线程,以发送命令报文以及轮询请求报文,其中,所述轮询请求报文发送完毕后,延迟轮询延迟时间间隔后发送下一条轮询请求报文;
设置接收线程,以接收及解析DDC控制器的响应状态报文。
在本发明所述的设置方法中,在所述设置发送线程的步骤中,所述发送线程包括以下子步骤:
S100、开始发送所述命令报文以及轮询请求报文;
S101、统计所要发送的轮询请求报文的总数,依据所述总数设置轮询延迟时间间隔;
S102、检查是否存在命令报文待发送,若存在,则发送所述命令报文,若不存在,则转至步骤S103;
S103、判断所述轮询请求报文是否为最后一条轮询请求报文,若是,转至步骤S104,若否,转至步骤S105;
S104、发送第一条轮询请求报文,转至步骤S106;
S105、发送下一条轮询请求报文;
S106、延迟所述轮询延迟时间间隔;
S107、判断所述发送线程是否结束,若是,则结束所述发送线程,若否,则转至步骤S102。
在本发明所述的设置方法中,在所述设置接收线程的步骤中,所述接收线程包括以下子步骤:
S200、开始读取所述响应状态报文;
S201、检查接收队列中是否存在可抓取的数据,若存在,则转至步骤S202,若不存在,转至步骤S203;
S202、解析所述数据中的所述响应状态报文;
S203、延迟预设的接收时间间隔;
S204、判断所述接收线程是否结束,若是,则结束所述接收线程,若否,则转至步骤S201。
在本发明所述的设置方法中,所述步骤S202中还包括将解析后的数据传递至实时数据库。
另一方面,提供一种收发独立线程的设置装置,用于在BACnet通讯中设置收发独立线程,包括:
发送线程设置模块,用于设置发送线程,以发送命令报文以及轮询请求报文,其中,所述轮询请求报文发送完毕后,延迟轮询延迟时间间隔后发送下一条轮询请求报文;
接收线程设置模块,用于设置接收线程,以接收及解析DDC控制器的响应状态报文。
在本发明所述的设置装置中,所述设置装置还包括:
统计模块,用于统计所要发送的轮询请求报文的总数,依据所述总数设置轮询延迟时间间隔;
第一检查模块,用于检查是否存在命令报文待发送,若存在,则发送所述命令报文;
第一判断模块,用于判断所述轮询请求报文是否为最后一条轮询请求报文;
第一发送模块,用于发送第一条轮询请求报文;
第二发送模块,用于发送下一条轮询请求报文;
第一延迟模块,用于延迟所述轮询延迟时间间隔;
第二判断模块,用于判断所述发送线程是否结束,若是,则结束所述发送线程。
在本发明所述的设置装置中,所述设置装置还包括:
第二检查模块,用于检查接收队列中是否存在可抓取的数据;
解析模块,用于解析所述数据中的所述响应状态报文;
第二延迟模块,用于延迟预设的接收时间间隔;
第三判断模块,用于判断所述接收线程是否结束,若是,则结束所述接收线程。
在本发明所述的设置装置中,所述解析模块还用于将解析后的数据传递至实时数据库。
实施本发明的一种收发独立线程的设置方法及装置,具有以下有益效果:发送线程负责命令报文和轮询请求报文的发送,发送轮询请求报文无需等待DDC控制器的响应状态报文,接收线程负责处理DDC控制器的响应状态报文的接收及解析,两条线程同时独立运行,大幅度提高BACnet数据的访问速度。
附图说明
下面将结合附图及实施例子对本发明作进一步说明,附图中:
图1为本发明提供的一种收发独立线程的设置方法的流程图;
图2为本发明提供的发送线程的执行流程图;
图3为本发明提供的接收线程的执行流程图;
图4为本发明提供的一种收发独立线程的设置装置的框图。
具体实施方式
为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的具体实施方式。
本发明的目的在于提供一种收发独立线程的设置方法及装置,本发明应用于建筑智能化领域,采用BACnet协议置线程优先级,该BACnet协议作为一种新兴的楼宇自动控制网络标准,解决了BACnet协议在现有技术中的诸多不足,比如现有技术中,BACnet的访问速度值得人担忧。本发明通过配置发送线程和接收线程,其中,发送线程负责命令报文和轮询请求报文的发送,发送轮询请求报文无需等待DDC控制器的响应状态报文,接收线程负责处理DDC控制器的响应状态报文的接收及解析,两条线程同时独立运行,大幅度提高BACnet数据的访问速度。
参见图1,图1为本发明提供的一种收发独立线程的设置方法的流程图,该设置方法在BACnet通讯中设置收发独立线程,其包括步骤:
设置发送线程,以发送命令报文以及轮询请求报文,其中,所述轮询请求报文发送完毕后,延迟轮询延迟时间间隔后发送下一条轮询请求报文;即发送线程负责命令报文和轮询请求报文的发送,发送轮询请求报文无需等待DDC控制器的响应状态报文,发完后延迟一定响应时间后自动发送下一条轮询请求报文。
设置接收线程,以接收及解析DDC控制器的响应状态报文;即接收线程负责处理DDC控制器的响应状态报文的接收及解析。
参见图2,图2为本发明提供的发送线程的执行流程图,该发送流程基于所述设置发送线程的步骤,所述发送线程包括以下子步骤:
S100、开始发送所述命令报文以及轮询请求报文;即发送BACnet命令报文和轮询请求报文开始。
S101、统计所要发送的轮询请求报文的总数,依据所述总数设置轮询延迟时间间隔;即根据轮询报文的总数,确定轮询延时间隔tdelay。
S102、检查是否存在命令报文待发送,若存在,则发送所述命令报文,若不存在,则转至步骤S103;即优先发送命令报文。
S103、判断所述轮询请求报文是否为最后一条轮询请求报文,若是,转至步骤S104,若否,转至步骤S105;
S104、发送第一条轮询请求报文,转至步骤S106;
S105、发送下一条轮询请求报文;
S106、延迟所述轮询延迟时间间隔;延时tdelay,目的是释放时间片,同时防止下位DDC收到过多的轮询请求报文而来不及处理;
S107、判断所述发送线程是否结束,若是,则结束所述发送线程,若否,则转至步骤S102,继续下一轮循环。
参见图3,图3为本发明提供的接收线程的执行流程图,该接收流程基于所述设置接收线程的步骤,所述接收线程包括以下子步骤:
S200、开始读取所述响应状态报文;即读BACnet响应状态报文操作开始,启动接收线程BACnetRecvThread;
S201、检查接收队列中是否存在可抓取的数据,若存在,则转至步骤S202,若不存在,转至步骤S203;即从接收队列中抓取数据,检查是否存在数据。
S202、解析所述数据中的所述响应状态报文;将解析后的数据传递至实时数据库以进行界面刷新等处理。
S203、延迟预设的接收时间间隔;例如,延时5毫秒,目的是释放CPU时间片。
S204、判断所述接收线程是否结束,若是,则结束所述接收线程,若否,则转至步骤S201。
参见图4,图4为本发明提供的一种收发独立线程的设置装置100的框图,设置装置100用于在BACnet通讯中设置收发独立线程,包括:
发送线程设置模块,用于设置发送线程,以发送命令报文以及轮询请求报文,其中,所述轮询请求报文发送完毕后,延迟轮询延迟时间间隔后发送下一条轮询请求报文;
接收线程设置模块,用于设置接收线程,以接收及解析DDC控制器的响应状态报文。
统计模块,用于统计所要发送的轮询请求报文的总数,依据所述总数设置轮询延迟时间间隔;
第一检查模块,用于检查是否存在命令报文待发送,若存在,则发送所述命令报文;
第一判断模块,用于判断所述轮询请求报文是否为最后一条轮询请求报文;
第一发送模块,用于发送第一条轮询请求报文;
第二发送模块,用于发送下一条轮询请求报文;
第一延迟模块,用于延迟所述轮询延迟时间间隔;
第二判断模块,用于判断所述发送线程是否结束,若是,则结束所述发送线程。
第二检查模块,用于检查接收队列中是否存在可抓取的数据;
解析模块,用于解析所述数据中的所述响应状态报文;将解析后的数据传递至实时数据库。
第二延迟模块,用于延迟预设的接收时间间隔;
第三判断模块,用于判断所述接收线程是否结束,若是,则结束所述接收线程。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。
Claims (2)
1.一种收发独立线程的设置方法,该方法在BACnet通讯中设置收发独立线程,其特征在于,包括步骤:
设置发送线程,以发送命令报文以及轮询请求报文,其中,所述轮询请求报文发送完毕后,延迟轮询延迟时间间隔后发送下一条轮询请求报文;所述发送线程包括以下子步骤:
S100、开始发送所述命令报文以及轮询请求报文;
S101、统计所要发送的轮询请求报文的总数,依据所述总数设置轮询延迟时间间隔;
S102、检查是否存在命令报文待发送,若存在,则发送所述命令报文,若不存在,则转至步骤S103;
S103、判断所述轮询请求报文是否为最后一条轮询请求报文,若是,转至步骤S104,若否,转至步骤S105;
S104、发送第一条轮询请求报文,转至步骤S106;
S105、发送下一条轮询请求报文;
S106、延迟所述轮询延迟时间间隔;
S107、判断所述发送线程是否结束,若是,则结束所述发送线程,若否,则转至步骤S102;
设置接收线程,以接收及解析DDC控制器的响应状态报文;所述接收线程包括以下子步骤:
S200、开始读取所述响应状态报文;
S201、检查接收队列中是否存在可抓取的数据,若存在,则转至步骤S202,若不存在,转至步骤S203;
S202、解析所述数据中的所述响应状态报文;所述步骤S202中还包括将解析后的数据传递至实时数据库;
S203、延迟预设的接收时间间隔;
S204、判断所述接收线程是否结束,若是,则结束所述接收线程,若否,则转至步骤S201。
2.一种收发独立线程的设置装置,用于在BACnet通讯中设置收发独立线程,其特征在于,包括:
发送线程设置模块,用于设置发送线程,以发送命令报文以及轮询请求报文,其中,所述轮询请求报文发送完毕后,延迟轮询延迟时间间隔后发送下一条轮询请求报文;
接收线程设置模块,用于设置接收线程,以接收及解析DDC控制器的响应状态报文;
所述设置装置还包括:
统计模块,用于统计所要发送的轮询请求报文的总数,依据所述总数设置轮询延迟时间间隔;
第一检查模块,用于检查是否存在命令报文待发送,若存在,则发送所述命令报文;
第一判断模块,用于判断所述轮询请求报文是否为最后一条轮询请求报文;
第一发送模块,用于发送第一条轮询请求报文;
第二发送模块,用于发送下一条轮询请求报文;
第一延迟模块,用于延迟所述轮询延迟时间间隔;
第二判断模块,用于判断所述发送线程是否结束,若是,则结束所述发送线程;
第二检查模块,用于检查接收队列中是否存在可抓取的数据;
解析模块,用于解析所述数据中的所述响应状态报文;所述解析模块还用于将解析后的数据传递至实时数据库;
第二延迟模块,用于延迟预设的接收时间间隔;
第三判断模块,用于判断所述接收线程是否结束,若是,则结束所述接收线程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410657557.2A CN104486188B (zh) | 2014-11-18 | 2014-11-18 | 一种收发独立线程的设置方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410657557.2A CN104486188B (zh) | 2014-11-18 | 2014-11-18 | 一种收发独立线程的设置方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104486188A CN104486188A (zh) | 2015-04-01 |
CN104486188B true CN104486188B (zh) | 2018-04-27 |
Family
ID=52760694
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410657557.2A Active CN104486188B (zh) | 2014-11-18 | 2014-11-18 | 一种收发独立线程的设置方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104486188B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105634984A (zh) * | 2015-12-29 | 2016-06-01 | 重庆安碧捷科技股份有限公司 | 基于tcp协议多线程的多对多医疗数据传输方法 |
CN106656704A (zh) * | 2016-11-16 | 2017-05-10 | 北京和利时系统工程有限公司 | 一种Modbus协议遥控返信读取的方法和装置 |
CN107707672B (zh) * | 2017-10-31 | 2021-01-08 | 苏州浪潮智能科技有限公司 | 一种负载均衡的代码重构的方法、装置及设备 |
CN114280429A (zh) * | 2021-11-12 | 2022-04-05 | 国网河北能源技术服务有限公司 | Gis局部放电检测装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1859183A (zh) * | 2005-12-30 | 2006-11-08 | 华为技术有限公司 | 一种实现设备状态轮询的方法及装置 |
CN101997704A (zh) * | 2009-08-20 | 2011-03-30 | 中兴通讯股份有限公司 | 一种实现网元链路状态轮询的方法、装置及网管服务器 |
CN102843290A (zh) * | 2012-08-13 | 2012-12-26 | 上海申瑞继保电气有限公司 | 数据采集监控系统的问答式规约报文处理方法 |
-
2014
- 2014-11-18 CN CN201410657557.2A patent/CN104486188B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1859183A (zh) * | 2005-12-30 | 2006-11-08 | 华为技术有限公司 | 一种实现设备状态轮询的方法及装置 |
CN101997704A (zh) * | 2009-08-20 | 2011-03-30 | 中兴通讯股份有限公司 | 一种实现网元链路状态轮询的方法、装置及网管服务器 |
CN102843290A (zh) * | 2012-08-13 | 2012-12-26 | 上海申瑞继保电气有限公司 | 数据采集监控系统的问答式规约报文处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104486188A (zh) | 2015-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104486188B (zh) | 一种收发独立线程的设置方法及装置 | |
CN105024942B (zh) | 一种动态流量监控方法 | |
CN103281261B (zh) | 一种以太网通信方法和系统 | |
CN107171892B (zh) | 一种基于qt的跨平台数据通信方法及系统 | |
CN103095703B (zh) | 一种实现网络与串口数据交互的方法、设备及系统 | |
CN103888441A (zh) | 一种应用程序与协议栈之间的信息传输方法及处理装置 | |
CN106899498A (zh) | 基于SoC的嵌入式工业智能网关及其实时数据采集方法 | |
CN110650203B (zh) | 数据传输方法、装置和系统、计算机存储介质及电子设备 | |
CN104009976A (zh) | 一种用于多主站系统之间的实时通信方法及其设备 | |
CN110166378B (zh) | 一种用于配网终端调试维护的通信系统及方法 | |
CN102195946A (zh) | 基于arm技术的智能通信控制器 | |
CN103763395B (zh) | 连接物联网管理平台与终端设备的中间件及其工作方法 | |
CN105357664A (zh) | 一种无线控制系统及其数据通信方法 | |
CN108093073A (zh) | 无线通讯装置、设备及系统 | |
CN104486189B (zh) | 一种配置线程优先级的方法及装置 | |
CN105491419B (zh) | 一种组合电视以及数据共享方法 | |
CN105025273A (zh) | 楼宇可视对讲系统的连接方法、密码设置方法及系统 | |
CN204810305U (zh) | 一种具有负载均衡功能的动环监控系统 | |
CN110417875A (zh) | 一种云服务器之间的对接方法、系统、设备及存储介质 | |
CN202197299U (zh) | 一种家庭物联网网关 | |
CN103945196A (zh) | 一种无线监控系统 | |
CN102413133A (zh) | 一种时间可控的客户端服务器传输方法 | |
CN205610950U (zh) | 一种基于Thread的无线网关 | |
CN103856570B (zh) | 多屏互动通话控制方法、主设备及控制系统 | |
CN206602538U (zh) | 基于SoC的嵌入式工业智能网关 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |