一種無線遙控控制協(xié)議和無線遙控系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種無線遙控控制協(xié)議,特別是一種能修復(fù)丟包錯誤的無線遙控控制 協(xié)議;涉及一種無線遙控系統(tǒng),特別是一種不修改遙控器、只修改被遙控設(shè)備就能處理新定 義的操作類型的無線遙控系統(tǒng)。
【背景技術(shù)】
[0002] 遙控器上使用了按鈕(或觸摸開關(guān)、扳機等觸發(fā)類元件,這類元件的工作方式是: 長時間處于未觸發(fā)態(tài),短時間處于觸發(fā)態(tài),再恢復(fù)未觸發(fā)態(tài))。當(dāng)遙控器進行操作時,遙控器 向被遙控設(shè)備發(fā)送操作命令,其中操作命令指明了操作類型(如:單擊、雙擊、長按等)。被遙 控設(shè)備根據(jù)收到的操作類型啟動不同的功能。
[0003] 而目前現(xiàn)有技術(shù)中存在的問題和缺點:
[0004] 1.現(xiàn)在的無線設(shè)備越來越多,無線網(wǎng)絡(luò)環(huán)境越來越復(fù)雜,無線網(wǎng)絡(luò)環(huán)境內(nèi)的干擾 越來越多,遙控信息發(fā)生丟包時,操作命令不能發(fā)送到設(shè)備端。
[0005] 2.遙控器上按鈕的操作越來越豐富多樣,除了 :單擊、雙擊、長按,還出現(xiàn)了 "快速 按兩下,其中第二下長按"這樣的復(fù)雜操作(如蘋果耳機的"歌曲快進"操作)。遙控器需要識 別越來越多的操作類型,而遙控器上的軟件又不方便更新、升級,只能用新的遙控器替換老 的遙控器。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明的目的是克服上述現(xiàn)有技術(shù)中存在的不足,而提供一種無線遙控控制協(xié)議 和無線控制系統(tǒng),實現(xiàn)在丟包的情況下被遙控設(shè)備也能準(zhǔn)確識別遙控器的操作;同時也實 現(xiàn)了識別新的操作類型時不需要更換遙控器。
[0007] 為了實現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案是:
[0008] -種無線遙控系統(tǒng),它包括遙控器和被遙控設(shè)備,所述遙控器包括觸發(fā)類操作元 件、主控模塊、時鐘模塊和發(fā)送模塊;所述的被遙控設(shè)備包括接收模塊、時鐘模塊和主控模 塊;遙控器的發(fā)送模塊通過無線通訊技術(shù)向被遙控設(shè)備的接收模塊發(fā)送操作命令。
[0009]遙控器的發(fā)送模塊通過無線通訊技術(shù)向被遙控設(shè)備的接收模塊發(fā)送操作命令,其 中無線通訊技術(shù)包括但不限于:Wi-Fi、藍(lán)牙、Zigbee。
[0010]所述的遙控器的觸發(fā)類操作元件包括但不限于:按鈕、觸摸開關(guān)、扳機。
[0011]所述遙控器還包括存儲模塊,將一個或多個操作命令錄制到存儲模塊中,當(dāng)無線 網(wǎng)絡(luò)環(huán)境差導(dǎo)致丟包嚴(yán)重,不能修復(fù)丟包錯誤時,遙控器重新向被遙控設(shè)備發(fā)送操作命令。
[0012] 所述的遙控器遙控兩個及兩個以上被遙控設(shè)備時,會出現(xiàn)遙控器的無線信號不能 良好覆蓋全部設(shè)備的情況,可以將操作命令錄制到存儲模塊中,再將遙控器移動到無線信 號良好覆蓋被遙控設(shè)備的位置,分批向被遙控設(shè)備發(fā)送操作命令。
[0013] 所述無線遙控系統(tǒng)還包含無線遙控控制協(xié)議,遙控器的發(fā)送模塊向被遙控設(shè)備的 接收模塊之間發(fā)送的操作命令是以數(shù)據(jù)幀的形式傳輸?shù)摹C恳粠瑪?shù)據(jù)包括:遙控器ID、時間 碼、遙控指令。遙控指令包括:按鈕ID、原子操作、操作序號、操作參數(shù)。
[0014] -種無線遙控系統(tǒng)中包含的無線遙控控制協(xié)議,具體包括如下內(nèi)容:
[0015] a)不同的遙控器,遙控器ID不一樣;接收模塊中存儲了遙控器ID集合,如果收到的 數(shù)據(jù)幀中的遙控器ID不處于該集合中,則認(rèn)為整個數(shù)據(jù)幀無效,不處理;主控模塊定義了操 作類型,"單擊","雙擊"和"長按";
[0016] b)該控制協(xié)議定義了一個時間周期T1,時間碼是遙控器的時鐘模塊對T1的計數(shù), 當(dāng)計數(shù)達(dá)到此字段的最大值時,下一次計數(shù)設(shè)置為〇;
[0017] c)不同的按鈕,按鈕ID不一樣;
[0018] d)原子操作包括:觸發(fā)(PRESS)、保持觸發(fā)態(tài)(HOLD)、恢復(fù)為未觸發(fā)態(tài)(RELEASE);
[0019] e)每個"觸發(fā)-保持-恢復(fù)"過程中,操作序號是一致的,每經(jīng)過一次"觸發(fā)-保持-恢 復(fù)"過程,操作序號增加1;如果操作序號達(dá)到這個字段的最大值,下一次"觸發(fā)-保持-恢復(fù)" 過程將操作序號設(shè)置為〇。
[0020] 所述無線遙控控制協(xié)議,包括以下實施步驟:
[0021] a)遙控器的主控模塊檢測到按鈕被觸發(fā)(從未觸發(fā)態(tài)進入觸發(fā)態(tài))時,通知發(fā)送模 塊,發(fā)送模塊發(fā)送的原子操作為PRESS,操作參數(shù)為0;
[0022] b)該控制協(xié)議定義了一個時間周期T2,T2是T1的正整數(shù)倍,遙控器的主控模塊檢 測到按鈕保持觸發(fā)態(tài)的時間每達(dá)到1個Τ2時,通知發(fā)送模塊,發(fā)送模塊發(fā)送的原子操作為 HOLD,操作參數(shù)為此次"觸發(fā)-保持-恢復(fù)"過程中,Τ2的計數(shù);每個"觸發(fā)-保持-恢復(fù)"過程結(jié) 束時,此計數(shù)設(shè)置為0;按鈕保持觸發(fā)態(tài)的時間每達(dá)到1個T2,此計數(shù)增加1;如果此計數(shù)達(dá)到 操作參數(shù)這個字段的最大值,按鈕保持觸發(fā)態(tài)的時間再達(dá)到1個T2時,將此計數(shù)設(shè)置為0;
[0023] c)遙控器的主控模塊檢測到按鈕從觸發(fā)態(tài)恢復(fù)為未觸發(fā)態(tài)時,通知發(fā)送模塊,發(fā) 送模塊發(fā)送的原子操作為RELEASE,操作參數(shù)為按鈕保持觸發(fā)態(tài)時經(jīng)過的T2的計數(shù);
[0024] d)如果網(wǎng)絡(luò)正常,沒有發(fā)生丟包,那么被遙控設(shè)備的接收模塊會依次收到PRESS、 H0LD、RELEASE的數(shù)據(jù)幀(或者依次收到PRESS、RELEASE的數(shù)據(jù)幀),并通知主控模塊;主控模 塊根據(jù)接收模塊報告的原子操作,觸發(fā)相應(yīng)的功能。
[0025]如果一次"觸發(fā)-保持-恢復(fù)"過程中,前一個或幾個幀丟了(即:收到的第一個幀是 HOLD或者RELEASE ),接收端可以推算丟失的遙控指令,并通知主控模塊。它包括以下實施步 驟:
[0026] a)如果收到的是{H0LD,n}(原子操作為HOLD,操作參數(shù)為η),那么推算出{PRESS, 0}、{H0LD,1}……{H0LD,n-l};
[0027] b)如果收到的是{RELEASE,η},那么推算出{PRESS,0}、{HOLD,1}……{HOLD,η}。
[0028] 如果一次"觸發(fā)-保持-恢復(fù)"過程中,中間一個或幾個幀丟了,接收端可以根據(jù)丟 包前后的數(shù)據(jù)幀推算出丟失的遙控指令,并通知主控模塊。它包括以下實施步驟:
[0029] a)如果收到的是{PRESS,0},{RELEASE,η},那么推算出{HOLD, 1}……{HOLD,η};
[0030] b)如果收到的是{PRESS,0},{HOLD,η},那么推算出{HOLD, 1}……{H0LD,n_l};
[0031] c)如果收到的是{HOLD,m},{RELEASE,η},那么推算出{HOLD,m+1}……{HOLD,η};
[0032] d)如果收到的是{HOLD,m},{HOLD,η},那么推算出{HOLD,m+1}……{H0LD,n_l}。
[0033] 如果一次"觸發(fā)-保持-恢復(fù)"過程中,最后一個或幾個幀丟了,未收到本次操作的 RELEASE卻收到新的操作(操作序號發(fā)生改變),操作端可以認(rèn)為本次操作結(jié)束,以已收到的 幀為基礎(chǔ),推算發(fā)送端的RELEASE操作,并通知主控模塊,同時開始處理新的一個"觸發(fā)-保 持-恢復(fù)"過程。它包括以下實施步驟:
[0034] a)如果在收到{PRESS,0}后收到新的操作,那么推算出{RELEASE,0};
[0035] b)如果在收到{H0LD,n}后收到新的操作,那么推算出{RELEASE,n};
[0036] c)收到的新操作如果不是PRESS,那么根據(jù)一次"觸發(fā)-保持-恢復(fù)"過程中,前一個 或幾個幀丟了(即:收到的第一個幀是HOLD或者RELEASE),接收端可以推算丟失的遙控指 令,并通知主控模塊處理。
[0037] 所述無線遙控控制協(xié)議定義了一個超時計數(shù)N,如果一次"觸發(fā)-保持-恢復(fù)"過程 中,連續(xù)丟包計數(shù)超過N,( 即:收到某個PRESS或HOLD幀后,經(jīng)過N個T2的時間,都沒有收到數(shù) 據(jù)幀),接收端可以認(rèn)為本次操作超時,以已收到的幀為基礎(chǔ),推算發(fā)送端的RELEASE操作, 并通知主控模塊;它包括以下實施步驟:
[0038] a)如果在收到{PRESS,0}后超時,那么推算出{RELEASE,0};
[0039] b)如果在收到{HOLD,η}后超時,那么推算出{RELEASE,η};
[0040] c)如果在判定為超時后又收到此次操作的幀(同一批操作序號),丟棄不處理。
[0041] 所述的被遙控設(shè)備的接收模塊除了向主控模塊通知接收到的原子操作,還可以通 知原子操作對應(yīng)的時間碼。主控模塊因而可以定義更復(fù)雜的操作類型。
[0042] 當(dāng)無線網(wǎng)絡(luò)發(fā)生異常時,被遙控設(shè)備的接收模塊除了推算發(fā)送端的原子操作,還 可以根據(jù)T2的定義,推算原子操作對應(yīng)的時間碼;它包括以下實施步驟:
[0043] a)如果屬于一次"觸發(fā)-保持-恢復(fù)"過程中,前一個或幾個幀丟了(即:收到的第一 個幀是HOLD或者RELEASE),接收端可以推算丟失的遙控指令,并通知主控模塊處理,根據(jù)收 到的數(shù)據(jù)幀的時間碼向前推算。如:收到{RELEASE,n}的時間碼為t,則推算出{H0LD,n}的時 間碼為t,{HOLD,m}的時間碼為t-(n-m)*T2,{PRESS,0}的時間碼為t-n*T2;
[0044] b)如果屬于一次"觸發(fā)-保持-恢復(fù)"過程中,中間一個或幾個幀丟了,接收端可以 根據(jù)丟包前后的數(shù)據(jù)幀推算出丟失的遙控指令,并通知主控模塊處理,根據(jù)丟