本发明涉及物联网,特别是一种基于半双工总线的按键事件扫描方法、网关和终端。
背景技术:
1、随着物联网、智能家居等不断发展,越来越多的设备需要互联,其中按键终端与控制设备互联的应用必不可少。
2、目前比较成熟的按键终端与控制设备互联的方案是将按键终端和按键网关用458总线进行连接,然后按键网关逐个扫描按键终端,获取当前按键的控制信息。但是,逐个扫描按键终端效率低下,当按键终端个数较多时,延时比较严重。
3、此外,传统的方法是直接将按键集成到设备上面,直接进行控制,而基于通信的按键往往要么协议复杂、开发难度大,要么效率低下。
技术实现思路
1、鉴于上述问题,本发明提供了一种克服上述问题或者至少部分地解决上述问题的基于半双工总线的按键事件扫描方法、网关和终端。
2、本发明的一个目的是简化按键扫描的开发,提高按键扫描效率和可靠性。
3、本发明一个进一步的目的是提高报数效率。
4、本发明另一个进一步的目的是节省终端的报数应答时间。
5、本发明又一个进一步的目的是提高按键事件查询的可靠性。
6、特别地,根据本发明的一方面,提供了一种基于半双工总线的按键事件扫描方法,应用于网关,包括:
7、向多个终端发送报数指令,所述多个终端与所述网关通过所述半双工总线通信连接;
8、接收所述多个终端依次发送的关于所述报数指令的第一响应信息,各所述终端的所述第一响应信息包括指示该终端是否发生了按键事件的类型值;
9、根据所述第一响应信息中的类型值,将发生了按键事件的终端记录为待查询终端;
10、依次向各所述待查询终端发送查询指令;
11、接收各所述待查询终端关于所述查询指令的第二响应信息,各所述待查询终端的所述第二响应信息包括该待查询终端的按键事件数据;
12、从各所述第二响应信息中获取各所述待查询终端的按键事件数据。
13、可选地,各所述终端的地址为指定数值范围内的任意值且各不相同,各所述终端按照地址从小到大的顺序依次发送所述第一响应信息;
14、在接收所述多个终端依次发送的关于所述报数指令的第一响应信息的过程中,所述方法还包括:
15、在发送所述报数指令后和在每一次接收到一个所述终端的所述第一响应信息后,判断是否已经收到所有所述终端的所述第一响应信息或是否超过预定时间未接收到下一个所述终端的所述第一响应信息;
16、若是,则结束接收所述第一响应信息的操作。
17、可选地,每顺序相邻的两个所述终端的地址的数值差为1;
18、在发送所述报数指令和在每一次接收到一个所述终端的所述第一响应信息后,判断是否超过预定时间未接收到下一个所述终端的所述第一响应信息的步骤包括:
19、在发送所述报数指令后和在每一次接收到一个所述终端的所述第一响应信息后开始计时,并计算相应的所述预定时间;
20、若计时时间超过计算出的所述预定时间时仍未接收到下一个所述终端的所述第一响应信息,则判断超过预定时间未接收到下一个所述终端的所述第一响应信息;
21、其中,在发送所述报数指令后的相应的所述预定时间按照下式(1)进行计算:
22、tpre = t2 + t1 * max_addr *2 (1)
23、在每一次接收到一个所述终端的所述第一响应信息后的相应的所述预定时间按照下式(2)进行计算:
24、tpre = t2 + t1 * (max_addr - last_addr)*2 (2)
25、式(1)和式(2)中,tpre表示所述预定时间,max_addr为最大的终端地址,last_addr为当前接收到的第一响应信息对应的终端的地址,t1为所述终端发送响应信息的字节耗时,t2为所述半双工总线由一个所述终端占用切换到另一个所述终端占用所需的总线切换时间,t2<t1。
26、可选地,所述查询指令包括第一校验和,所述第二响应信息包括第二校验和;
27、在接收到各所述第二响应信息后,所述方法还包括:
28、根据所述第二校验和对接收的各所述第二响应信息进行校验,若未通过校验,则丢弃所述第二响应信息。
29、根据本发明的另一方面,还提供了一种基于半双工总线的按键事件扫描方法,应用于各终端,包括:
30、接收网关发送的报数指令,各所述终端与所述网关通过所述半双工总线通信连接;
31、响应于所述报数指令,依照预定次序向所述网关发送第一响应信息,所述第一响应信息包括指示该终端是否发生了按键事件的类型值,以便所述网关根据所述响应信息中的类型值,将发生了按键事件的终端记录为待查询终端;
32、在接收到所述网关依次向各所述待查询终端发送的查询指令的情况下,响应于所述查询指令,向所述网关发送第二响应信息,所述第二响应信息包括该终端的按键事件数据。
33、可选地,各所述终端的地址为指定数值范围内的任意值且各不相同;
34、响应于所述报数指令,依照预定次序向所述网关发送第一响应信息的步骤包括:
35、响应于所述报数指令,按照自身地址在所有终端的地址从小到大的排列中的顺序位置发送所述第一响应信息。
36、可选地,每顺序相邻的两个所述终端的地址的数值差为1;
37、响应于所述报数指令,按照自身地址在所有终端的地址从小到大的排列中的顺序位置发送所述第一响应信息的步骤包括:
38、在接收到所述报数指令后进行计时,并按照下式(3)计算延时时间作为目标延时时间:
39、tdel = t2 + t1 * (addr2 - 1)*2 (3);
40、在计时时间到达所述目标延时时间时,发送所述第一响应信息;
41、其中,tdel表示延时时间,addr2为所述终端的自身地址,t1为所述终端发送响应信息的字节耗时,t2为所述半双工总线由一个所述终端占用切换到另一个所述终端占用所需的总线切换时间,t2<t1。
42、可选地,响应于所述报数指令,按照自身地址在所有终端的地址从小到大的排列中的顺序位置发送所述第一响应信息的步骤还包括:
43、在每一次接收到地址比自身地址小的其他终端发送的所述第一响应信息时,重新计时,并按照下式(4)更新所述延时时间,并以更新的所述延时时间作为所述目标延时时间:
44、tdel=t2+t1*(addr2-addr1-1)*2(4)
45、其中,所述addr1为当前接收到的所述第一响应信息对应的其他终端的地址。
46、根据本发明的再一方面,还提供了一种用于获取终端的按键状态信息的网关,所述网关配置为与多个终端通过半双工总线通信连接,其中,所述网关包括:
47、第一处理器;以及
48、存储有第一机器可执行程序的第一存储器;
49、当所述第一机器可执行程序被所述第一处理器运行时,导致所述网关执行前述的应用于网关的基于半双工总线的按键事件扫描方法。
50、根据本发明的又一方面,还提供了一种终端,用于收集自身的按键状态信息并将所述按键状态信息报告给网关,所述终端配置为与所述网关通过半双工总线通信连接,其中,所述终端包括:
51、第二处理器;以及
52、存储有第二机器可执行程序的第二存储器;
53、当所述第二机器可执行程序被所述第二处理器运行时,导致所述终端执行前述的应用于各终端的基于半双工总线的按键事件扫描方法。
54、本发明提出的基于半双工总线的按键事件扫描方法中,采用了报数的思想,由网关向多个终端发送报数指令,各终端响应于报数指令依次向网关发送包括指示终端是否发生了按键事件的类型值的第一响应信息,网关根据第一响应信息确定并记录发生了按键事件的终端为待查询终端后,再依次向各待查询终端查询按键事件数据。与传统的网关直接扫描各终端的按键信息或直接将按键集成到设备上相比,本发明的方法可以简化按键扫描的开发,提高按键扫描效率和可靠性。
55、进一步地,在终端响应于报数指令依次向网关发送第一响应信息时,各终端根据式(3):tdel=t2+t1*(addr2-1)*2计算自身的延时时间,在延时时间到达后自动发送第一响应信息。这样可以保证每两个顺序相邻的终端的发送时间之间有1个字节的时间差,进而保证了各终端通过半双工总线发送的数据不会发生碰撞,从而保证了数据的安全和通讯的可靠。
56、进一步地,在终端响应于报数指令依次向网关发送第一响应信息时,每一终端在每一次接收到地址比自身地址小的其他终端发送的第一响应信息时,还会重新计时,并根据式(4):tdel=t2+t1*(addr2-addr1-1)*2更新延时时间,如此可以使终端对报数指令的应答更加紧凑,从而节省终端的报数应答时间,即节省通讯的时间。
57、进一步地,在报数指令和第一响应信息中均不包括校验和,即,在报数通讯阶段不需要加校验和。由于报数错误只会影响多查或少查询几次,不会影响系统的可靠性,而不加校验和可以少发送1个字节的数据,节省数据传输时间,从而提高了报数效率。
58、进一步地,在查询指令和第二响应信息中分别包括第一校验和和第二校验和,终端在接收到查询指令时需根据第一校验和进行校验,网关在接收到第二响应信息时也需根据第二校验和进行校验。按键事件查询阶段的校验和校验增加了整个系统的可靠性,而由于一般按键事件的频率不会太高,按键事件查询阶段增加校验和对系统的效率影响不大,因此,能够在几乎不或仅轻微影响系统效率的情况下提高按键事件查询的可靠性。
59、上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
60、根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。