CN116781744B - 一种基于半双工总线的按键事件扫描方法、网关和终端 - Google Patents
一种基于半双工总线的按键事件扫描方法、网关和终端 Download PDFInfo
- Publication number
- CN116781744B CN116781744B CN202310846099.6A CN202310846099A CN116781744B CN 116781744 B CN116781744 B CN 116781744B CN 202310846099 A CN202310846099 A CN 202310846099A CN 116781744 B CN116781744 B CN 116781744B
- Authority
- CN
- China
- Prior art keywords
- terminal
- response information
- gateway
- terminals
- key event
- 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
- 238000000034 method Methods 0.000 title claims abstract description 68
- 230000004044 response Effects 0.000 claims abstract description 186
- 238000004891 communication Methods 0.000 claims description 19
- 230000009471 action Effects 0.000 claims description 5
- 230000008859 change Effects 0.000 claims description 5
- 230000008569 process Effects 0.000 claims description 5
- 238000011161 development Methods 0.000 abstract description 6
- 230000005540 biological transmission Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000012795 verification Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/12—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/66—Arrangements for connecting between networks having differing types of switching systems, e.g. gateways
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L5/00—Arrangements affording multiple use of the transmission path
- H04L5/14—Two-way operation using the same type of signal, i.e. duplex
- H04L5/16—Half-duplex systems; Simplex/duplex switching; Transmission of break signals non-automatically inverting the direction of transmission
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明提供了一种基于半双工总线的按键事件扫描方法、网关和终端,涉及物联网技术领域。在该按键事件扫描方法中,采用了报数的思想,由网关向多个终端发送报数指令,各终端响应于报数指令依次向网关发送包括指示终端是否发生了按键事件的类型值的第一响应信息,网关根据第一响应信息确定并记录发生了按键事件的终端为待查询终端后,再依次向各待查询终端查询按键事件数据。与传统的网关直接扫描各终端的按键信息或直接将按键集成到设备上相比,本发明的方法可以简化按键扫描的开发,提高按键扫描效率和可靠性。
Description
技术领域
本发明涉及物联网技术领域,特别是一种基于半双工总线的按键事件扫描方法、网关和终端。
背景技术
随着物联网、智能家居等不断发展,越来越多的设备需要互联,其中按键终端与控制设备互联的应用必不可少。
目前比较成熟的按键终端与控制设备互联的方案是将按键终端和按键网关用458总线进行连接,然后按键网关逐个扫描按键终端,获取当前按键的控制信息。但是,逐个扫描按键终端效率低下,当按键终端个数较多时,延时比较严重。
此外,传统的方法是直接将按键集成到设备上面,直接进行控制,而基于通信的按键往往要么协议复杂、开发难度大,要么效率低下。
发明内容
鉴于上述问题,本发明提供了一种克服上述问题或者至少部分地解决上述问题的基于半双工总线的按键事件扫描方法、网关和终端。
本发明的一个目的是简化按键扫描的开发,提高按键扫描效率和可靠性。
本发明一个进一步的目的是提高报数效率。
本发明另一个进一步的目的是节省终端的报数应答时间。
本发明又一个进一步的目的是提高按键事件查询的可靠性。
特别地,根据本发明的一方面,提供了一种基于半双工总线的按键事件扫描方法,应用于网关,包括:
向多个终端发送报数指令,所述多个终端与所述网关通过所述半双工总线通信连接;
接收所述多个终端依次发送的关于所述报数指令的第一响应信息,各所述终端的所述第一响应信息包括指示该终端是否发生了按键事件的类型值;
根据所述第一响应信息中的类型值,将发生了按键事件的终端记录为待查询终端;
依次向各所述待查询终端发送查询指令;
接收各所述待查询终端关于所述查询指令的第二响应信息,各所述待查询终端的所述第二响应信息包括该待查询终端的按键事件数据;
从各所述第二响应信息中获取各所述待查询终端的按键事件数据。
可选地,各所述终端的地址为指定数值范围内的任意值且各不相同,各所述终端按照地址从小到大的顺序依次发送所述第一响应信息;
在接收所述多个终端依次发送的关于所述报数指令的第一响应信息的过程中,所述方法还包括:
在发送所述报数指令后和在每一次接收到一个所述终端的所述第一响应信息后,判断是否已经收到所有所述终端的所述第一响应信息或是否超过预定时间未接收到下一个所述终端的所述第一响应信息;
若是,则结束接收所述第一响应信息的操作。
可选地,每顺序相邻的两个所述终端的地址的数值差为1;
在发送所述报数指令和在每一次接收到一个所述终端的所述第一响应信息后,判断是否超过预定时间未接收到下一个所述终端的所述第一响应信息的步骤包括:
在发送所述报数指令后和在每一次接收到一个所述终端的所述第一响应信息后开始计时,并计算相应的所述预定时间;
若计时时间超过计算出的所述预定时间时仍未接收到下一个所述终端的所述第一响应信息,则判断超过预定时间未接收到下一个所述终端的所述第一响应信息;
其中,在发送所述报数指令后的相应的所述预定时间按照下式(1)进行计算:
Tpre = T2 + T1 * max_addr *2 (1)
在每一次接收到一个所述终端的所述第一响应信息后的相应的所述预定时间按照下式(2)进行计算:
Tpre = T2 + T1 * (max_addr - last_addr)*2 (2)
式(1)和式(2)中,Tpre表示所述预定时间,max_addr为最大的终端地址,last_addr为当前接收到的第一响应信息对应的终端的地址,T1为所述终端发送响应信息的字节耗时,T2为所述半双工总线由一个所述终端占用切换到另一个所述终端占用所需的总线切换时间,T2<T1。
可选地,所述查询指令包括第一校验和,所述第二响应信息包括第二校验和;
在接收到各所述第二响应信息后,所述方法还包括:
根据所述第二校验和对接收的各所述第二响应信息进行校验,若未通过校验,则丢弃所述第二响应信息。
根据本发明的另一方面,还提供了一种基于半双工总线的按键事件扫描方法,应用于各终端,包括:
接收网关发送的报数指令,各所述终端与所述网关通过所述半双工总线通信连接;
响应于所述报数指令,依照预定次序向所述网关发送第一响应信息,所述第一响应信息包括指示该终端是否发生了按键事件的类型值,以便所述网关根据所述响应信息中的类型值,将发生了按键事件的终端记录为待查询终端;
在接收到所述网关依次向各所述待查询终端发送的查询指令的情况下,响应于所述查询指令,向所述网关发送第二响应信息,所述第二响应信息包括该终端的按键事件数据。
可选地,各所述终端的地址为指定数值范围内的任意值且各不相同;
响应于所述报数指令,依照预定次序向所述网关发送第一响应信息的步骤包括:
响应于所述报数指令,按照自身地址在所有终端的地址从小到大的排列中的顺序位置发送所述第一响应信息。
可选地,每顺序相邻的两个所述终端的地址的数值差为1;
响应于所述报数指令,按照自身地址在所有终端的地址从小到大的排列中的顺序位置发送所述第一响应信息的步骤包括:
在接收到所述报数指令后进行计时,并按照下式(3)计算延时时间作为目标延时时间:
Tdel = T2 + T1 * (addr2 - 1)*2 (3);
在计时时间到达所述目标延时时间时,发送所述第一响应信息;
其中,Tdel表示延时时间,addr2为所述终端的自身地址,T1为所述终端发送响应信息的字节耗时,T2为所述半双工总线由一个所述终端占用切换到另一个所述终端占用所需的总线切换时间,T2<T1。
可选地,响应于所述报数指令,按照自身地址在所有终端的地址从小到大的排列中的顺序位置发送所述第一响应信息的步骤还包括:
在每一次接收到地址比自身地址小的其他终端发送的所述第一响应信息时,重新计时,并按照下式(4)更新所述延时时间,并以更新的所述延时时间作为所述目标延时时间:
Tdel=T2+T1*(addr2-addr1-1)*2(4)
其中,所述addr1为当前接收到的所述第一响应信息对应的其他终端的地址。
根据本发明的再一方面,还提供了一种用于获取终端的按键状态信息的网关,所述网关配置为与多个终端通过半双工总线通信连接,其中,所述网关包括:
第一处理器;以及
存储有第一机器可执行程序的第一存储器;
当所述第一机器可执行程序被所述第一处理器运行时,导致所述网关执行前述的应用于网关的基于半双工总线的按键事件扫描方法。
根据本发明的又一方面,还提供了一种终端,用于收集自身的按键状态信息并将所述按键状态信息报告给网关,所述终端配置为与所述网关通过半双工总线通信连接,其中,所述终端包括:
第二处理器;以及
存储有第二机器可执行程序的第二存储器;
当所述第二机器可执行程序被所述第二处理器运行时,导致所述终端执行前述的应用于各终端的基于半双工总线的按键事件扫描方法。
本发明提出的基于半双工总线的按键事件扫描方法中,采用了报数的思想,由网关向多个终端发送报数指令,各终端响应于报数指令依次向网关发送包括指示终端是否发生了按键事件的类型值的第一响应信息,网关根据第一响应信息确定并记录发生了按键事件的终端为待查询终端后,再依次向各待查询终端查询按键事件数据。与传统的网关直接扫描各终端的按键信息或直接将按键集成到设备上相比,本发明的方法可以简化按键扫描的开发,提高按键扫描效率和可靠性。
进一步地,在终端响应于报数指令依次向网关发送第一响应信息时,各终端根据式(3):Tdel=T2+T1*(addr2-1)*2计算自身的延时时间,在延时时间到达后自动发送第一响应信息。这样可以保证每两个顺序相邻的终端的发送时间之间有1个字节的时间差,进而保证了各终端通过半双工总线发送的数据不会发生碰撞,从而保证了数据的安全和通讯的可靠。
进一步地,在终端响应于报数指令依次向网关发送第一响应信息时,每一终端在每一次接收到地址比自身地址小的其他终端发送的第一响应信息时,还会重新计时,并根据式(4):Tdel=T2+T1*(addr2-addr1-1)*2更新延时时间,如此可以使终端对报数指令的应答更加紧凑,从而节省终端的报数应答时间,即节省通讯的时间。
进一步地,在报数指令和第一响应信息中均不包括校验和,即,在报数通讯阶段不需要加校验和。由于报数错误只会影响多查或少查询几次,不会影响系统的可靠性,而不加校验和可以少发送1个字节的数据,节省数据传输时间,从而提高了报数效率。
进一步地,在查询指令和第二响应信息中分别包括第一校验和和第二校验和,终端在接收到查询指令时需根据第一校验和进行校验,网关在接收到第二响应信息时也需根据第二校验和进行校验。按键事件查询阶段的校验和校验增加了整个系统的可靠性,而由于一般按键事件的频率不会太高,按键事件查询阶段增加校验和对系统的效率影响不大,因此,能够在几乎不或仅轻微影响系统效率的情况下提高按键事件查询的可靠性。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一实施例的应用于网关的一种基于半双工总线的按键事件扫描方法的流程示意图。
图2示出了根据本发明一实施例的应用于终端的一种基于半双工总线的按键事件扫描方法的流程示意图;
图3示出了根据本发明一实施例的结合了网关和终端的一种基于半双工总线的按键事件扫描方法的流程示意图;
图4示出了根据本发明一实施例的网关的示意性结构框图;
图5示出了根据本发明一实施例的终端的示意性结构框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
为解决或至少部分解决上述技术问题,本发明实施例提出一种基于半双工总线的按键事件扫描方法。该方法可应用于物联网、智能家居等场景中,涉及网关、终端和半双工总线等设备部件。下面将对涉及的这些设备部件进行介绍。
网关也可称为按键网关,用于扫描按键终端,获取按键的状态信息(如哪个按键被按下),然后将按键信息传递给其他需要用到此信息的设备,用于逻辑控制。终端也可称为按键终端,其通过半双工总线连接网关,主要收集检测按键信息(如哪个按键被按下或抬起等等),然后通过半双工总线将按键信息报告给网关。半双工总线是一种通讯总线,是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束,比较常用的例如485总线。半双工总线的特点主要包括以下两点:(1)总线上的一个设备发送数据,其他所有设备都可以同时收到;(2)总线上的设备不可以同时发送数据,否则会撞帧,造成数据错误。在一条半双工总线上只能有一个网关,但可以有多个终端,一个终端上则可以有多个按键。每个终端都有一个地址,在同一条总线内,每个终端的地址不可以重复。
图1示出了根据本发明一实施例的应用于网关的一种基于半双工总线的按键事件扫描方法的流程示意图。参见图1所示,该按键事件扫描方法至少可以包括以下步骤S102至步骤S112。
步骤S102,向多个终端发送报数指令,多个终端与网关通过半双工总线通信连接。
步骤S104,接收多个终端依次发送的关于报数指令的第一响应信息,各终端的第一响应信息包括指示该终端是否发生了按键事件的类型值。
步骤S106,根据第一响应信息中的类型值,将发生了按键事件的终端记录为待查询终端。
步骤S108,依次向各待查询终端发送查询指令。
步骤S110,接收各待查询终端关于查询指令的第二响应信息,各待查询终端的第二响应信息包括该待查询终端的按键事件数据。
步骤S112,从各第二响应信息中获取各待查询终端的按键事件数据。
本发明实施例提出的基于半双工总线的按键事件扫描方法中,采用了报数的思想,由网关向多个终端发送报数指令,各终端响应于报数指令依次向网关发送包括指示终端是否发生了按键事件的类型值的第一响应信息,网关根据第一响应信息确定并记录发生了按键事件的终端为待查询终端后,再依次向各待查询终端查询按键事件数据。与传统的网关直接扫描各终端的按键信息或直接将按键集成到设备上相比,本发明的方法可以简化按键扫描的开发,提高按键扫描效率和可靠性。
本文中的类型(type)值例如可以设置为0或1,0表示无事件,1表示有事件。当然,类型值也可以设置为其他数值,本发明对此不作限制。
在一些实施例中,各终端的地址为指定数值范围内的任意值且各不相同。例如,在同一条半双工总线内,设备的地址范围是0至63,其中,0是网关的地址,1至63是终端的地址。
在一些实施例中,按键事件可以包括按键动作事件和/或指示灯状态变化事件。具体地,按键动作事件包括按键按下和按键抬起。指示灯状态变化事件包括指示灯点亮状态和指示灯熄灭状态。
为实现本发明的按键事件扫描方法,在网关和终端的通讯中,可采用如下表1所示的数据帧主格式。
表1数据帧主格式说明
表1中,B表示Byte(字节)。
需要说明的是,表1示出的主格式里面的所有字段并非都是必须的。不同的数据帧,所需的字段是不同的。比如,有的数据帧只有cmd字段,有的数据帧则只有数据字段。如果某数据帧中缺少某个字段,则后面的字段的字节位置会相应发生变化。例如,有的数据帧只有数据data字段,没有前面的cmd和len字段,则data的字节位置就是从0开始。
进一步地,命令字cmd格式可以如下表2所示,其中在表2中,从上到下依次为高位到低位。
表2命令字cmd格式
表2中,b表示bit(位)。
数据data格式可以如下表3所示,其中在表3中,从上到下依次为高位到低位。
表3数据data格式
上文步骤S102中,网关发送的报数指令的格式例如可以如下表4所示。
表4报数指令格式
标识符 | 数据或说明 |
cmdEnable | 1 |
type | 0 |
addr | 0 |
相应地,步骤S104中终端响应于报数指令的第一响应信息的格式例如可以如下表5所示。
表5第一响应信息格式
需要说明的是,每个终端在收到网关的报数指令后,只能回复(响应)一次。
在一些实施例中,各终端按照地址从小到大的顺序依次发送响应于报数指令的第一响应信息。
为了保证收到所有终端的响应,且避免因长时间未收到响应而使程序无法向后进行,网关在接收多个终端依次发送的关于报数指令的第一响应信息的过程中,还执行以下操作:
在发送报数指令后和在每一次接收到一个终端的第一响应信息后,判断是否已经收到所有终端的第一响应信息或是否超过预定时间未接收到下一个终端的第一响应信息;若是,则结束接收第一响应信息的操作。
在一些进一步的实施例中,每顺序相邻的两个终端的地址的数值差为1。例如,所有终端的地址在1至63范围内,且从1开始,按照1的间隔,从小到大顺序排列。
在发送报数指令和在每一次接收到一个终端的第一响应信息后,网关判断是否超过预定时间未接收到下一个终端的第一响应信息的步骤包括:
在发送报数指令后和在每一次接收到一个终端的第一响应信息后开始计时,并计算相应的预定时间;
若计时时间超过计算出的预定时间时仍未接收到下一个终端的第一响应信息,则判断超过预定时间未接收到下一个终端的第一响应信息。
具体地,在发送报数指令后的相应的预定时间按照下式(1)进行计算:
Tpre = T2 + T1 * max_addr *2 (1)
在每一次接收到一个终端的第一响应信息后的相应的预定时间按照下式(2)进行计算:
Tpre = T2 + T1 * (max_addr - last_addr)*2 (2)
上式(1)和式(2)中,Tpre表示预定时间,max_addr为最大的终端地址,last_addr为当前接收到的第一响应信息(也可以认为是当前时刻前最后收到的第一响应信息)对应的终端的地址。T1为终端发送响应信息的字节耗时。一般来说,T1为发送一个字节所消耗的时间(包括起始位、停止位和校验位所占用的时间),当然也可以根据实际应用需求进行T1设置,但必须保证T1不能小于一个字节所消耗的时间。T2为总线切换时间,表示半双工总线由一个终端占用切换到另一个终端占用所需的安全时间。T2<T1。
需要说明的是,由于半双工总线中未必有63个终端,所以max_addr不一定等于63。
在一些实施例中,报数指令和第一响应信息均不包括校验和。由于报数发生一些错误,只会影响多查或少查询几次,不会影响系统的可靠性,所以,在报数通讯阶段所有报数指令和第一响应信息不加校验和,可以少发送1个字节的数据,从而节省数据传输时间,进而提高了报数效率。例如,对于如表4和表5所示格式的报数指令和第一响应信息,不加校验和可以少发50%的数据,节省接近50%的数据传输时间。
上文步骤S106中,具体地,可以通过记录第一响应信息中包括的有按键事件的终端的地址,将这些地址对应的终端作为待查询终端。
进一步地,可以将这些有按键事件的终端的地址放到一个数组里面。然后在步骤S108中,从该数组中从前往后依次取出地址,每次取出1条地址,给取出的地址对应的终端发送查询指令。之后,在步骤S110中接收到该终端响应于查询指令的第二响应信息后,则可认为该条地址为已消耗的地址,删除与该条地址相关的查询任务。
在一些实施例中,查询指令可以包括第一校验和,第二响应信息可以包括第二校验和。
相应地,在接收到各第二响应信息后,网关还可以进行以下操作:
根据第二校验和对接收的各第二响应信息进行校验,若未通过校验,则丢弃第二响应信息。
网关发送的查询指令的格式例如可以如下表6所示。
表6查询指令格式
相应地,终端响应于查询指令的第二响应信息的格式例如可以如下表7所示。
表7第二响应信息格式
本实施例中,在查询指令和第二响应信息中分别包括第一校验和和第二校验和,网关在接收到第二响应信息时需根据第二校验和进行校验。因为查询出的按键事件会被网关记录,进而触发按键动作,要求可靠性较高,需要增加校验和以增加系统的可靠性,而一般按键事件的频率不会太高(因为用户一般按不了那么快),所以按键事件查询阶段增加校验和对系统的效率影响不大,因此,能够在几乎不或仅轻微影响系统效率的情况下提高按键事件查询的可靠性。
图2示出了根据本发明一实施例的应用于终端的一种基于半双工总线的按键事件扫描方法的流程示意图。参见图2所示,该按键事件扫描方法至少可以包括以下步骤S202至步骤S206。
步骤S202,接收网关发送的报数指令,各终端与网关通过半双工总线通信连接。
步骤S204,响应于报数指令,依照预定次序向网关发送第一响应信息,第一响应信息包括指示该终端是否发生了按键事件的类型值,以便网关根据响应信息中的类型值,将发生了按键事件的终端记录为待查询终端。
步骤S206,在接收到网关依次向各待查询终端发送的查询指令的情况下,响应于查询指令,向网关发送第二响应信息,第二响应信息包括该终端的按键事件数据。
本按键事件扫描方法中终端与网关的连接方式、通讯方式以及各自采用的数据帧格式均与前文相同,不再重复。
在一些实施例中,各终端的地址为指定数值范围内的任意值且各不相同。
相应地,步骤S204具体包括:
响应于报数指令,按照自身地址在所有终端的地址从小到大的排列中的顺序位置发送第一响应信息。
例如,对于地址在1至63范围内的终端,本终端的地址为3,则本终端在第3位发送第一响应信息,即,在地址为1和2的终端发送第一响应信息后,本终端再发送第一响应信息。
在一些进一步的实施例中,每顺序相邻的两个终端的地址的数值差为1。
步骤S204进一步具体包括:
在接收到报数指令后进行计时,并按照下式(3)计算延时时间作为目标延时时间:
Tdel = T2 + T1 * (addr2 - 1)*2 (3);
在计时时间到达目标延时时间时,发送第一响应信息;
其中,Tdel表示延时时间,addr2为终端的自身地址,T1为终端发送响应信息的字节耗时,T2为半双工总线由一个终端占用切换到另一个终端占用所需的总线切换时间,T2<T1。T1和T2的定义与前文相同。
本实施例中,在终端响应于报数指令依次向网关发送第一响应信息时,各终端根据式(3):Tdel=T2+T1*(addr2-1)*2计算自身的延时时间,在延时时间到达后自动发送第一响应信息。这样可以保证每两个顺序相邻的终端的发送时间之间有1个字节的时间差,进而保证了各终端通过半双工总线发送的数据不会发生碰撞,从而保证了数据的安全和通讯的可靠。
再进一步地,步骤S204还可以进一步具体包括:
在每一次接收到地址比自身地址小的其他终端发送的第一响应信息时,重新计时,并按照下式(4)更新延时时间,并以更新的所述延时时间作为目标延时时间:
Tdel = T2 + T1 * (addr2 - addr1 - 1)*2 (4)
其中,addr1为当前接收到的第一响应信息对应的其他终端的地址。
在重新计时的时间到达作为目标延时时间的更新的延时时间时,发送第一响应信息。
下面举例说明前文涉及的各终端的延时时间的计算。假设一条半双工总线上有3个终端ZD1、ZD2和ZD3,它们的地址分别为1、2和3。在接收到网关的报数指令时,按照上式(3)计算的各终端的延时时间分别为:ZD1的延时时间DT1=T2,ZD2的延时时间DT2=T2+2*T1,ZD3的延时时间DT3=T2+4*T1。
由于在ZD2应答前其必然会收到ZD1的应答(即,第一响应信息),按照上式(4)计算出ZD2自收到ZD1应答起更新的延时时间DTp2=T2+T1*(2-1-1)*2=T2。同理,在ZD3应答前其必然会收到ZD2的应答,按照上式(4)计算出ZD3自收到ZD2应答起更新的延时时间DTp3=T2+T1*(3-2-1)*2=T2。
T1是ZD1发送应答的一个字节的时间,由此,能够计算得出ZD2的总延时时间为DTz2=DT1+T1+DTp2=2*T2+T1,ZD3的总延时时间为DTz3=DTz2+T1+DTp3=3*T2+2*T1。由于T2<T1,因此DTz2<DT2,DTz3<DT3。可见,采用式(4)更新延时时间后,终端的延时时间缩短了。
本实施例中,在终端响应于报数指令依次向网关发送第一响应信息时,每一终端在每一次接收到地址比自身地址小的其他终端发送的第一响应信息时,还会重新计时,并根据式(4):Tdel=T2+T1*(addr2-addr1-1)*2更新延时时间,如此可以使终端对报数指令的应答更加紧凑,从而节省终端的报数应答时间,即节省通讯的时间。
在一些实施例中,查询指令可以包括第一校验和,第二响应信息可以包括第二校验和。
相应地,在接收到来自网关的查询指令后,终端还可以进行以下操作:
根据第一校验和对接收的查询指令进行校验,若未通过校验,则丢弃且不响应查询指令。
本实施例中,在查询指令和第二响应信息中分别包括第一校验和和第二校验和,终端在接收到查询指令时需根据第一校验和进行校验。按键事件查询阶段的校验和校验增加了整个系统的可靠性,而由于一般按键事件的频率不会太高,按键事件查询阶段增加校验和对系统的效率影响不大,因此,能够在几乎不或仅轻微影响系统效率的情况下提高按键事件查询的可靠性。
以上介绍了本发明的基于半双工总线的按键事件扫描方法的各个环节的多种实施方式,下面将通过具体实施例来详细介绍本发明的基于半双工总线的按键事件扫描方法的实现过程。
图3示出了根据本发明一具体实施例的结合了网关和终端的一种基于半双工总线的按键事件扫描方法的流程示意图。本实施例中,网关和多个终端通过一条半双工总线通信连接。参见图3所示,该按键事件扫描方法至少可以包括以下步骤S302至步骤S318。
步骤S302,网关向多个终端发送报数指令。
步骤S304,终端接收到报数指令后,响应于报数指令根据地址顺序依次向网关发送第一响应信息。
具体地,各终端根据前述的方法计算各自的延时时间,并基于该延时时间进行响应。
步骤S306,网关等待终端响应。
步骤S308,网关在接收到一终端的第一响应信息后,根据第一响应信息中的类型值,将有按键事件的终端的地址记录在一个数组中。
步骤S310,网关判断是否所有终端都已报数,或者超过预定时间未接收到下一个终端的报数(即第一响应信息)。若是,则执行步骤S312,如否,则返回至步骤S306。
步骤S312,网关检查该数组中是否有未消耗的地址,如果是,执行步骤S314,否则返回至步骤S302。
步骤S314,网关从该数组中取出一条地址,向地址对应的终端发送查询指令。
步骤S316,终端收到查询指令后,响应于查询指令向网关发送第二响应信息。
步骤S318,网关接收到该终端的第二响应信息后,认为该条地址为已消耗的地址,删除与该条地址相关的查询任务。之后,返回至步骤S312。
本实施例中涉及的报数指令、第一响应信息、查询指令和第二响应信息的格式如前文所述,不再重复。
本发明实施例采用了报数的思想,可以简化按键扫描的开发,提高按键扫描效率和可靠性。
基于同一技术构思,本发明还提供了一种用于获取终端的按键状态信息的网关,其配置为与多个终端通过半双工总线通信连接。图4示出了根据本发明一实施例的网关400的示意性结构框图。参见图4所示,网关400包括第一处理器401和第一存储器402。第一存储器402中存储有第一机器可执行程序403。当第一机器可执行程序403被第一处理器401运行时,导致网关400执行前述任意实施例或实施例组合的应用于网关的基于半双工总线的按键事件扫描方法。
基于同一技术构思,本发明还提供了一种终端,其用于收集自身的按键状态信息并将按键状态信息报告给网关,该终端配置为与网关通过半双工总线通信连接。图5示出了根据本发明一实施例的终端500的示意性结构框图。参见图5所示,终端500包括第二处理器501和第二存储器502。第二存储器502中存储有第二机器可执行程序503。当第二机器可执行程序503被第二处理器501运行时,导致终端500执行前述任意实施例或实施例组合的应用于终端的基于半双工总线的按键事件扫描方法。
基于同一技术构思,本发明还提供了一种机器可读存储介质,该机器可读存储介质存储有机器可执行程序代码,当机器可执行程序代码在电子设备上运行时,导致电子设备执行前述任意实施例或实施例组合的基于半双工总线的按键事件扫描方法。
所属领域的技术人员可以清楚地了解到,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,为简洁起见,在此不另赘述。
另外,在本发明各个实施例中的各功能单元可以物理上相互独立,也可以两个或两个以上功能单元集成在一起,还可以全部功能单元都集成在一个处理单元中。上述集成的功能单元既可以采用硬件的形式实现,也可以采用软件或者固件的形式实现。
本领域普通技术人员可以理解:所述集成的功能单元如果以软件的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,其包括若干指令,用以使得一台计算设备(例如个人计算机,服务器,或者网络设备等)在运行所述指令时执行本发明各实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM)、随机存取存储器(RAM),磁碟或者光盘等各种可以存储程序代码的介质。
或者,实现前述方法实施例的全部或部分步骤可以通过程序指令相关的硬件(诸如个人计算机,服务器,或者网络设备等的计算设备)来完成,所述程序指令可以存储于一计算机可读取存储介质中,当所述程序指令被计算设备的处理器执行时,所述计算设备执行本发明各实施例所述方法的全部或部分步骤。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:在本发明的精神和原则之内,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案脱离本发明的保护范围。
Claims (10)
1.一种基于半双工总线的按键事件扫描方法,应用于网关,包括:
向多个终端发送报数指令,所述多个终端与所述网关通过所述半双工总线通信连接;
接收所述多个终端依次发送的关于所述报数指令的第一响应信息,各所述终端的所述第一响应信息包括指示该终端是否发生了按键事件的类型值;
根据所述第一响应信息中的类型值,将发生了按键事件的终端记录为待查询终端;
在结束接收所有所述终端发送的所述第一响应信息的操作后,依次向各所述待查询终端发送查询指令;
接收各所述待查询终端关于所述查询指令的第二响应信息,各所述待查询终端的所述第二响应信息包括该待查询终端的按键事件数据,所述按键事件数据包括按键动作事件和/或指示灯状态变化事件;
从各所述第二响应信息中获取各所述待查询终端的按键事件数据。
2.根据权利要求1所述的按键事件扫描方法,其中,各所述终端的地址为指定数值范围内的任意值且各不相同,各所述终端按照地址从小到大的顺序依次发送所述第一响应信息;
在接收所述多个终端依次发送的关于所述报数指令的第一响应信息的过程中,所述方法还包括:
在发送所述报数指令后和在每一次接收到一个所述终端的所述第一响应信息后,判断是否已经收到所有所述终端的所述第一响应信息或是否超过预定时间未接收到下一个所述终端的所述第一响应信息;
若是,则结束接收所述第一响应信息的操作。
3.根据权利要求2所述的按键事件扫描方法,其中,每顺序相邻的两个所述终端的地址的数值差为1;
在发送所述报数指令和在每一次接收到一个所述终端的所述第一响应信息后,判断是否超过预定时间未接收到下一个所述终端的所述第一响应信息的步骤包括:
在发送所述报数指令后和在每一次接收到一个所述终端的所述第一响应信息后开始计时,并计算相应的所述预定时间;
若计时时间超过计算出的所述预定时间时仍未接收到下一个所述终端的所述第一响应信息,则判断超过预定时间未接收到下一个所述终端的所述第一响应信息;
其中,在发送所述报数指令后的相应的所述预定时间按照下式(1)进行计算:
Tpre=T2+T1*max_addr*2 (1)
在每一次接收到一个所述终端的所述第一响应信息后的相应的所述预定时间按照下式(2)进行计算:
Tpre=T2+T1*(max_addr-last_addr)*2 (2)
式(1)和式(2)中,Tpre表示所述预定时间,max_addr为最大的终端地址,last_addr为当前接收到的第一响应信息对应的终端的地址,T1为所述终端发送响应信息的字节耗时,T2为所述半双工总线由一个所述终端占用切换到另一个所述终端占用所需的总线切换时间,T2<T1。
4.根据权利要求1所述的按键事件扫描方法,其中,所述查询指令包括第一校验和,所述第二响应信息包括第二校验和;
在接收到各所述第二响应信息后,还包括:
根据所述第二校验和对接收的各所述第二响应信息进行校验,若未通过校验,则丢弃所述第二响应信息。
5.一种基于半双工总线的按键事件扫描方法,应用于各终端,包括:
接收网关发送的报数指令,各所述终端与所述网关通过所述半双工总线通信连接;
响应于所述报数指令,依照预定次序向所述网关发送第一响应信息,所述第一响应信息包括指示该终端是否发生了按键事件的类型值,以便所述网关根据所述第一响应信息中的类型值,将发生了按键事件的终端记录为待查询终端;
在接收到所述网关依次向各所述待查询终端发送的查询指令的情况下,响应于所述查询指令,向所述网关发送第二响应信息,所述第二响应信息包括该终端的按键事件数据,其中,所述查询指令是由所述网关在结束接收所有所述终端发送的所述第一响应信息的操作后,依次向各所述待查询终端发送的,所述按键事件数据包括按键动作事件和/或指示灯状态变化事件。
6.根据权利要求5所述的按键事件扫描方法,其中,各所述终端的地址为指定数值范围内的任意值且各不相同;
响应于所述报数指令,依照预定次序向所述网关发送第一响应信息的步骤包括:
响应于所述报数指令,按照自身地址在所有终端的地址从小到大的排列中的顺序位置发送所述第一响应信息。
7.根据权利要求6所述的按键事件扫描方法,其中,每顺序相邻的两个所述终端的地址的数值差为1;
响应于所述报数指令,按照自身地址在所有终端的地址从小到大的排列中的顺序位置发送所述第一响应信息的步骤包括:
在接收到所述报数指令后进行计时,并按照下式(3)计算延时时间作为目标延时时间:
Tdel = T2 + T1 * (addr2 - 1)*2 (3);
在计时时间到达所述目标延时时间时,发送所述第一响应信息;
其中,Tdel表示延时时间,addr2为所述终端的自身地址,T1为所述终端发送响应信息的字节耗时,T2为所述半双工总线由一个所述终端占用切换到另一个所述终端占用所需的总线切换时间,T2<T1。
8.根据权利要求7所述的按键事件扫描方法,其中,响应于所述报数指令,按照自身地址在所有终端的地址从小到大的排列中的顺序位置发送所述第一响应信息的步骤还包括:
在每一次接收到地址比自身地址小的其他终端发送的所述第一响应信息时,重新计时,并按照下式(4)更新所述延时时间,并以更新的所述延时时间作为所述目标延时时间:
Tdel = T2 + T1 * (addr2 - addr1 - 1)*2 (4)
其中,所述addr1为当前接收到的所述第一响应信息对应的其他终端的地址。
9.一种用于获取终端的按键状态信息的网关,所述网关配置为与多个终端通过半双工总线通信连接,其中,所述网关包括:
第一处理器;以及
存储有第一机器可执行程序的第一存储器;
当所述第一机器可执行程序被所述第一处理器运行时,导致所述网关执行根据权利要求1-4中任一项所述的基于半双工总线的按键事件扫描方法。
10.一种终端,用于收集自身的按键状态信息并将所述按键状态信息报告给网关,所述终端配置为与所述网关通过半双工总线通信连接,其中,所述终端包括:
第二处理器;以及
存储有第二机器可执行程序的第二存储器;
当所述第二机器可执行程序被所述第二处理器运行时,导致所述终端执行根据权利要求5-8中任一项所述的基于半双工总线的按键事件扫描方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310846099.6A CN116781744B (zh) | 2023-07-11 | 2023-07-11 | 一种基于半双工总线的按键事件扫描方法、网关和终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310846099.6A CN116781744B (zh) | 2023-07-11 | 2023-07-11 | 一种基于半双工总线的按键事件扫描方法、网关和终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116781744A CN116781744A (zh) | 2023-09-19 |
CN116781744B true CN116781744B (zh) | 2024-03-01 |
Family
ID=87991294
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310846099.6A Active CN116781744B (zh) | 2023-07-11 | 2023-07-11 | 一种基于半双工总线的按键事件扫描方法、网关和终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116781744B (zh) |
Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102184191A (zh) * | 2011-04-19 | 2011-09-14 | 中国联合网络通信集团有限公司 | 基于物联网的周边环境信息查询方法、系统及物联网平台 |
CN105187318A (zh) * | 2015-09-07 | 2015-12-23 | 北京和欣运达科技有限公司 | 一种通讯网关实现方法 |
CN106897597A (zh) * | 2017-02-09 | 2017-06-27 | 惠州Tcl移动通信有限公司 | 一种终端触控按键的实现方法及系统 |
CN107197031A (zh) * | 2017-06-19 | 2017-09-22 | 深圳市盛路物联通讯技术有限公司 | 一种应用于物联网的终端设备状态检测方法及系统 |
CN107659612A (zh) * | 2017-08-17 | 2018-02-02 | 深圳市盛路物联通讯技术有限公司 | 基于设备分组的数据传输控制方法及装置 |
CN110149369A (zh) * | 2019-04-19 | 2019-08-20 | 欧普照明股份有限公司 | 基于物联网的终端设备的轮转上报方法和远程控制系统 |
CN110337070A (zh) * | 2019-07-24 | 2019-10-15 | 无锡灵龙芯物联网科技有限公司 | 一种基于tdma的lora数据通信方法 |
CN110752963A (zh) * | 2018-07-24 | 2020-02-04 | 腾讯科技(深圳)有限公司 | 事件处理方法和装置、存储介质及电子装置 |
CN112165413A (zh) * | 2020-09-27 | 2021-01-01 | 海尔优家智能科技(北京)有限公司 | 设备状态上报方法及装置、电子装置 |
CN113507422A (zh) * | 2021-06-25 | 2021-10-15 | 中标慧安信息技术股份有限公司 | 基于物联网平台的多终端数据传输控制方法和系统 |
WO2021238090A1 (zh) * | 2020-05-27 | 2021-12-02 | 东风柳州汽车有限公司 | 自适应调节控制方法及装置、网关终端及存储介质 |
CN113810340A (zh) * | 2020-06-12 | 2021-12-17 | 腾讯科技(深圳)有限公司 | 数据上报方法、装置、设备及计算机可读存储介质 |
CN114422101A (zh) * | 2021-12-30 | 2022-04-29 | 湖南科大天河通信股份有限公司 | 一种基于超低速率数传电台信息通信的置换地址算法 |
CN115019494A (zh) * | 2022-06-02 | 2022-09-06 | 武汉领普科技有限公司 | 无线开关、无线开关的处理方法及控制系统 |
CN116017558A (zh) * | 2022-12-05 | 2023-04-25 | 广东睿住智能科技有限公司 | 信息交互方法、信息交互装置、存储介质及服务器 |
CN116149881A (zh) * | 2023-03-14 | 2023-05-23 | 海南声智互联科技有限公司 | 通知消息的发送方法、装置、设备及存储介质 |
-
2023
- 2023-07-11 CN CN202310846099.6A patent/CN116781744B/zh active Active
Patent Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102184191A (zh) * | 2011-04-19 | 2011-09-14 | 中国联合网络通信集团有限公司 | 基于物联网的周边环境信息查询方法、系统及物联网平台 |
CN105187318A (zh) * | 2015-09-07 | 2015-12-23 | 北京和欣运达科技有限公司 | 一种通讯网关实现方法 |
CN106897597A (zh) * | 2017-02-09 | 2017-06-27 | 惠州Tcl移动通信有限公司 | 一种终端触控按键的实现方法及系统 |
CN107197031A (zh) * | 2017-06-19 | 2017-09-22 | 深圳市盛路物联通讯技术有限公司 | 一种应用于物联网的终端设备状态检测方法及系统 |
CN107659612A (zh) * | 2017-08-17 | 2018-02-02 | 深圳市盛路物联通讯技术有限公司 | 基于设备分组的数据传输控制方法及装置 |
CN110752963A (zh) * | 2018-07-24 | 2020-02-04 | 腾讯科技(深圳)有限公司 | 事件处理方法和装置、存储介质及电子装置 |
CN110149369A (zh) * | 2019-04-19 | 2019-08-20 | 欧普照明股份有限公司 | 基于物联网的终端设备的轮转上报方法和远程控制系统 |
CN110337070A (zh) * | 2019-07-24 | 2019-10-15 | 无锡灵龙芯物联网科技有限公司 | 一种基于tdma的lora数据通信方法 |
WO2021238090A1 (zh) * | 2020-05-27 | 2021-12-02 | 东风柳州汽车有限公司 | 自适应调节控制方法及装置、网关终端及存储介质 |
CN113810340A (zh) * | 2020-06-12 | 2021-12-17 | 腾讯科技(深圳)有限公司 | 数据上报方法、装置、设备及计算机可读存储介质 |
CN112165413A (zh) * | 2020-09-27 | 2021-01-01 | 海尔优家智能科技(北京)有限公司 | 设备状态上报方法及装置、电子装置 |
CN113507422A (zh) * | 2021-06-25 | 2021-10-15 | 中标慧安信息技术股份有限公司 | 基于物联网平台的多终端数据传输控制方法和系统 |
CN114422101A (zh) * | 2021-12-30 | 2022-04-29 | 湖南科大天河通信股份有限公司 | 一种基于超低速率数传电台信息通信的置换地址算法 |
CN115019494A (zh) * | 2022-06-02 | 2022-09-06 | 武汉领普科技有限公司 | 无线开关、无线开关的处理方法及控制系统 |
CN116017558A (zh) * | 2022-12-05 | 2023-04-25 | 广东睿住智能科技有限公司 | 信息交互方法、信息交互装置、存储介质及服务器 |
CN116149881A (zh) * | 2023-03-14 | 2023-05-23 | 海南声智互联科技有限公司 | 通知消息的发送方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116781744A (zh) | 2023-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112905508B (zh) | 用于串口通信设备的地址分配方法、通信装置和存储介质 | |
CA2183200A1 (en) | Terminal unit for a wired services network | |
CN109561398B (zh) | Ap邻居表建立方法 | |
EP2858326A1 (en) | Service information discovery method and device | |
CN112948299A (zh) | 一种串口通信系统和通信方法 | |
US7827335B2 (en) | Remote communication system of a network | |
CN111130690A (zh) | 一种ir46智能电表的多通讯协议的处理方法及装置 | |
CN116781744B (zh) | 一种基于半双工总线的按键事件扫描方法、网关和终端 | |
CN112714401B (zh) | 数据处理方法及装置、设备及存储介质 | |
CN114070563B (zh) | 一种数据处理方法、装置、终端及存储介质 | |
CN113938351A (zh) | 数据采集方法、系统及计算机可读存储介质 | |
CN111091702A (zh) | 基于脉宽检测的自学习红外解码方法、装置及系统 | |
CN115474264A (zh) | 发射功率调节方法、装置、终端及存储介质 | |
CN101902699B (zh) | 一种基于消息号码处理消息的方法及装置 | |
CN112333068A (zh) | 供电通讯总线系统、供电通讯方法和电子设备 | |
CN112581307A (zh) | 一种实现智能传感器即插即用的交互方法及系统 | |
CN112118162A (zh) | 通信系统及其通信方法 | |
CN111356158A (zh) | 用于智能家居和通信基站的通信方法和系统 | |
CN114374995B (zh) | 一种处理BSS Color冲突的方法、站点、无线接入点及系统 | |
CN218159296U (zh) | 一种自组网式rs485快速识别地址的通讯优化电路 | |
CN114650509B (zh) | 蓝牙广播双向通信的方法、装置及系统 | |
US20230064062A1 (en) | Method for transmitting metrological data and device implementing the method | |
CN115664541B (zh) | 水下无线通信系统及控制方法 | |
CN221042934U (zh) | 一种提升热网通信效率的系统 | |
CN117955953A (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 |