一种无线遥控控制协议和无线遥控系统
技术领域
本发明涉及一种无线遥控控制协议,特别是一种能修复丢包错误的无线遥控控制协议;涉及一种无线遥控系统,特别是一种不修改遥控器、只修改被遥控设备就能处理新定义的操作类型的无线遥控系统。
背景技术
遥控器上使用了按钮(或触摸开关、扳机等触发类元件,这类元件的工作方式是:长时间处于未触发态,短时间处于触发态,再恢复未触发态)。当遥控器进行操作时,遥控器向被遥控设备发送操作命令,其中操作命令指明了操作类型(如:单击、双击、长按等)。被遥控设备根据收到的操作类型启动不同的功能。
而目前现有技术中存在的问题和缺点:
1.现在的无线设备越来越多,无线网络环境越来越复杂,无线网络环境内的干扰越来越多,遥控信息发生丢包时,操作命令不能发送到设备端。
2.遥控器上按钮的操作越来越丰富多样,除了:单击、双击、长按,还出现了“快速按两下,其中第二下长按”这样的复杂操作(如苹果耳机的“歌曲快进”操作)。遥控器需要识别越来越多的操作类型,而遥控器上的软件又不方便更新、升级,只能用新的遥控器替换老的遥控器。
发明内容
本发明的目的是克服上述现有技术中存在的不足,而提供一种无线遥控控制协议和无线控制系统,实现在丢包的情况下被遥控设备也能准确识别遥控器的操作;同时也实现了识别新的操作类型时不需要更换遥控器。
为了实现上述目的,本发明采用的技术方案是:
一种无线遥控系统,它包括遥控器和被遥控设备,所述遥控器包括触发类操作元件、主控模块、时钟模块和发送模块;所述的被遥控设备包括接收模块、时钟模块和主控模块;遥控器的发送模块通过无线通讯技术向被遥控设备的接收模块发送操作命令。
遥控器的发送模块通过无线通讯技术向被遥控设备的接收模块发送操作命令,其中无线通讯技术包括但不限于:Wi-Fi、蓝牙、Zigbee。
所述的遥控器的触发类操作元件包括但不限于:按钮、触摸开关、扳机。
所述遥控器还包括存储模块,将一个或多个操作命令录制到存储模块中,当无线网络环境差导致丢包严重,不能修复丢包错误时,遥控器重新向被遥控设备发送操作命令。
所述的遥控器遥控两个及两个以上被遥控设备时,会出现遥控器的无线信号不能良好覆盖全部设备的情况,可以将操作命令录制到存储模块中,再将遥控器移动到无线信号良好覆盖被遥控设备的位置,分批向被遥控设备发送操作命令。
所述无线遥控系统还包含无线遥控控制协议,遥控器的发送模块向被遥控设备的接收模块之间发送的操作命令是以数据帧的形式传输的。每一帧数据包括:遥控器ID、时间码、遥控指令。遥控指令包括:按钮ID、原子操作、操作序号、操作参数。
一种无线遥控系统中包含的无线遥控控制协议,具体包括如下内容:
a)不同的遥控器,遥控器ID不一样;接收模块中存储了遥控器ID集合,如果收到的数据帧中的遥控器ID不处于该集合中,则认为整个数据帧无效,不处理;主控模块定义了操作类型,“单击”,“双击”和“长按”;
b)该控制协议定义了一个时间周期T1,时间码是遥控器的时钟模块对T1的计数,当计数达到此字段的最大值时,下一次计数设置为0;
c)不同的按钮,按钮ID不一样;
d)原子操作包括:触发(PRESS)、保持触发态(HOLD)、恢复为未触发态(RELEASE);
e)每个“触发-保持-恢复”过程中,操作序号是一致的,每经过一次“触发-保持-恢复”过程,操作序号增加1;如果操作序号达到这个字段的最大值,下一次“触发-保持-恢复”过程将操作序号设置为0。
所述无线遥控控制协议,包括以下实施步骤:
a)遥控器的主控模块检测到按钮被触发(从未触发态进入触发态)时,通知发送模块,发送模块发送的原子操作为PRESS,操作参数为0;
b)该控制协议定义了一个时间周期T2,T2是T1的正整数倍,遥控器的主控模块检测到按钮保持触发态的时间每达到1个T2时,通知发送模块,发送模块发送的原子操作为HOLD,操作参数为此次“触发-保持-恢复”过程中,T2的计数;每个“触发-保持-恢复”过程结束时,此计数设置为0;按钮保持触发态的时间每达到1个T2,此计数增加1;如果此计数达到操作参数这个字段的最大值,按钮保持触发态的时间再达到1个T2时,将此计数设置为0;
c)遥控器的主控模块检测到按钮从触发态恢复为未触发态时,通知发送模块,发送模块发送的原子操作为RELEASE,操作参数为按钮保持触发态时经过的T2的计数;
d)如果网络正常,没有发生丢包,那么被遥控设备的接收模块会依次收到PRESS、HOLD、RELEASE的数据帧(或者依次收到PRESS、RELEASE的数据帧),并通知主控模块;主控模块根据接收模块报告的原子操作,触发相应的功能。
如果一次“触发-保持-恢复”过程中,前一个或几个帧丢了(即:收到的第一个帧是HOLD或者RELEASE),接收端可以推算丢失的遥控指令,并通知主控模块。它包括以下实施步骤:
a)如果收到的是{HOLD,n}(原子操作为HOLD,操作参数为n),那么推算出{PRESS,0}、{HOLD,1}……{HOLD,n-1};
b)如果收到的是{RELEASE,n},那么推算出{PRESS,0}、{HOLD,1}……{HOLD,n}。
如果一次“触发-保持-恢复”过程中,中间一个或几个帧丢了,接收端可以根据丢包前后的数据帧推算出丢失的遥控指令,并通知主控模块。它包括以下实施步骤:
a)如果收到的是{PRESS,0},{RELEASE,n},那么推算出{HOLD,1}……{HOLD,n};
b)如果收到的是{PRESS,0},{HOLD,n},那么推算出{HOLD,1}……{HOLD,n-1};
c)如果收到的是{HOLD,m},{RELEASE,n},那么推算出{HOLD,m+1}……{HOLD,n};
d)如果收到的是{HOLD,m},{HOLD,n},那么推算出{HOLD,m+1}……{HOLD,n-1}。
如果一次“触发-保持-恢复”过程中,最后一个或几个帧丢了,未收到本次操作的RELEASE却收到新的操作(操作序号发生改变),操作端可以认为本次操作结束,以已收到的帧为基础,推算发送端的RELEASE操作,并通知主控模块,同时开始处理新的一个“触发-保持-恢复”过程。它包括以下实施步骤:
a)如果在收到{PRESS,0}后收到新的操作,那么推算出{RELEASE,0};
b)如果在收到{HOLD,n}后收到新的操作,那么推算出{RELEASE,n};
c)收到的新操作如果不是PRESS,那么根据一次“触发-保持-恢复”过程中,前一个或几个帧丢了(即:收到的第一个帧是HOLD或者RELEASE),接收端可以推算丢失的遥控指令,并通知主控模块处理。
所述无线遥控控制协议定义了一个超时计数N,如果一次“触发-保持-恢复”过程中,连续丢包计数超过N,(即:收到某个PRESS或HOLD帧后,经过N个T2的时间,都没有收到数据帧),接收端可以认为本次操作超时,以已收到的帧为基础,推算发送端的RELEASE操作,并通知主控模块;它包括以下实施步骤:
a)如果在收到{PRESS,0}后超时,那么推算出{RELEASE,0};
b)如果在收到{HOLD,n}后超时,那么推算出{RELEASE,n};
c)如果在判定为超时后又收到此次操作的帧(同一批操作序号),丢弃不处理。
所述的被遥控设备的接收模块除了向主控模块通知接收到的原子操作,还可以通知原子操作对应的时间码。主控模块因而可以定义更复杂的操作类型。
当无线网络发生异常时,被遥控设备的接收模块除了推算发送端的原子操作,还可以根据T2的定义,推算原子操作对应的时间码;它包括以下实施步骤:
a)如果属于一次“触发-保持-恢复”过程中,前一个或几个帧丢了(即:收到的第一个帧是HOLD或者RELEASE),接收端可以推算丢失的遥控指令,并通知主控模块处理,根据收到的数据帧的时间码向前推算。如:收到{RELEASE,n}的时间码为t,则推算出{HOLD,n}的时间码为t,{HOLD,m}的时间码为t-(n-m)*T2,{PRESS,0}的时间码为t-n*T2;
b)如果属于一次“触发-保持-恢复”过程中,中间一个或几个帧丢了,接收端可以根据丢包前后的数据帧推算出丢失的遥控指令,并通知主控模块处理,根据丢包前的数据帧来推算。如:丢包前的最后一个数据帧{HOLD,m}的时间码为t1,丢包后收到的第一个数据帧{RELEASE,n}的时间码为t2,则推算出{HOLD,m+1}的时间码为t1+T2,{HOLD,n}的时间码为t1+(n-m)*T2;
c)如果属于一次“触发-保持-恢复”过程中,最后一个或几个帧丢了,未收到本次操作的RELEASE却收到新的操作(操作序号发生改变),操作端可以认为本次操作结束,以已收到的帧为基础,推算发送端的RELEASE操作,并通知主控模块的处理,根据丢包前的数据帧来推算。如:丢包前的最后一个数据帧{HOLD,n}的时间码为t,则推算出{RELEASE,n}的时间码为t。
当触发类元件出现“抖动”操作,所述的遥控器的主控模块可以进行过滤“抖动”操作,将极短时间内的多次触发和恢复视为一次触发和恢复。
本发明的有益效果是:与现有技术相比,有如下有益效果:
1.本发明在无线网络传输丢包的情况下,被遥控设备可以根据已收到的数据帧推算丢失的数据帧,降低丢包对遥控操作的影响。
2.本发明中的遥控器面对不同的操作类型,发送数据帧的逻辑是不变的,即使根据业务需要定义了新的操作类型,遥控器也不需要升级或更换,只需修改被遥控设备的主控模块中的逻辑即可。
3.本发明应用于网络环境特别差的情况时,可以利用“录制操作命令-重发操作命令”的方式,用户不用一遍一遍地进行复杂操作,如果发现被遥控设备没有正确的动作,只要重发录制好的操作命令即可。
4.本发明应用于一个遥控器控制两个及两个以上设备的情况时,可以利用“录制操作命令-重发操作命令”的方式,解决遥控器不能良好覆盖所有设备的情况。用户不用一遍一遍地进行复杂操作,只需将遥控器移动到离设备较近的位置,重发录制好的操作命令即可。
附图说明
图1是本发明的无线遥控系统的结构框图。
图2是本发明的遥控器优选方案的结构框图。
图3是本发明的一个遥控器控制一个被遥控设备流程图。
图4是本发明的一个遥控器控制两个以上被遥控设备流程图。
具体实施方式
下面将结合附图与具体实施例对本发明作详细的说明,但不限于以下实施例。
如图1所示的一种无线遥控系统,它包括遥控器和被遥控设备,遥控器与被遥控设备通过无线通讯技术相连,实现遥控器向被遥控设备发送操作命令。所述遥控器包括触发类操作元件、主控模块、时钟模块和发送模块。所述的被遥控设备包括接收模块、时钟模块和主控模块。遥控器的发送模块通过无线通讯技术向被遥控设备的接收模块发送操作命令,其中无线通讯技术包括但不限于:Wi-Fi、蓝牙、Zigbee。所述的遥控器的触发类操作元件包括但不限于:按钮、触摸开关、扳机。
如图2、图3、图4所示,所述的遥控器还包括存储模块,将一个或多个操作命令录制到存储模块中,当无线网络环境差导致丢包严重,不能修复丢包错误,此时遥控器还可以重新发送操作命令。所述的遥控器遥控两个及两个以上被遥控设备时,会出现遥控器的无线信号不能良好覆盖全部设备的情况,可以将操作命令录制到存储模块中,再将遥控器移动到无线信号良好覆盖被遥控设备的位置,分批向被遥控设备发送操作命令。
本发明的无线遥控系统包含无线遥控控制协议,遥控器的发送模块向被遥控设备的接收模块之间发送的操作命令是以数据帧的形式传输的。每一帧数据包括:遥控器ID、时间码、遥控指令。遥控指令包括:按钮ID、原子操作、操作序号、操作参数。
本发明的无线遥控系统中包含的无线遥控控制协议,具体包括如下内容:
a)不同的遥控器,遥控器ID不一样。接收模块中存储了遥控器ID集合(包括一个或两个及以上遥控器ID),如果收到的数据帧中的遥控器ID不处于该集合中,则认为整个数据帧无效,不处理;主控模块定义了操作类型,“单击”,“双击”和“长按”;如:按钮保持触发态的时间短于一定时间(如1秒)后恢复,为“单击”操作,对应某功能(如遥控摄像头拍照);按钮连续两次“单击”之间的间隔短于一定时间(如0.8秒),为“双击”操作,对应某功能(如遥控摄像头开始录像);按钮保持触发态的时间长于一定时间(如1秒)后恢复,为“长按”操作,对应某功能(如遥控摄像头结束录像)。
b)此控制协议定义了一个时间周期T1。时间码是遥控器的时钟模块对T1的计数。当计数达到此字段的最大值时,下一次计数设置为0;
c)不同的按钮,按钮ID不一样;
d)原子操作包括:触发(PRESS)、保持触发态(HOLD)、恢复为未触发态(RELEASE);
e)每个“触发-保持-恢复”过程中,操作序号是一致的,每经过一次“触发-保持-恢复”过程,操作序号增加1。如果操作序号达到这个字段的最大值,下一次“触发-保持-恢复”过程将操作序号设置为0。
本发明的无线遥控控制协议包括以下实施步骤:
a)遥控器的主控模块检测到按钮被触发(从未触发态进入触发态)时,通知发送模块,发送模块发送的原子操作为PRESS,操作参数为0;
b)此控制协议定义了一个时间周期T2,T2是T1的正整数倍,遥控器的主控模块检测到按钮保持触发态的时间每达到1个T2时,通知发送模块,发送模块发送的原子操作为HOLD,操作参数为此次“触发-保持-恢复”过程中,T2的计数。每个“触发-保持-恢复”过程结束时,此计数设置为0;按钮保持触发态的时间每达到1个T2,此计数增加1。如果此计数达到操作参数这个字段的最大值,按钮保持触发态的时间再达到1个T2时,将此计数设置为0;
c)遥控器的主控模块检测到按钮从触发态恢复为未触发态时,通知发送模块,发送模块发送的原子操作为RELEASE,操作参数为按钮保持触发态时经过的T2的计数;
d)如果网络正常,没有发生丢包,那么被遥控设备的接收模块会依次收到PRESS、HOLD、RELEASE的数据帧(或者依次收到PRESS、RELEASE的数据帧),并通知主控模块。主控模块根据接收模块报告的原子操作,触发相应的功能。主控模块定义了操作类型(如:按钮保持触发态的时间短于1秒后恢复,为“单击”操作,对应某功能)。
如果一次“触发-保持-恢复”过程中,前一个或几个帧丢了(即:收到的第一个帧是HOLD或者RELEASE),接收端可以推算丢失的遥控指令,并通知主控模块。
它包括以下实施步骤:
a)如果收到的是{HOLD,n}(原子操作为HOLD,操作参数为n),那么推算出{PRESS,0}、
{HOLD,1}……{HOLD,n-1};
b)如果收到的是{RELEASE,n},那么推算出{PRESS,0}、{HOLD,1}……{HOLD,n}。
如果一次“触发-保持-恢复”过程中,中间一个或几个帧丢了,接收端可以根据丢包前后的数据帧推算出丢失的遥控指令,并通知主控模块。
它包括以下实施步骤:
a)如果收到的是{PRESS,0},{RELEASE,n},那么推算出{HOLD,1}……{HOLD,n};
b)如果收到的是{PRESS,0},{HOLD,n},那么推算出{HOLD,1}……{HOLD,n-1};
c)如果收到的是{HOLD,m},{RELEASE,n},那么推算出{HOLD,m+1}……{HOLD,n};
d)如果收到的是{HOLD,m},{HOLD,n},那么推算出{HOLD,m+1}……{HOLD,n-1};
如果一次“触发-保持-恢复”过程中,最后一个或几个帧丢了,未收到本次操作的RELEASE却收到新的操作(操作序号发生改变),操作端可以认为本次操作结束,以已收到的帧为基础,推算发送端的RELEASE操作,并通知主控模块,同时开始处理新的一个“触发-保持-恢复”过程。
它包括以下实施步骤:
a)如果在收到{PRESS,0}后收到新的操作,那么推算出{RELEASE,0};
b)如果在收到{HOLD,n}后收到新的操作,那么推算出{RELEASE,n};
收到的新操作如果不是PRESS,那么根据一次“触发-保持-恢复”过程中,前一个或几个帧丢了(即:收到的第一个帧是HOLD或者RELEASE),接收端可以推算丢失的遥控指令,并通知主控模块处理。
此控制协议定义了一个超时计数N,如果一次“触发-保持-恢复”过程中,连续丢包计数超过N,(即:收到某个PRESS或HOLD帧后,经过N个T2的时间,都没有收到数据帧),接收端可以认为本次操作超时,以已收到的帧为基础,推算发送端的RELEASE操作,并通知主控模块。
它包括以下实施步骤:
a)如果在收到{PRESS,0}后超时,那么推算出{RELEASE,0};
b)如果在收到{HOLD,n}后超时,那么推算出{RELEASE,n};
c)如果在判定为超时后又收到此次操作的帧(同一批操作序号),丢弃,不处理。
所述的被遥控设备的接收模块除了向主控模块通知接收到的原子操作,还可以通知原子操作对应的时间码。主控模块因而可以定义更复杂的操作类型。
当无线网络发生异常时,被遥控设备的接收模块除了推算发送端的原子操作,还可以根据T2的定义,推算原子操作对应的时间码。
它包括以下实施步骤:
a)如果属于一次“触发-保持-恢复”过程中,前一个或几个帧丢了(即:收到的第一个帧是HOLD或者RELEASE),接收端可以推算丢失的遥控指令,并通知主控模块处理,根据收到的数据帧的时间码向前推算。如:收到{RELEASE,n}的时间码为t,则推算出{HOLD,n}的时间码为t,{HOLD,m}的时间码为t-(n-m)*T2,{PRESS,0}的时间码为t-n*T2;
b)如果属于一次“触发-保持-恢复”过程中,中间一个或几个帧丢了,接收端可以根据丢包前后的数据帧推算出丢失的遥控指令,并通知主控模块处理,根据丢包前的数据帧来推算。如:丢包前的最后一个数据帧{HOLD,m}的时间码为t1,丢包后收到的第一个数据帧{RELEASE,n}的时间码为t2,则推算出{HOLD,m+1}的时间码为t1+T2,{HOLD,n}的时间码为t1+(n-m)*T2;
c)如果属于一次“触发-保持-恢复”过程中,最后一个或几个帧丢了,未收到本次操作的RELEASE却收到新的操作(操作序号发生改变),操作端可以认为本次操作结束,以已收到的帧为基础,推算发送端的RELEASE操作,并通知主控模块的处理,根据丢包前的数据帧来推算。如:丢包前的最后一个数据帧{HOLD,n}的时间码为t,则推算出{RELEASE,n}的时间码为t。
当触发类元件出现“抖动”操作,所述的遥控器的主控模块可以进行过滤“抖动”操作,将极短时间内的多次触发和恢复视为一次触发和恢复。
实施例:
遥控协议定义:T1=0.1,T2=0.5,N=4
操作类型定义:按钮保持按下的时间小于1秒后恢复,在小于0.5秒内再次按下并保持按下的时间大于1秒,为“快速按两下,其中第二下长按”操作。
业务逻辑定义:“快速按两下,其中第二下长按”操作对应“歌曲快进”功能。当操作结束(按钮恢复)时,停止“歌曲快进”功能。
这样操作遥控器的按钮:按下按钮0.2秒后恢复,0.2秒后再次按下按钮并保持按下按钮2.8秒后恢复。
遥控器的发送模块发送如下数据帧:
经过无线网络的传输,其中一些数据包丢失了,被遥控设备的接收模块收到的数据帧为:(灰色表示丢失的数据帧)。
遥控设备的处理过程;
当收到了
以后,一直在等待操作序号为223的HOLD或RELEASE,在超时以前,收到
发现操作序号变成224了,于是给上一个操作序号的操作推算出
再给本次操作推算出
99527 |
42 |
1 |
PRESS |
224 |
0 |
99527 |
47 |
1 |
HOLD |
224 |
1 |
当收到了
以后,一直在等待操作序号为224的HOLD或RELEASE,在超时以前,收到
于是,推算出
99527 |
62 |
1 |
HOLD |
224 |
4 |
99527 |
67 |
1 |
HOLD |
224 |
5 |
最终,被遥控设备的主控模块收到的操作为:
当被遥控设备的主控模块累计收到了
99527 |
38 |
1 |
PRESS |
223 |
0 |
99527 |
38 |
1 |
RELEASE |
223 |
0 |
99527 |
42 |
1 |
PRESS |
224 |
0 |
99527 |
47 |
1 |
HOLD |
224 |
1 |
99527 |
52 |
1 |
HOLD |
224 |
2 |
时,根据操作类型的定义,符合:按钮保持按下的时间小于1秒后恢复,在小于0.5秒内再次按下并保持按下的时间大于1秒,主控模块判定这个操作为“快速按两下,其中第二下长按”操作,并启动“歌曲快进”功能。
当被遥控设备的主控模块收到
时,停止“歌曲快进”功能。