两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

通信接口的數(shù)據(jù)接收方法和裝置與流程

文檔序號:12477440閱讀:319來源:國知局
通信接口的數(shù)據(jù)接收方法和裝置與流程

本發(fā)明涉及計算機技術,尤其涉及一種通信接口的數(shù)據(jù)接收方法和裝置。



背景技術:

當兩個通信接口連接,進行數(shù)據(jù)傳輸時,兩通信接口各自的收發(fā)模塊根據(jù)預設的數(shù)據(jù)傳輸協(xié)議進行數(shù)據(jù)的發(fā)送和接收。由于兩個通信接口直接接觸連接,數(shù)據(jù)傳輸安全性較高,因此,現(xiàn)有的通信接口的收發(fā)模塊在數(shù)據(jù)接收時,不進行數(shù)據(jù)檢驗。

但是,當數(shù)據(jù)傳輸過程中存在誤操作或熱插拔時,可能導致兩個通信接口的通信斷開,當將兩個通信接口恢復連接時,由于可能出現(xiàn)某個數(shù)據(jù)的接收過程無法停止,進而使得新的數(shù)據(jù)的傳輸無法開始的情況,通信接口的數(shù)據(jù)傳輸無法恢復正常。為使數(shù)據(jù)傳輸恢復正常,只能將兩個通信接口各自所在的通信設備的所有模塊全部斷電,確認所有模塊硬件連接正常后,再為各自系統(tǒng)重新上電,重新進行數(shù)據(jù)傳輸。因此,當出現(xiàn)故障時,現(xiàn)有通信接口的數(shù)據(jù)接收方法無法自動恢復正常,穩(wěn)定性較差。



技術實現(xiàn)要素:

本發(fā)明提供一種通信接口的數(shù)據(jù)接收方法和裝置,用于解決現(xiàn)有通信接口的數(shù)據(jù)接收方法穩(wěn)定性較低的問題。

第一方面,本發(fā)明提供一種通信接口的數(shù)據(jù)接收方法,應用于通過通信接口進行數(shù)據(jù)傳輸?shù)奈闯休d操作系統(tǒng)的通信設備,所述方法包括:

判斷在預設傳輸時長內(nèi),是否接收到一個數(shù)據(jù)幀;

若否,則舍棄當前接收周期內(nèi)已接收到的所有數(shù)據(jù),將完成標志設置為已完成狀態(tài);所述當前接收周期為上一次將完成標志設置為已完成狀態(tài)的時刻至本次將完成標志設置為已完成狀態(tài)的時刻所經(jīng)歷的時長;

若是,則根據(jù)所述數(shù)據(jù)幀的校驗和對所述數(shù)據(jù)幀進行校驗,若校驗未通過,則舍棄當前接收周期內(nèi)已接收到的所有數(shù)據(jù),將所述完成標志設置為已完成狀態(tài)。

如上所述的通信接口的數(shù)據(jù)接收方法,所述判斷在預設傳輸時長內(nèi),是否接收到一個數(shù)據(jù)幀,包括:

在確認接收到數(shù)據(jù)幀的幀頭時,控制計時器開始計時,將所述完成標志設置為未完成狀態(tài);

判斷在所述計時器的計時達到所述預設傳輸時長之前,是否完成所述數(shù)據(jù)幀的接收;

所述舍棄當前接收周期內(nèi)已接收到的所有數(shù)據(jù)之后,還包括:

將所述計時器清零。

如上所述的通信接口的數(shù)據(jù)接收方法,所述判斷在所述計時器的計時達到所述預設傳輸時長之前,是否完成所述數(shù)據(jù)幀的接收,包括:

自所述計時器開始計時起,在所述第一計時器的計時達到所述預設傳輸時長之前,判斷是否接收到用于表征所述數(shù)據(jù)幀的長度的長度數(shù)據(jù);

若否,則確定未完成所述數(shù)據(jù)幀的接收;

若是,則根據(jù)所述長度數(shù)據(jù),獲取所述數(shù)據(jù)幀的長度;

自接收到所述長度數(shù)據(jù)起,在所述計時器的計時達到所述預設傳輸時長之前,判斷接收到的數(shù)據(jù)的長度是否達到所述數(shù)據(jù)幀的長度;若否,則確定未完成所述數(shù)據(jù)幀的接收。

本發(fā)明實施例提供的通信接口的數(shù)據(jù)接收方法,通過在進行數(shù)據(jù)幀的接收時,判斷接收時長是否超過預設傳輸時長,使得通信接口可在通信異常時,放棄當前數(shù)據(jù)幀的接收,開始新的數(shù)據(jù)幀的接收,同時在完成了數(shù)據(jù)幀的接收后,進行校驗和校驗,確認接收到的數(shù)據(jù)幀為發(fā)送端發(fā)送的數(shù)據(jù)幀,因此,本發(fā)明實施例提供的通信接口的數(shù)據(jù)接收方法,在通信接口連接出現(xiàn)異常時,避免了通信設備的重新啟動,節(jié)約了故障處理時間,提高了通信接口的穩(wěn)定性,確保了通信數(shù)據(jù)的正確性。

第二方面,本發(fā)明提供一種通信接口的數(shù)據(jù)接收方法,應用于通過通信接口進行數(shù)據(jù)傳輸?shù)某休d操作系統(tǒng)的通信設備,所述方法包括:

獲取在上一接收周期內(nèi)接收到的所有數(shù)據(jù)和表示所述所有數(shù)據(jù)的總數(shù)量的計數(shù)器的計數(shù)值,所述上一接收周期為自上一次將完成標志設置為未完成狀態(tài)的時刻至上一次將所述完成標志設置為已完成狀態(tài)的時刻所經(jīng)歷的時長;

根據(jù)所述接收到的所有數(shù)據(jù)和所述計數(shù)值對所述所有數(shù)據(jù)進行校驗,判斷是否接收到一個填充數(shù)據(jù)幀;

若否,則舍棄上一接收周期內(nèi)接收到的所有數(shù)據(jù)。

如上所述的通信接口的數(shù)據(jù)接收方法,所述獲取在上一接收周期內(nèi)接收到的所有數(shù)據(jù)和表示所述所有數(shù)據(jù)的總數(shù)量的計數(shù)器的計數(shù)值,包括:

當所述完成標志為已完成狀態(tài)時,在確認接收到數(shù)據(jù)時,控制計時器開始計時和計數(shù)器開始計數(shù),將接收到的數(shù)據(jù)和所述計數(shù)器的計數(shù)值存儲在第一存儲模塊中,并將完成標志設置為未完成狀態(tài),所述計數(shù)器用于在每接收到一個數(shù)據(jù)時加1;

在所述計時器的計時達到所述預設傳輸時長時或所述計數(shù)值達到預設位數(shù)時,將存儲在所述第一存儲模塊中的所述計數(shù)值和接收到的所有數(shù)據(jù)轉(zhuǎn)存在第二存儲模塊中,將完成標志設置為已完成狀態(tài),將所述計時器和所述計數(shù)器清零,將所述第一存儲模塊清空。

如上所述的通信接口的數(shù)據(jù)接收方法,所述根據(jù)所述接收到的所有數(shù)據(jù)和所述計數(shù)值對所述所有數(shù)據(jù)進行校驗,判斷是否接收到一個填充數(shù)據(jù)幀,包括:

根據(jù)所述接收到的所有數(shù)據(jù)和所述計數(shù)值,對所述所有數(shù)據(jù)依次進行幀頭校驗、長度校驗、以及校驗和校驗;

若校驗未通過,則確定未接收到一個填充數(shù)據(jù)幀。

如上所述的通信接口的數(shù)據(jù)接收方法,所述方法還包括:

若確定接收到一個填充數(shù)據(jù)幀,則獲取所述填充數(shù)據(jù)幀的幀頭;

根據(jù)所述幀頭確定真正數(shù)據(jù)幀的長度;

根據(jù)所述真正數(shù)據(jù)幀的長度,在所述接收到的所有數(shù)據(jù)中讀取所述真正數(shù)據(jù)幀。

如上所述的通信接口的數(shù)據(jù)接收方法,所述方法還包括:

若確定接收到一個填充數(shù)據(jù)幀,則獲取所述填充數(shù)據(jù)幀中的用于表征真正數(shù)據(jù)幀的長度的長度數(shù)據(jù);

根據(jù)所述長度數(shù)據(jù)確定所述真正數(shù)據(jù)幀的長度;

根據(jù)所述真正數(shù)據(jù)幀的長度,在所述接收到的所有數(shù)據(jù)中讀取所述真正數(shù)據(jù)幀。

本發(fā)明實施例提供的通信接口的數(shù)據(jù)接收方法,通過在進行數(shù)據(jù)幀的接收時,判斷接收時長是否超過預設傳輸時長,使得通信接口可在接收時長過長時,停止當前數(shù)據(jù)的接收,并開始新的數(shù)據(jù)幀的接收,同時在完成了數(shù)據(jù)幀的接收后,進行校驗,確認接收到的數(shù)據(jù)幀為發(fā)送端發(fā)送的數(shù)據(jù)幀,因此,本發(fā)明實施例提供的通信接口的數(shù)據(jù)接收方法,在通信接口連接出現(xiàn)異常時,避免了通信設備的重新啟動,節(jié)約了故障處理時間,提高了通信接口的穩(wěn)定性,確保了通信數(shù)據(jù)的正確性。

下面介紹本發(fā)明實施例提供的通信接口的數(shù)據(jù)接收裝置,該裝置與方法一一對應,用以實現(xiàn)上述實施例中的通信接口的數(shù)據(jù)接收方法,具有相同的技術特征和技術效果,本發(fā)明實施例對此不再贅述。

第三方面,本發(fā)明提供一種通信接口的數(shù)據(jù)接收裝置,應用于通過通信接口進行數(shù)據(jù)傳輸?shù)奈闯休d操作系統(tǒng)的通信設備,所述裝置包括:

數(shù)據(jù)接收模塊,用于判斷在預設傳輸時長內(nèi),是否接收到一個數(shù)據(jù)幀;

清除模塊,用于在所述數(shù)據(jù)接收模塊確定未接收到一個數(shù)據(jù)幀時,舍棄當前接收周期內(nèi)已接收到的所有數(shù)據(jù),將完成標志設置為已完成狀態(tài);所述當前接收周期為上一次將完成標志設置為已完成狀態(tài)的時刻至本次將完成標志設置為已完成狀態(tài)的時刻所經(jīng)歷的時長;

校驗模塊,用于在所述數(shù)據(jù)接收模塊確定接收到一個數(shù)據(jù)幀時,根據(jù)所述數(shù)據(jù)幀的校驗和對所述數(shù)據(jù)幀進行校驗,若校驗未通過,則舍棄當前接收周期內(nèi)已接收到的所有數(shù)據(jù),將所述完成標志設置為已完成狀態(tài)。

第四方面,本發(fā)明提供一種通信接口的數(shù)據(jù)接收裝置,應用于通過通信接口進行數(shù)據(jù)傳輸?shù)某休d操作系統(tǒng)的通信設備,所述裝置包括:

數(shù)據(jù)獲取模塊,用于獲取在上一接收周期內(nèi)接收到的所有數(shù)據(jù)和表示所述所有數(shù)據(jù)的總數(shù)量的計數(shù)器的計數(shù)值,所述上一接收周期為自上一次將完成標志設置為未完成狀態(tài)的時刻至上一次將所述完成標志設置為已完成狀態(tài)的時刻所經(jīng)歷的時長;

數(shù)據(jù)校驗模塊,用于根據(jù)所述接收到的所有數(shù)據(jù)和所述計數(shù)值對所述所有數(shù)據(jù)進行校驗,判斷是否接收到一個填充數(shù)據(jù)幀;

清除模塊,用于在所述數(shù)據(jù)校驗模塊確定未接收到一個填充數(shù)據(jù)幀時,舍棄上一接收周期內(nèi)接收到的所有數(shù)據(jù)。

附圖說明

為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

圖1是本發(fā)明實施例一提供的通信接口的數(shù)據(jù)接收方法的流程示意圖;

圖2是本發(fā)明實施例二提供的通信接口的數(shù)據(jù)接收方法的流程示意圖;

圖3是本發(fā)明實施例三提供的通信接口的數(shù)據(jù)接收方法的流程示意圖;

圖4是本發(fā)明實施例四提供的通信接口的數(shù)據(jù)接收方法的流程示意圖;

圖5是本發(fā)明實施例五提供的通信接口的數(shù)據(jù)接收裝置的結(jié)構示意圖;

圖6是本發(fā)明實施例六提供的通信接口的數(shù)據(jù)接收裝置的結(jié)構示意圖。

具體實施方式

為使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。

現(xiàn)有通信接口在連接出現(xiàn)異常后,當恢復連接時,通信接口的數(shù)據(jù)傳輸無法自動恢復正常,需將通信接口所在的通信設備重新啟動,存在穩(wěn)定性較差的問題。針對上述問題,本發(fā)明實施例提供一種通信接口的數(shù)據(jù)接收方法,應用于通過通信接口進行數(shù)據(jù)傳輸?shù)耐ㄐ旁O備,對通信接口傳輸數(shù)據(jù)時同時進行時長檢測和數(shù)據(jù)檢測,以提高通信接口的穩(wěn)定性。

本發(fā)明針對通信接口所在的裝置是否承載有操作系統(tǒng),分別提出一種通信接口的數(shù)據(jù)接收方法,下面結(jié)合具體實施例,對本發(fā)明提供的通信接口的數(shù)據(jù)接收方法進行詳細說明。

一方面,當通信設備未承載操作系統(tǒng)時,示例性的,該通信設備可以為單片機,單片機可以設置在冰箱、空調(diào)、電視等大型家電設備上。圖1是本發(fā)明實施例一提供的通信接口的數(shù)據(jù)接收方法的流程示意圖。該方法的執(zhí)行主體為通信接口的數(shù)據(jù)接收裝置,該裝置可以通過軟件或硬件實現(xiàn),該裝置還可集成單片機中,本發(fā)明對此不做限定。如圖1所示,該方法包括:

步驟101、判斷在預設傳輸時長內(nèi),是否接收到一個數(shù)據(jù)幀;若否,則執(zhí)行步驟102;若是,則執(zhí)行步驟103;

步驟102、舍棄當前接收周期內(nèi)已接收到的所有數(shù)據(jù),將完成標志設置為已完成狀態(tài);

步驟103、根據(jù)數(shù)據(jù)幀的校驗和對數(shù)據(jù)幀進行校驗,若校驗未通過,則舍棄當前接收周期內(nèi)已接收到的所有數(shù)據(jù),將完成標志設置為已完成狀態(tài)。

其中,當前接收周期為上一次將完成標志設置為已完成狀態(tài)的時刻至本次將完成標志設置為已完成狀態(tài)的時刻所經(jīng)歷的時長。

當通信設備未承載操作系統(tǒng)時,通信接口接收數(shù)據(jù)幀的方式為一個字節(jié)一個字節(jié)的接收,一個字節(jié)包括8比特二進制數(shù)據(jù)。通信接口在接收到數(shù)據(jù)時,首先判斷該數(shù)據(jù)是否是表示一個數(shù)據(jù)幀的開始的幀頭;若是,則將下一次接收到的數(shù)據(jù)視為表示幀長度的長度數(shù)據(jù),根據(jù)長度數(shù)據(jù)即可得到當前幀頭對應的數(shù)據(jù)幀的長度,當接收完成該長度的數(shù)據(jù)時,則認為完成了數(shù)據(jù)幀的接收。

具體的,在步驟101中,通信接口的數(shù)據(jù)接收裝置在進行數(shù)據(jù)接收時,對數(shù)據(jù)幀的接收的持續(xù)時長進行判斷,判斷一個數(shù)據(jù)幀的接收時長是否在預設傳輸時長內(nèi)。預設傳輸時長通常根據(jù)通信接口的通信比特率和接收的最長幀數(shù)據(jù)的長度來獲取,示例性的,當通信的比特率為9600比特/秒,最長幀數(shù)據(jù)的長度為90字節(jié)時,可將預設傳輸時長設置為200毫秒。

當一個數(shù)據(jù)幀的接收時長超過預設傳輸時長時,執(zhí)行步驟102。具體的,在步驟102、當一個數(shù)據(jù)幀的接收時長超過預設傳輸時長時,可認為當前數(shù)據(jù)幀的接收出現(xiàn)異常,可舍棄當前數(shù)據(jù)幀已經(jīng)接收到的部分,并將表示當前數(shù)據(jù)幀的接收是否完成的完成標識設置為已完成狀態(tài),以使通信接口可以開始新的數(shù)據(jù)幀的接收,從而避免了通信接口一直處于占用狀態(tài),無法結(jié)束當前數(shù)據(jù)幀的接收,也無法開始新的數(shù)據(jù)幀的接收,進一步避免了通信接口所在的通信設備進行重新啟動。示例性的,根據(jù)數(shù)據(jù)接收方式,可將數(shù)據(jù)幀的接收過程劃分為一個個接收周期,從一次完成標識設置為已完成狀態(tài)到下一次完成標識設置為已完成狀態(tài)為一個接受周期。一個完整的接收周期包括數(shù)據(jù)幀的幀頭確認部分,幀頭確認后的數(shù)據(jù)接收部分;當確認接收到幀頭時,則將完成標識設置為未完成狀態(tài),當接收到幀長度的數(shù)據(jù)時,則認為接收完成,將完成標識設置為已完成狀態(tài)。每個接收周期的持續(xù)時間長短均不相同,預設傳輸時長是對幀頭確認后的數(shù)據(jù)接收部分的持續(xù)時長進行限定,當超過預設傳輸時長時仍未完成數(shù)據(jù)幀的接收,則舍棄當前接收周期內(nèi)已接收到的所有數(shù)據(jù),將完成標志設置為已完成狀態(tài)。

當在預設傳輸時長內(nèi)完成了一個數(shù)據(jù)幀的接收時,執(zhí)行步驟103。具體的,在步驟103中,當接收到符合幀長度的數(shù)據(jù)幀后,需對接收到的數(shù)據(jù)幀中的數(shù)據(jù)進行檢測,以避免傳輸過程中數(shù)據(jù)出現(xiàn)異常,示例性的,可根據(jù)數(shù)據(jù)幀的幀尾的校驗和位,對數(shù)據(jù)幀進行檢驗,例如,數(shù)據(jù)發(fā)送端欲傳輸10字節(jié)數(shù)據(jù)時,可在10字節(jié)數(shù)據(jù)之后,增加1字節(jié)的校驗和,校驗和根據(jù)該10字節(jié)數(shù)據(jù)生成,當10字節(jié)數(shù)據(jù)或校驗和被更改后,通信接口在進行校驗和校驗時,根據(jù)接收到的10字節(jié)數(shù)據(jù)生成的校驗和將與接收到的校驗和不符,即可認為校驗未通過。當校驗未通過,可認為數(shù)據(jù)幀傳輸過程中,數(shù)據(jù)發(fā)生了更改,則舍棄當前接收周期內(nèi)已接收到的所有數(shù)據(jù),并將完成標志設置為已完成狀態(tài)。具體的生成校驗和的方式、校驗方式可采用現(xiàn)有的校驗和校驗方法,本發(fā)明對此不做限定。

本發(fā)明實施例提供的通信接口的數(shù)據(jù)接收方法,通過在進行數(shù)據(jù)幀的接收時,判斷接收時長是否超過預設傳輸時長,使得通信接口可在通信異常時,放棄當前數(shù)據(jù)幀的接收,開始新的數(shù)據(jù)幀的接收,同時在完成了數(shù)據(jù)幀的接收后,進行校驗和校驗,確認接收到的數(shù)據(jù)幀為發(fā)送端發(fā)送的數(shù)據(jù)幀,因此,本發(fā)明實施例提供的通信接口的數(shù)據(jù)接收方法,在通信接口連接出現(xiàn)異常時,避免了通信設備的重新啟動,節(jié)約了故障處理時間,提高了通信接口的穩(wěn)定性,確保了通信數(shù)據(jù)的正確性。

進一步的,在圖1所示實施例的基礎上,對步驟101中的預設傳輸時長的計時進行詳細說明。判斷在預設傳輸時長內(nèi),是否接收到一個數(shù)據(jù)幀,具體包括:

步驟1011、在確認接收到數(shù)據(jù)幀的幀頭時,控制計時器開始計時,將完成標志設置為未完成狀態(tài);

步驟1012、判斷在計時器的計時達到預設傳輸時長之前,是否完成數(shù)據(jù)幀的接收。

在步驟102和步驟103中,在舍棄當前接收周期內(nèi)已接收到的所有數(shù)據(jù)的同時,將計時器清零。

具體的,當完成標志設置為已完成狀態(tài)后,通信接口開始判斷是否接收到幀頭,示例性的,幀頭可以為一字節(jié)或多字節(jié),以幀頭為兩字節(jié)為例,當通信接口接收到兩字節(jié)數(shù)據(jù)時,判斷該兩字節(jié)數(shù)據(jù)與預設幀頭是否一致,若一致則認為接收到的兩字節(jié)數(shù)據(jù)為幀頭,若不一致,則舍棄在先的一字節(jié)數(shù)據(jù),待再接收到一字節(jié)數(shù)據(jù)后,比較新的兩字節(jié)數(shù)據(jù)與預設幀頭是否一致,直至檢測獲取到幀頭。在幀頭之前接收到的數(shù)據(jù),由于不是需要發(fā)送給通信接收的數(shù)據(jù),因此均舍棄,并在檢測到幀頭之后控制計時器開始計時,將完成標志設置為未完成狀態(tài),表示開始一個數(shù)據(jù)幀的接收。然后判斷在計時器的計時達到預設傳輸時長之前,是否完成數(shù)據(jù)幀的接收。

當未完成數(shù)據(jù)幀的接收時,在將完成標志設置為已完成狀態(tài)的同時,還將計時器的計時清零。當完成數(shù)據(jù)幀的接收時,若數(shù)據(jù)幀校驗未通過,在將完成標志設置為已完成狀態(tài)的同時,也需將計時器的計時清零;若數(shù)據(jù)幀校驗通過,則將當前周期內(nèi)接收到的數(shù)據(jù)幀轉(zhuǎn)存在存儲模塊,以供通信裝置的其他程序使用該數(shù)據(jù)幀,并將完成標志設置為已完成狀態(tài)的同時,將計時器的計時清零。

進一步地,在上述實施例的基礎上,對步驟1012中的判斷是否完成數(shù)據(jù)幀的接收進行詳細說明。當計時器開始計時后,判斷在計時器的計時達到預設傳輸時長之前,是否完成數(shù)據(jù)幀的接收,具體包括:

步驟1013、自計時器開始計時起,在第一計時器的計時達到預設傳輸時長之前,判斷是否接收到用于表征數(shù)據(jù)幀的長度的長度數(shù)據(jù);若是,則執(zhí)行步驟1014;若否,則確定未完成數(shù)據(jù)幀的接收;

步驟1014、根據(jù)長度數(shù)據(jù),獲取數(shù)據(jù)幀的長度;

步驟1015、自接收到長度數(shù)據(jù)起,在計時器的計時達到預設傳輸時長之前,判斷接收到的數(shù)據(jù)的長度是否達到數(shù)據(jù)幀的長度;若否,則確定未完成數(shù)據(jù)幀的接收。

具體的,在步驟1013中,自計時器開始計時后,通信接口將最先接收到的數(shù)據(jù)作為數(shù)據(jù)幀的長度數(shù)據(jù),長度數(shù)據(jù)用于表征數(shù)據(jù)幀的長度,示例性的,長度數(shù)據(jù)可以為一字節(jié),也可以為多字節(jié)。確定在第一計時器的計時達到預設傳輸時長之前,是否接收到該長度數(shù)據(jù)。

當未接收到該長度數(shù)據(jù)時,則確定未完成數(shù)據(jù)幀的接收。例如長度數(shù)據(jù)為兩字節(jié),但是在預設傳輸時長內(nèi),只接收到1字節(jié)的數(shù)據(jù),則認為未接收到該長度數(shù)據(jù),進而無法再預設傳輸時長內(nèi),完成整個數(shù)據(jù)幀的接收。當接收到該長度數(shù)據(jù)時,則執(zhí)行步驟1014,根據(jù)長度數(shù)據(jù),獲取數(shù)據(jù)幀的長度。

具體的,在步驟1015中,自計時器開始計時器,計數(shù)器從0開始計數(shù),并當通信接口接收到一個數(shù)據(jù)時,計數(shù)器的數(shù)值加1。計數(shù)器累計自接收到長度數(shù)據(jù)起,接收了多少了個數(shù)據(jù),當計數(shù)器累計的數(shù)值達到數(shù)據(jù)幀的長度時,則確認完成了數(shù)據(jù)幀的接收,若在計時器的計時達到預設傳輸時長之前,計數(shù)器的數(shù)值未達到數(shù)據(jù)幀的長度;則確定未完成數(shù)據(jù)幀的接收。當完成數(shù)據(jù)幀的接收時,將計數(shù)器的數(shù)值清零。

下面結(jié)合圖2,以幀頭和長度數(shù)據(jù)均為一字節(jié)為例,說明本發(fā)明實施例實際應用于無操作系統(tǒng)的通信設備時,通信接口在接收到一字節(jié)數(shù)據(jù)時的具體處理過程。圖2是本發(fā)明實施例二提供的通信接口的數(shù)據(jù)接收方法的流程示意圖。如圖2所示,該方法包括:

步驟201、判斷幀頭標識是否為1;若否;則執(zhí)行步驟202;若是,則執(zhí)行步驟204;

步驟202、判斷接收到的數(shù)據(jù)與預設幀頭是否相同;若是,則執(zhí)行步驟203;若否;則執(zhí)行步驟209;

步驟203、保存幀頭,將幀頭標識設置為1,計時器開始計時;完成標識設置為0;執(zhí)行步驟209;

步驟204、判斷長度標識是否為1;若否;則執(zhí)行步驟205;若是,則執(zhí)行步驟206;

步驟205、保存長度數(shù)據(jù),將長度標識設置為1,計數(shù)器加1;執(zhí)行步驟209;

步驟206、計數(shù)器加1,判斷計數(shù)器數(shù)值是否小于數(shù)據(jù)幀的長度;若是,則執(zhí)行步驟207;若否;則執(zhí)行步驟208;

步驟207、保存數(shù)據(jù);執(zhí)行步驟209;

步驟208、保存數(shù)據(jù),計數(shù)器清零,計時器清零,幀頭標識設置為0,長度標識設置為0,完成標識設置為1;

步驟209、結(jié)束當前數(shù)據(jù)接收;

步驟2010、判斷計時器的計時是否超過預設傳輸時長;若是,則執(zhí)行步驟2011;

步驟2011、清除數(shù)據(jù),計數(shù)器清零,計時器清零,幀頭標識設置為0,長度標識設置為0,完成標識設置為1;執(zhí)行步驟204。

其中,步驟2010、步驟2011與步驟201至步驟208無時序關系。

其中,幀頭標識為1表示已接收到幀頭,幀頭標識為0表示未接收到幀頭;長度標識為1表示已接收到數(shù)據(jù)幀的長度數(shù)據(jù),長度標識為0表示未接收到數(shù)據(jù)幀的長度數(shù)據(jù);完成標識為1表示當前數(shù)據(jù)幀的接收已完成,完成標識為0表示當前數(shù)據(jù)幀的接收未完成。

另一方面,當通信設備承載有操作系統(tǒng)時,示例性的,該通信設備可以為設置有處理器的冰箱、空調(diào)、電視等智能家電設備。圖3是本發(fā)明實施例三提供的通信接口的數(shù)據(jù)接收方法的流程示意圖。該方法的執(zhí)行主體為通信接口的數(shù)據(jù)接收裝置,該裝置可以通過軟件或硬件實現(xiàn),本發(fā)明對此不做限定。如圖3所示,該方法包括:

步驟301、獲取在上一接收周期內(nèi)接收到的所有數(shù)據(jù)和表示所有數(shù)據(jù)的總數(shù)量的計數(shù)器的計數(shù)值;

步驟302、根據(jù)接收到的所有數(shù)據(jù)和計數(shù)值對所有數(shù)據(jù)進行校驗,判斷是否接收到一個填充數(shù)據(jù)幀;若否,則執(zhí)行步驟303;

步驟303、舍棄上一接收周期內(nèi)接收到的所有數(shù)據(jù)。

其中,接收周期為自上一次將完成標志設置為未完成狀態(tài)的時刻至上一次將完成標志設置為已完成狀態(tài)的時刻所經(jīng)歷的時長。

當通信設備承載有操作系統(tǒng)時,通信接口接收數(shù)據(jù)幀的方式為在通信接口完成預設位數(shù)的數(shù)據(jù)的接收,再判斷接收到的所有數(shù)據(jù)是否為一個數(shù)據(jù)幀。由于發(fā)送端發(fā)送的數(shù)據(jù)幀的位數(shù)可能小于通信接口約定的數(shù)據(jù)幀的預設位數(shù),故在發(fā)送端將欲發(fā)送的真正數(shù)據(jù)幀進行擴充,以得到滿足通信接口預定的預設位數(shù)的填充數(shù)據(jù)幀,示例性的,可在真正數(shù)據(jù)幀的末尾添加多個0以獲取填充數(shù)據(jù)幀。

具體的,在步驟301中,獲取通信接口在上一接收周期內(nèi)接收到的所有數(shù)據(jù)和計數(shù)器的計數(shù)值,計數(shù)值用于表示所有數(shù)據(jù)的總數(shù)量。接收周期自通信接口接收到第一數(shù)據(jù)時起,并在接收完成預設位數(shù)的數(shù)據(jù)后結(jié)束,當數(shù)據(jù)傳輸出現(xiàn)異常時,當當前數(shù)據(jù)幀的接收時長超過預設傳輸時長時,也結(jié)束接收周期,以使通信接口可以開始新的數(shù)據(jù)幀的接收。從而避免了通信接口一直處于占用狀態(tài),無法結(jié)束當前數(shù)據(jù)幀的接收,也無法開始新的數(shù)據(jù)幀的接收,進一步避免了通信接口所在的通信設備進行重新啟動。

具體的,在步驟302中,根據(jù)步驟301中接收到的所有數(shù)據(jù)和計數(shù)值對所有數(shù)據(jù)進行校驗,由于步驟301中接收到的數(shù)據(jù)可能為正常接收到的數(shù)據(jù),也可能為超過傳輸時長時非正常接收到的數(shù)據(jù),因此,需對接收到的數(shù)據(jù)進行校驗,確定是否接收到一個完整的填充數(shù)據(jù)幀。示例性的,可根據(jù)計數(shù)值與預設位數(shù)是否相同進行校驗。

當根據(jù)校驗結(jié)果確定并未接收到一個填充數(shù)據(jù)幀時,執(zhí)行步驟303,舍棄上一接收周期內(nèi)接收到的所有數(shù)據(jù)。

本發(fā)明實施例提供的通信接口的數(shù)據(jù)接收方法,通過在進行數(shù)據(jù)幀的接收時,判斷接收時長是否超過預設傳輸時長,使得通信接口可在接收時長過長時,停止當前數(shù)據(jù)的接收,并開始新的數(shù)據(jù)幀的接收,同時在完成了數(shù)據(jù)幀的接收后,進行校驗,確認接收到的數(shù)據(jù)幀為發(fā)送端發(fā)送的數(shù)據(jù)幀,因此,本發(fā)明實施例提供的通信接口的數(shù)據(jù)接收方法,在通信接口連接出現(xiàn)異常時,避免了通信設備的重新啟動,節(jié)約了故障處理時間,提高了通信接口的穩(wěn)定性,確保了通信數(shù)據(jù)的正確性。

進一步的,在圖3所示實施例的基礎上,對獲取上一接收周期內(nèi)接收到的所有數(shù)據(jù)進行詳細說明。獲取在上一接收周期內(nèi)接收到的所有數(shù)據(jù)和表示所述所有數(shù)據(jù)的總數(shù)量的計數(shù)器的計數(shù)值,具體包括:

步驟3011、當完成標志為已完成狀態(tài)時,在確認接收到數(shù)據(jù)時,控制計時器開始計時和計數(shù)器開始計數(shù),將接收到的數(shù)據(jù)和計數(shù)器的計數(shù)值存儲在第一存儲模塊中,并將完成標志設置為未完成狀態(tài),計數(shù)器用于在每接收到一個數(shù)據(jù)時加1;

步驟3012、在計時器的計時達到預設傳輸時長時或計數(shù)值達到預設位數(shù)時,將存儲在第一存儲模塊中的計數(shù)值和接收到的所有數(shù)據(jù)轉(zhuǎn)存在第二存儲模塊中,將完成標志設置為已完成狀態(tài),將計時器和計數(shù)器清零,將第一存儲模塊清空。

具體的,在步驟3011中,當通信接口完成一次數(shù)據(jù)幀的接收后,將完成標志設置為已完成狀態(tài)。當完成標志為已完成狀態(tài)時,在第一次接收到數(shù)據(jù)時,控制計時器開始計時,計數(shù)器開始計數(shù),將接收到的數(shù)據(jù)和計數(shù)器的計數(shù)值存儲在第一存儲模塊中,并將完成標志設置為未完成狀態(tài),計數(shù)器用于在每接收到一個數(shù)據(jù)時加1;第一存儲模塊可以為內(nèi)部存儲器或外部存儲器等具有存儲功能的單元。

具體的,步驟3012中,在計時器的計時達到預設傳輸時長時或計數(shù)值達到預設位數(shù)時,當前接收周期結(jié)束,將完成標志設置為已完成狀態(tài),并將存儲在第一存儲模塊中的計數(shù)值和接收到的所有數(shù)據(jù)轉(zhuǎn)存在第二存儲模塊中,將計時器和計數(shù)器清零,將第一存儲模塊清空,清空后的第一存儲模塊用于存儲下一接收周期內(nèi)接收到的數(shù)據(jù)。

進一步的,圖3所示實施例的基礎上,對步驟302中的數(shù)據(jù)校驗過程進行詳細說明,根據(jù)接收到的所有數(shù)據(jù)和計數(shù)值對所有數(shù)據(jù)進行校驗,判斷是否接收到一個填充數(shù)據(jù)幀,具體包括:

步驟3021、根據(jù)接收到的所有數(shù)據(jù)和計數(shù)值,對所有數(shù)據(jù)依次進行幀頭校驗、長度校驗、以及校驗和校驗;

步驟3022、若校驗未通過,則確定未接收到一個填充數(shù)據(jù)幀。

具體的,在步驟3021中,根據(jù)接收到的所有數(shù)據(jù)和計數(shù)值,對接收到的所有數(shù)據(jù)依次進行幀頭校驗、長度校驗、以及校驗和校驗,校驗方法與通信裝置中未承載操作系統(tǒng)時相同,本發(fā)明對此不再贅述。

具體的,在步驟3022中,當步驟3021中的校驗未通過時,則確定上一接收周期內(nèi)并未接收到一個完整的填充數(shù)據(jù)幀??蛇x的,當校驗通過時,則確定上一接收周期內(nèi)接收到了一個完整的填充數(shù)據(jù)幀。

進一步的,在圖3所示實施例的基礎上,當確定接收到一個填充數(shù)據(jù)幀時,本發(fā)明還包括從填充數(shù)據(jù)幀中獲取真正數(shù)據(jù)幀,以下為本發(fā)明提供的從填充數(shù)據(jù)幀中獲取真正數(shù)據(jù)幀的可選的實現(xiàn)方式:

一種可行的實現(xiàn)方式:

若確定接收到一個填充數(shù)據(jù)幀,則獲取填充數(shù)據(jù)幀的幀頭;

根據(jù)幀頭確定真正數(shù)據(jù)幀的長度;

根據(jù)真正數(shù)據(jù)幀的長度,在接收到的所有數(shù)據(jù)中讀取真正數(shù)據(jù)幀。

具體的,數(shù)據(jù)發(fā)送端在發(fā)送數(shù)據(jù)時,可根據(jù)真正數(shù)據(jù)幀的長度,確定填充數(shù)據(jù)幀的幀頭,例如,當幀頭為0x66時,代表真正數(shù)據(jù)幀的長度為60字節(jié),當幀頭為0x68時,代表真正數(shù)據(jù)幀的長度為80字節(jié)。通信接口端存儲有幀頭與長度的對應關系。當通信接口確定接收到一個填充數(shù)據(jù)幀時,則獲取填充數(shù)據(jù)幀的幀頭,再根據(jù)幀頭與長度的對應關系,確定真正數(shù)據(jù)幀的長度,最后根據(jù)真正數(shù)據(jù)幀的長度,在接收到的填充數(shù)據(jù)幀中讀取真正數(shù)據(jù)幀。

另一種可行的實現(xiàn)方式:

若確定接收到一個填充數(shù)據(jù)幀,則獲取填充數(shù)據(jù)幀中的用于表征真正數(shù)據(jù)幀的長度的長度數(shù)據(jù);

根據(jù)長度數(shù)據(jù)確定真正數(shù)據(jù)幀的長度;

根據(jù)真正數(shù)據(jù)幀的長度,在接收到的所有數(shù)據(jù)中讀取真正數(shù)據(jù)幀。

具體的,數(shù)據(jù)發(fā)送端在將真正數(shù)據(jù)幀填充,得到填充數(shù)據(jù)幀時,在填充數(shù)據(jù)幀的長度數(shù)據(jù)之后,增加一位長度數(shù)據(jù),用以表示真正數(shù)據(jù)幀的長度。當通信接口確定接收到一個填充數(shù)據(jù)幀時,則獲取填充數(shù)據(jù)幀中用于表征真正數(shù)據(jù)幀的長度的長度數(shù)據(jù),再根據(jù)該長度數(shù)據(jù)確定真正數(shù)據(jù)幀的長度,最后根據(jù)真正數(shù)據(jù)幀的長度,在接收到的填充數(shù)據(jù)幀中讀取真正數(shù)據(jù)幀。

下面結(jié)合圖4,采用具體實施例,說明本發(fā)明實施例實際應用于有操作系統(tǒng)的通信設備時,通信接口在進行數(shù)據(jù)接收時的具體處理過程。圖4是本發(fā)明實施例四提供的通信接口的數(shù)據(jù)接收方法的流程示意圖。如圖4所示,該方法包括:

步驟001、判斷完成標志是否為1;若是,則執(zhí)行步驟002;若否,則執(zhí)行步驟003;

步驟002、存儲數(shù)據(jù),將完成標志設置為0,計時器開始計時,計數(shù)器開始計數(shù);執(zhí)行步驟005;

步驟003、存儲數(shù)據(jù),計數(shù)器加1,判斷計數(shù)器的計數(shù)值是否小于預設位數(shù);若否,則執(zhí)行步驟004;若是,則執(zhí)行步驟005;

步驟004、將存儲的所有數(shù)據(jù)轉(zhuǎn)存,將完成標志設置為1,將計時器和計數(shù)器清零;

步驟005、結(jié)束當前數(shù)據(jù)接收;

步驟000、判斷計時器的計時是否超過預設傳輸時長;若是,則執(zhí)行步驟004;

其中,步驟000與步驟001至步驟003沒有時序關系。在步驟004之后,該方法還包括:

步驟401、判斷填充數(shù)據(jù)幀的幀頭與預設幀頭是否相同;若是,則執(zhí)行步驟402;若否,則執(zhí)行步驟405;

步驟402、判斷填充數(shù)據(jù)幀的幀長度與計數(shù)器的計數(shù)值是否相同;若是,則執(zhí)行步驟403;若否,則執(zhí)行步驟405;

步驟403、判斷填充數(shù)據(jù)幀的校驗和是否正確;若是,則執(zhí)行步驟404;若否,則執(zhí)行步驟405;

步驟404、根據(jù)真正數(shù)據(jù)幀的長度獲取正在數(shù)據(jù)幀,并將真正數(shù)據(jù)幀轉(zhuǎn)存;

步驟405、清空第二存儲模塊。

其中,完成標識為1表示當前數(shù)據(jù)幀的接收已完成,完成標識為0表示當前數(shù)據(jù)幀的接收未完成。

本發(fā)明實施例還提供一種通信接口的數(shù)據(jù)接收裝置,用以執(zhí)行如上所述的方法實施例,具有相同的技術特征和技術效果,本發(fā)明對此不再贅述。

圖5是本發(fā)明實施例五提供的通信接口的數(shù)據(jù)接收裝置的結(jié)構示意圖。如圖5所示,當該裝置應用于通過通信接口進行數(shù)據(jù)傳輸?shù)奈闯休d操作系統(tǒng)的通信設備時,該裝置包括:

數(shù)據(jù)接收模塊501,用于判斷在預設傳輸時長內(nèi),是否接收到一個數(shù)據(jù)幀;

清除模塊502,用于在數(shù)據(jù)接收模塊501確定未接收到一個數(shù)據(jù)幀時,舍棄當前接收周期內(nèi)已接收到的所有數(shù)據(jù),將完成標志設置為已完成狀態(tài);當前接收周期為上一次將完成標志設置為已完成狀態(tài)的時刻至本次將完成標志設置為已完成狀態(tài)的時刻所經(jīng)歷的時長;

校驗模塊503,用于在數(shù)據(jù)接收模塊501確定接收到一個數(shù)據(jù)幀時,根據(jù)數(shù)據(jù)幀的校驗和對數(shù)據(jù)幀進行校驗,若校驗未通過,則舍棄當前接收周期內(nèi)已接收到的所有數(shù)據(jù),將完成標志設置為已完成狀態(tài)。

可選的,數(shù)據(jù)接收模塊501具體用于,在確認接收到數(shù)據(jù)幀的幀頭時,控制計時器開始計時,將完成標志設置為未完成狀態(tài);判斷在計時器的計時達到預設傳輸時長之前,是否完成數(shù)據(jù)幀的接收;

清除模塊502還用于在舍棄當前接收周期內(nèi)已接收到的所有數(shù)據(jù)之后,將計時器清零。

校驗模塊503還用于在舍棄當前接收周期內(nèi)已接收到的所有數(shù)據(jù)之后,將計時器清零。

可選的,數(shù)據(jù)接收模塊501具體用于:

自計時器開始計時起,在第一計時器的計時達到預設傳輸時長之前,判斷是否接收到用于表征數(shù)據(jù)幀的長度的長度數(shù)據(jù);

若否,則確定未完成數(shù)據(jù)幀的接收;

若是,則根據(jù)長度數(shù)據(jù),獲取數(shù)據(jù)幀的長度;

自接收到長度數(shù)據(jù)起,在計時器的計時達到預設傳輸時長之前,判斷接收到的數(shù)據(jù)的長度是否達到數(shù)據(jù)幀的長度;若否,則確定未完成數(shù)據(jù)幀的接收。

圖6是本發(fā)明實施例六提供的通信接口的數(shù)據(jù)接收裝置的結(jié)構示意圖。如圖6所示,當該裝置應用于通過通信接口進行數(shù)據(jù)傳輸?shù)某休d操作系統(tǒng)的通信設備時,該裝置包括:

數(shù)據(jù)獲取模塊601,用于獲取在上一接收周期內(nèi)接收到的所有數(shù)據(jù)和表示所有數(shù)據(jù)的總數(shù)量的計數(shù)器的計數(shù)值,上一接收周期為自上一次將完成標志設置為未完成狀態(tài)的時刻至上一次將完成標志設置為已完成狀態(tài)的時刻所經(jīng)歷的時長;

數(shù)據(jù)校驗模塊602,用于根據(jù)接收到的所有數(shù)據(jù)和計數(shù)值對所有數(shù)據(jù)進行校驗,判斷是否接收到一個填充數(shù)據(jù)幀;

清除模塊603,用于在數(shù)據(jù)校驗模塊602確定未接收到一個填充數(shù)據(jù)幀時,舍棄上一接收周期內(nèi)接收到的所有數(shù)據(jù)。

可選的,數(shù)據(jù)獲取模塊601具體用于:

當完成標志為已完成狀態(tài)時,在確認接收到數(shù)據(jù)時,控制計時器開始計時和計數(shù)器開始計數(shù),將接收到的數(shù)據(jù)和計數(shù)器的計數(shù)值存儲在第一存儲模塊中,并將完成標志設置為未完成狀態(tài),計數(shù)器用于在每接收到一個數(shù)據(jù)時加1;

在計時器的計時達到預設傳輸時長時或計數(shù)值達到預設位數(shù)時,將存儲在第一存儲模塊中的計數(shù)值和接收到的所有數(shù)據(jù)轉(zhuǎn)存在第二存儲模塊中,將完成標志設置為已完成狀態(tài),將計時器和計數(shù)器清零,將第一存儲模塊清空。

可選的,數(shù)據(jù)校驗模塊602具體用于:

根據(jù)接收到的所有數(shù)據(jù)和計數(shù)值,對所有數(shù)據(jù)依次進行幀頭校驗、長度校驗、以及校驗和校驗;

若校驗未通過,則確定未接收到一個填充數(shù)據(jù)幀。

可選的,該裝置還包括真正數(shù)據(jù)幀獲取模塊,用于:

若確定接收到一個填充數(shù)據(jù)幀,則獲取填充數(shù)據(jù)幀的幀頭;

根據(jù)幀頭確定真正數(shù)據(jù)幀的長度;

根據(jù)真正數(shù)據(jù)幀的長度,在接收到的所有數(shù)據(jù)中讀取真正數(shù)據(jù)幀。

選的,該裝置還包括真正數(shù)據(jù)幀獲取模塊,用于:

若確定接收到一個填充數(shù)據(jù)幀,則獲取填充數(shù)據(jù)幀中的用于表征真正數(shù)據(jù)幀的長度的長度數(shù)據(jù);

根據(jù)長度數(shù)據(jù)確定真正數(shù)據(jù)幀的長度;

根據(jù)真正數(shù)據(jù)幀的長度,在接收到的所有數(shù)據(jù)中讀取真正數(shù)據(jù)幀。

本領域普通技術人員可以理解:實現(xiàn)上述各方法實施例的全部或部分步驟可以通過程序指令相關的硬件來完成。前述的程序可以存儲于一計算機可讀取存儲介質(zhì)中。該程序在執(zhí)行時,執(zhí)行包括上述各方法實施例的步驟;而前述的存儲介質(zhì)包括:ROM、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。

最后應說明的是:以上各實施例僅用以說明本發(fā)明的技術方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分或者全部技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質(zhì)脫離本發(fā)明各實施例技術方案的范圍。

當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
汾西县| 兴城市| 临汾市| 甘德县| 五寨县| 东明县| 额济纳旗| 仲巴县| 内乡县| 宝山区| 和田县| 静宁县| 即墨市| 府谷县| 江门市| 南丹县| 泰安市| 安福县| 班戈县| 陇川县| 江西省| 临猗县| 黔江区| 甘孜| 安顺市| 张家川| 孙吴县| 吉安市| 昭苏县| 汉沽区| 五大连池市| 龙门县| 临沧市| 呼和浩特市| 桂东县| 个旧市| 青川县| 临颍县| 柞水县| 克拉玛依市| 新田县|