欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

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

文檔序號(hào):12477440閱讀:320來(lái)源:國(guó)知局
通信接口的數(shù)據(jù)接收方法和裝置與流程

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



背景技術(shù):

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

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



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

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

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

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

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

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

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

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

判斷在所述計(jì)時(shí)器的計(jì)時(shí)達(dá)到所述預(yù)設(shè)傳輸時(shí)長(zhǎng)之前,是否完成所述數(shù)據(jù)幀的接收;

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

將所述計(jì)時(shí)器清零。

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

自所述計(jì)時(shí)器開(kāi)始計(jì)時(shí)起,在所述第一計(jì)時(shí)器的計(jì)時(shí)達(dá)到所述預(yù)設(shè)傳輸時(shí)長(zhǎng)之前,判斷是否接收到用于表征所述數(shù)據(jù)幀的長(zhǎng)度的長(zhǎng)度數(shù)據(jù);

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

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

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

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

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

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

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

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

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

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

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

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

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

若校驗(yàn)未通過(guò),則確定未接收到一個(gè)填充數(shù)據(jù)幀。

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

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

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

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

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

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

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

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

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

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

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

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

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

校驗(yàn)?zāi)K,用于在所述數(shù)據(jù)接收模塊確定接收到一個(gè)數(shù)據(jù)幀時(shí),根據(jù)所述數(shù)據(jù)幀的校驗(yàn)和對(duì)所述數(shù)據(jù)幀進(jìn)行校驗(yàn),若校驗(yàn)未通過(guò),則舍棄當(dāng)前接收周期內(nèi)已接收到的所有數(shù)據(jù),將所述完成標(biāo)志設(shè)置為已完成狀態(tài)。

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

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

數(shù)據(jù)校驗(yàn)?zāi)K,用于根據(jù)所述接收到的所有數(shù)據(jù)和所述計(jì)數(shù)值對(duì)所述所有數(shù)據(jù)進(jìn)行校驗(yàn),判斷是否接收到一個(gè)填充數(shù)據(jù)幀;

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

附圖說(shuō)明

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

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

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

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

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

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

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

具體實(shí)施方式

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

進(jìn)一步地,在上述實(shí)施例的基礎(chǔ)上,對(duì)步驟1012中的判斷是否完成數(shù)據(jù)幀的接收進(jìn)行詳細(xì)說(shuō)明。當(dāng)計(jì)時(shí)器開(kāi)始計(jì)時(shí)后,判斷在計(jì)時(shí)器的計(jì)時(shí)達(dá)到預(yù)設(shè)傳輸時(shí)長(zhǎng)之前,是否完成數(shù)據(jù)幀的接收,具體包括:

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

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

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

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

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

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

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

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

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

步驟203、保存幀頭,將幀頭標(biāo)識(shí)設(shè)置為1,計(jì)時(shí)器開(kāi)始計(jì)時(shí);完成標(biāo)識(shí)設(shè)置為0;執(zhí)行步驟209;

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

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

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

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

步驟208、保存數(shù)據(jù),計(jì)數(shù)器清零,計(jì)時(shí)器清零,幀頭標(biāo)識(shí)設(shè)置為0,長(zhǎng)度標(biāo)識(shí)設(shè)置為0,完成標(biāo)識(shí)設(shè)置為1;

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

步驟2010、判斷計(jì)時(shí)器的計(jì)時(shí)是否超過(guò)預(yù)設(shè)傳輸時(shí)長(zhǎng);若是,則執(zhí)行步驟2011;

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

其中,步驟2010、步驟2011與步驟201至步驟208無(wú)時(shí)序關(guān)系。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

進(jìn)一步的,圖3所示實(shí)施例的基礎(chǔ)上,對(duì)步驟302中的數(shù)據(jù)校驗(yàn)過(guò)程進(jìn)行詳細(xì)說(shuō)明,根據(jù)接收到的所有數(shù)據(jù)和計(jì)數(shù)值對(duì)所有數(shù)據(jù)進(jìn)行校驗(yàn),判斷是否接收到一個(gè)填充數(shù)據(jù)幀,具體包括:

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

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

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

具體的,在步驟3022中,當(dāng)步驟3021中的校驗(yàn)未通過(guò)時(shí),則確定上一接收周期內(nèi)并未接收到一個(gè)完整的填充數(shù)據(jù)幀。可選的,當(dāng)校驗(yàn)通過(guò)時(shí),則確定上一接收周期內(nèi)接收到了一個(gè)完整的填充數(shù)據(jù)幀。

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

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

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

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

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

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

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

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

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

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

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

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

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

步驟002、存儲(chǔ)數(shù)據(jù),將完成標(biāo)志設(shè)置為0,計(jì)時(shí)器開(kāi)始計(jì)時(shí),計(jì)數(shù)器開(kāi)始計(jì)數(shù);執(zhí)行步驟005;

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

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

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

步驟000、判斷計(jì)時(shí)器的計(jì)時(shí)是否超過(guò)預(yù)設(shè)傳輸時(shí)長(zhǎng);若是,則執(zhí)行步驟004;

其中,步驟000與步驟001至步驟003沒(méi)有時(shí)序關(guān)系。在步驟004之后,該方法還包括:

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

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

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

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

步驟405、清空第二存儲(chǔ)模塊。

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

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

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

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

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

校驗(yàn)?zāi)K503,用于在數(shù)據(jù)接收模塊501確定接收到一個(gè)數(shù)據(jù)幀時(shí),根據(jù)數(shù)據(jù)幀的校驗(yàn)和對(duì)數(shù)據(jù)幀進(jìn)行校驗(yàn),若校驗(yàn)未通過(guò),則舍棄當(dāng)前接收周期內(nèi)已接收到的所有數(shù)據(jù),將完成標(biāo)志設(shè)置為已完成狀態(tài)。

可選的,數(shù)據(jù)接收模塊501具體用于,在確認(rèn)接收到數(shù)據(jù)幀的幀頭時(shí),控制計(jì)時(shí)器開(kāi)始計(jì)時(shí),將完成標(biāo)志設(shè)置為未完成狀態(tài);判斷在計(jì)時(shí)器的計(jì)時(shí)達(dá)到預(yù)設(shè)傳輸時(shí)長(zhǎng)之前,是否完成數(shù)據(jù)幀的接收;

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

校驗(yàn)?zāi)K503還用于在舍棄當(dāng)前接收周期內(nèi)已接收到的所有數(shù)據(jù)之后,將計(jì)時(shí)器清零。

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

自計(jì)時(shí)器開(kāi)始計(jì)時(shí)起,在第一計(jì)時(shí)器的計(jì)時(shí)達(dá)到預(yù)設(shè)傳輸時(shí)長(zhǎng)之前,判斷是否接收到用于表征數(shù)據(jù)幀的長(zhǎng)度的長(zhǎng)度數(shù)據(jù);

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

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

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

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

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

數(shù)據(jù)校驗(yàn)?zāi)K602,用于根據(jù)接收到的所有數(shù)據(jù)和計(jì)數(shù)值對(duì)所有數(shù)據(jù)進(jìn)行校驗(yàn),判斷是否接收到一個(gè)填充數(shù)據(jù)幀;

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

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

當(dāng)完成標(biāo)志為已完成狀態(tài)時(shí),在確認(rèn)接收到數(shù)據(jù)時(shí),控制計(jì)時(shí)器開(kāi)始計(jì)時(shí)和計(jì)數(shù)器開(kāi)始計(jì)數(shù),將接收到的數(shù)據(jù)和計(jì)數(shù)器的計(jì)數(shù)值存儲(chǔ)在第一存儲(chǔ)模塊中,并將完成標(biāo)志設(shè)置為未完成狀態(tài),計(jì)數(shù)器用于在每接收到一個(gè)數(shù)據(jù)時(shí)加1;

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

可選的,數(shù)據(jù)校驗(yàn)?zāi)K602具體用于:

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

若校驗(yàn)未通過(guò),則確定未接收到一個(gè)填充數(shù)據(jù)幀。

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

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

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

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

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

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

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

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

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

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

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
景谷| 漯河市| 三台县| 南宫市| 高陵县| 静宁县| 静安区| 华容县| 辽宁省| 太康县| 乃东县| 宁河县| 扬州市| 湖州市| 高平市| 神木县| 雷波县| 南康市| 黄浦区| 托克逊县| 城固县| 永昌县| 武川县| 论坛| 湘阴县| 武宣县| 千阳县| 子洲县| 库尔勒市| 永清县| 东方市| 卫辉市| 南昌县| 郓城县| 会昌县| 琼结县| 工布江达县| 绥德县| 红原县| 南开区| 西吉县|