一種用于車(chē)載終端的通信方法及系統(tǒng)的制作方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種用于車(chē)載終端的發(fā)送數(shù)據(jù)的通信方法,其包括以下步驟:S101.調(diào)用要完成功能的應(yīng)用程序接口以形成向下層發(fā)送的命令內(nèi)容;S102.對(duì)所述命令內(nèi)容進(jìn)行封裝組成一數(shù)據(jù)幀;S103.發(fā)送所述數(shù)據(jù)幀,并將其存入本地的隊(duì)列中;S104.對(duì)存入本地隊(duì)列中的各個(gè)數(shù)據(jù)幀標(biāo)記超時(shí)時(shí)長(zhǎng)和重發(fā)次數(shù);S105.經(jīng)過(guò)一定時(shí)間間隔后,查詢(xún)是否接收到下層返回的針對(duì)所述數(shù)據(jù)幀的ACK消息,如果接收到,則從所述隊(duì)列中刪除所述數(shù)據(jù)幀,如果未接受到ACK消息或者接收到了NACK消息,則基于所述重發(fā)次數(shù)來(lái)重新發(fā)送所述數(shù)據(jù)幀,并更新所述重發(fā)次數(shù)和超時(shí)時(shí)長(zhǎng)。本發(fā)明通過(guò)增加通信數(shù)據(jù)的重發(fā)機(jī)制,提高了數(shù)據(jù)傳輸?shù)目煽啃耘c有效性。
【專(zhuān)利說(shuō)明】一種用于車(chē)載終端的通信方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信【技術(shù)領(lǐng)域】,具體地說(shuō),涉及一種用于車(chē)載終端的通信方法及系統(tǒng)?!颈尘凹夹g(shù)】
[0002]在車(chē)載終端行業(yè)內(nèi),基本上所有的串口通信機(jī)制都沒(méi)有增加可靠性的實(shí)現(xiàn)。隨著技術(shù)的不斷發(fā)展,有越來(lái)越多的模塊和新的功能增加到車(chē)載終端上,這就對(duì)通信的可靠性要求越來(lái)越高。而且,現(xiàn)在的車(chē)載終端已經(jīng)發(fā)現(xiàn)了各種由于通信的不可靠導(dǎo)致的系統(tǒng)不穩(wěn)定的情況,使得整個(gè)產(chǎn)品的可靠性降低。由于車(chē)載終端是應(yīng)用在汽車(chē)上的產(chǎn)品,它的可靠性很可能直接關(guān)系到車(chē)內(nèi)人員的安全問(wèn)題,所以必須提出新的解決方案來(lái)處理這些問(wèn)題。
[0003]目前,存在一種將通信指令按重要性分類(lèi),并對(duì)重要指令或者說(shuō)是關(guān)鍵的指令無(wú)條件重發(fā)若干次(如10次),而對(duì)于不重要指令則直接傳給接受方,如圖1所示。雖然這種解決方案在一定程度上起到作用,但是它的問(wèn)題也很明顯,即存在一定的盲目性。一方面,有可能不重要的指令沒(méi)收到,就丟失了,只是不會(huì)影響整個(gè)系統(tǒng)的穩(wěn)定性,但是這一次的操作就失效了。另一方面,還可能重要指令對(duì)方已經(jīng)收到了,但它還是要不停地發(fā),這樣造成了本就通信速率不高的串口傳輸了大量的冗余數(shù)據(jù),造成通信的有效性降低,效率降低。
[0004]為此,需要設(shè)計(jì)一種可靠的通信方法和系統(tǒng)從而提高整機(jī)的可靠性與安全性。
【發(fā)明內(nèi)容】
[0005]本發(fā)明針對(duì)汽車(chē)的電路工作環(huán)境比較差、電路干擾很多、經(jīng)常導(dǎo)致串口數(shù)據(jù)傳輸出錯(cuò)的問(wèn)題,提供了一種用于車(chē)載終端的發(fā)送數(shù)據(jù)的通信方法,該方法包括以下步驟:
[0006]S101、調(diào)用要完成功能的應(yīng)用程序接口以形成向下層發(fā)送的命令內(nèi)容;
[0007]S102、對(duì)所述命令內(nèi)容進(jìn)行封裝組成一數(shù)據(jù)幀;
[0008]S103、發(fā)送所述數(shù)據(jù)幀,并將其存入本地的隊(duì)列中;
[0009]S104、對(duì)存入本地隊(duì)列中的各個(gè)數(shù)據(jù)幀標(biāo)記超時(shí)時(shí)長(zhǎng)和重發(fā)次數(shù);
[0010]S105、經(jīng)過(guò)一定時(shí)間間隔后,查詢(xún)是否接收到下層返回的針對(duì)所述數(shù)據(jù)幀的ACK消息,如果接收到,則從所述隊(duì)列中刪除所述數(shù)據(jù)幀,如果未接受到ACK消息或者接收到了NACK消息,則基于所述重發(fā)次數(shù)來(lái)重新發(fā)送所述數(shù)據(jù)幀,并更新所述重發(fā)次數(shù)和超時(shí)時(shí)長(zhǎng)。
[0011]在本發(fā)明的一個(gè)實(shí)施例中,在步驟S102中,通過(guò)調(diào)用發(fā)送數(shù)據(jù)的功能函數(shù)對(duì)所述命令內(nèi)容進(jìn)行進(jìn)一步的封裝,在所述命令內(nèi)容前增加頭部以及在所述命令后增加尾部。
[0012]在本發(fā)明的另一個(gè)實(shí)施例中,所述頭部包括同步幀頭、長(zhǎng)度、幀數(shù)據(jù)編號(hào)、標(biāo)志位和類(lèi)型。
[0013]在本發(fā)明的一個(gè)實(shí)施例中,所述尾部包括校驗(yàn)碼。
[0014]在本發(fā)明的一個(gè)實(shí)施例中,在步驟S105中,更新所述重發(fā)次數(shù)為將所述重發(fā)次數(shù)進(jìn)行遞減。
[0015]在本發(fā)明的一個(gè)實(shí)施例中,在步驟S105中,當(dāng)重發(fā)次數(shù)為O次時(shí),不發(fā)送所述數(shù)據(jù)幀,并從所述隊(duì)列中刪除所述數(shù)據(jù)幀,從而將其做丟棄處理。[0016]根據(jù)本發(fā)明的一個(gè)方面,還提供了一種用于車(chē)載終端的接收數(shù)據(jù)的通信方法,其包括以下步驟:
[0017]S201、接收按照上述任一項(xiàng)所述的通信方法發(fā)送的含有命令內(nèi)容的數(shù)據(jù)幀,并進(jìn)行校驗(yàn),如果校驗(yàn)正確,則向上層返回ACK消息;
[0018]S202、按照一系列協(xié)議規(guī)范解析所述數(shù)據(jù)幀,從而得到所述命令內(nèi)容;
[0019]S203、根據(jù)所述命令內(nèi)容執(zhí)行相應(yīng)操作。
[0020]在本發(fā)明方法的一個(gè)實(shí)施例中,在步驟S202中,按照串口協(xié)議規(guī)范解析所述數(shù)據(jù)幀,去除串口協(xié)議中規(guī)定的頭部和尾部,其中所述頭部包括同步幀頭、長(zhǎng)度、幀數(shù)據(jù)編號(hào)、標(biāo)志位和類(lèi)型。
[0021]在本發(fā)明的一個(gè)實(shí)施例中,按照幀數(shù)據(jù)編號(hào)將所述數(shù)據(jù)幀中的數(shù)據(jù)分發(fā)給對(duì)應(yīng)的子協(xié)議,再由所述子協(xié)議將所述數(shù)據(jù)解析為所述命令內(nèi)容。
[0022]在本發(fā)明的一個(gè)實(shí)施例中,如果校驗(yàn)不正確,則向上層返回NACK消息請(qǐng)求重新發(fā)送所述數(shù)據(jù)幀。
[0023]本發(fā)明帶來(lái)了以下有益效果:本發(fā)明通過(guò)增加通信數(shù)據(jù)的重發(fā)機(jī)制,提高了數(shù)據(jù)傳輸?shù)目煽啃耘c有效性。
[0024]本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的說(shuō)明書(shū)中闡述,并且,部分地從說(shuō)明書(shū)中變得顯而易見(jiàn),或者通過(guò)實(shí)施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點(diǎn)可通過(guò)在說(shuō)明書(shū)、權(quán)利要求書(shū)以及附圖中所特別指出的結(jié)構(gòu)來(lái)實(shí)現(xiàn)和獲得。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0025]圖1是現(xiàn)有技術(shù)中的一種通信方式的流程圖;
[0026]圖2是一種重傳機(jī)制的數(shù)據(jù)結(jié)構(gòu)形式示意圖;
[0027]圖3是根據(jù)本發(fā)明的方法在ARM端發(fā)送數(shù)據(jù)的流程圖;
[0028]圖4是根據(jù)本發(fā)明的方法在ARM和MCU中實(shí)現(xiàn)數(shù)據(jù)收發(fā)的流程圖。
【具體實(shí)施方式】
[0029]以下將結(jié)合附圖及實(shí)施例來(lái)詳細(xì)說(shuō)明本發(fā)明的實(shí)施方式,借此對(duì)本發(fā)明如何應(yīng)用技術(shù)手段來(lái)解決技術(shù)問(wèn)題,并達(dá)成技術(shù)效果的實(shí)現(xiàn)過(guò)程能充分理解并據(jù)以實(shí)施。需要說(shuō)明的是,只要不構(gòu)成沖突,本發(fā)明中的各個(gè)實(shí)施例以及各實(shí)施例中的各個(gè)特征可以相互結(jié)合,所形成的技術(shù)方案均在本發(fā)明的保護(hù)范圍之內(nèi)。
[0030]另外,在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
[0031]本發(fā)明的實(shí)施例基于串口多層協(xié)議,并采用一種重傳機(jī)制來(lái)保證數(shù)據(jù)傳輸?shù)目煽啃?。其中,串口多層協(xié)議是一種通信協(xié)議,通過(guò)定義串口通信數(shù)據(jù)的幀格式和數(shù)據(jù)收發(fā)處理機(jī)制來(lái)實(shí)現(xiàn)數(shù)據(jù)的有效通信。而重傳機(jī)制是用來(lái)解決協(xié)議中傳輸過(guò)程中數(shù)據(jù)出錯(cuò)問(wèn)題的一種有效機(jī)制。當(dāng)數(shù)據(jù)傳輸出現(xiàn)丟幀或者是錯(cuò)位的時(shí)候,會(huì)主動(dòng)重傳或者被請(qǐng)求重傳。
[0032]在本發(fā)明的重傳機(jī)制中,發(fā)送部分包括將上層應(yīng)用的命令請(qǐng)求通過(guò)JNI (JavaNative Interface, Java本機(jī)接口)傳送到Native層。Native層負(fù)責(zé)將請(qǐng)求的命令轉(zhuǎn)換為子協(xié)議的數(shù)據(jù)格式,然后交給下一層子協(xié)議層為數(shù)據(jù)加子協(xié)議頭,繼續(xù)傳至下一層串口協(xié)議層,加上串口協(xié)議頭部和校驗(yàn)碼構(gòu)成一個(gè)完整的數(shù)據(jù)幀由串口發(fā)送給下位機(jī)如微控制單元MCU。如果MCU收到該數(shù)據(jù)幀,就會(huì)發(fā)送一條確認(rèn)信息ACK。如果在規(guī)定時(shí)間里,上位機(jī)(本發(fā)明采用RISC處理器ARM實(shí)現(xiàn))未收到MCU的應(yīng)答ACK消息,說(shuō)明數(shù)據(jù)丟失或者傳輸過(guò)程中出錯(cuò),上位機(jī)再重新發(fā)送數(shù)據(jù)。如此重復(fù)例如三次,如果下位機(jī)一直無(wú)響應(yīng),則丟棄該數(shù)據(jù)幀。這樣就保證了數(shù)據(jù)的可靠性,在正常情況下,通過(guò)這樣的三次重傳的機(jī)制,就可以大大提高數(shù)據(jù)傳輸?shù)挠行院涂煽啃?,大大降低?shù)據(jù)丟失和傳輸出錯(cuò)導(dǎo)致的系統(tǒng)不穩(wěn)定性。
[0033]如圖2所示,為重發(fā)機(jī)制的數(shù)據(jù)結(jié)構(gòu)形式。該數(shù)據(jù)結(jié)構(gòu)由兩部分組成,或者稱(chēng)為雙向循環(huán)鏈表。該表中包括一個(gè)頭節(jié)點(diǎn)(list_head)和若干個(gè)數(shù)據(jù)結(jié)點(diǎn)(Node_t)。其中,頭結(jié)點(diǎn)包含兩個(gè)節(jié)點(diǎn)指針(Node_tVrev, NodejYext)、發(fā)送隊(duì)列長(zhǎng)度(qlen)以及讀寫(xiě)鎖的信息(Rw_lock)。而數(shù)據(jù)節(jié)點(diǎn)包含構(gòu)成鏈表的兩個(gè)指針(Nodej^prev, Nodejtext)、重發(fā)總次數(shù)計(jì)數(shù)器(count)和超時(shí)計(jì)數(shù)器(timeout),以及發(fā)送的幀數(shù)據(jù)(Frame[256])和它的大小信息(Frame_size)。
[0034]該發(fā)送隊(duì)列是通過(guò)設(shè)置線(xiàn)程來(lái)維護(hù)的。該線(xiàn)程通過(guò)一個(gè)定時(shí)器,在一定的時(shí)間去遍歷一次發(fā)送隊(duì)列,并對(duì)timeout值減一。這樣,遍歷一次,timeout值少I(mǎi)。當(dāng)timeout值為O時(shí)還沒(méi)有收到對(duì)方的ACK信息,則把數(shù)據(jù)幀重發(fā)一次,并對(duì)該幀節(jié)點(diǎn)的發(fā)送次數(shù)計(jì)數(shù)器值也減一。如此三次,發(fā)送計(jì)數(shù)器的值也為零時(shí),從隊(duì)列中把這個(gè)節(jié)點(diǎn)刪除。
[0035]在MCU處,接收部分的流程與發(fā)送部分的流程的順序正好相反,包括從串口接收到ARM發(fā)送的數(shù)據(jù),然后再把該串?dāng)?shù)據(jù)進(jìn)行解析,先對(duì)數(shù)據(jù)進(jìn)行校驗(yàn),然后去掉串口協(xié)議頭和校驗(yàn)部分,根據(jù)子協(xié)議標(biāo)識(shí)把 數(shù)據(jù)分發(fā)給對(duì)應(yīng)的子協(xié)議,子協(xié)議的實(shí)現(xiàn)方式用單獨(dú)的多個(gè)文件實(shí)現(xiàn),便于將來(lái)模塊化。接著由子協(xié)議把數(shù)據(jù)信息提取出來(lái)通過(guò)廣播的方式發(fā)送到對(duì)應(yīng)的應(yīng)用程序。
[0036]下面,以車(chē)載終端的上位機(jī)采用ARM處理器為例來(lái)介紹本發(fā)明發(fā)送數(shù)據(jù)的方法。如圖3所示,其中顯示了在ARM端發(fā)送數(shù)據(jù)的流程圖。
[0037]在步驟SlOl中,調(diào)用要完成功能的應(yīng)用程序接口以形成向下層發(fā)送的命令內(nèi)容。以讓蜂鳴器以IK的頻率發(fā)聲Is為例,所形成的蜂鳴的命令格式為:設(shè)置蜂鳴命令+頻率+時(shí)長(zhǎng),對(duì)應(yīng)的數(shù)據(jù)為0x00 0x3E8 0x01。
[0038]在步驟S102中,對(duì)所述命令內(nèi)容進(jìn)行封裝組成一數(shù)據(jù)幀。在該步驟中,通過(guò)調(diào)用發(fā)送數(shù)據(jù)的功能函數(shù)對(duì)命令內(nèi)容進(jìn)行進(jìn)一步的封裝,在命令內(nèi)容前增加頭部以及在所述命令后增加尾部。
[0039]在一個(gè)實(shí)施例中,頭部可包括同步幀頭、長(zhǎng)度、幀數(shù)據(jù)編號(hào)、標(biāo)志位和類(lèi)型。尾部包括校驗(yàn)碼,例如奇偶校驗(yàn)碼或者CRC循環(huán)校驗(yàn)碼等。
[0040]例如在ARM中,通過(guò)調(diào)用send_cmd (type, cmd, cmd_len)函數(shù)來(lái)對(duì)命令進(jìn)行封裝。其中,第一個(gè)參數(shù)為類(lèi)型,其包括收音機(jī)類(lèi)型、DVD類(lèi)型、音頻類(lèi)型、視頻類(lèi)型、其它類(lèi)型等。這里,蜂鳴器操作屬于其它類(lèi)型。第二個(gè)參數(shù)是命令,即步驟SlOl中的命令格式。第三個(gè)參數(shù)為命令長(zhǎng)度,在此為3。
[0041]如前說(shuō)述,在ARM處調(diào)用send_cmd O函數(shù)時(shí),首先為命令內(nèi)容增加協(xié)議頭和校驗(yàn)值,包括同步幀頭+長(zhǎng)度+協(xié)議編號(hào)+標(biāo)志位+類(lèi)型+命令+校驗(yàn)值。針對(duì)蜂鳴器操作的命令,按照上述規(guī)定,產(chǎn)生的包含命令內(nèi)容的數(shù)據(jù)幀為OxfO Oxfl 0x08 0x00 0x00 0x01Oxff 0x00 0x3E8 0x01 0x3d,這幀數(shù)據(jù)就是告訴MCU讓蜂鳴器以IK的頻率發(fā)聲Is。
[0042]接下來(lái),在步驟S103中,發(fā)送所述數(shù)據(jù)幀,并將其存入隊(duì)列中。在本發(fā)明的一個(gè)實(shí)施例中,ARM通過(guò)串口將這幀數(shù)據(jù)發(fā)送給MCU,同時(shí)把這幀數(shù)據(jù)存入隊(duì)列。
[0043]如圖3所示,在步驟S104中,對(duì)存入隊(duì)列中的各個(gè)數(shù)據(jù)幀標(biāo)記超時(shí)時(shí)長(zhǎng)和重發(fā)次數(shù)。在本例中,例如可標(biāo)記超時(shí)時(shí)長(zhǎng)為ls,重發(fā)次數(shù)為3次。在步驟S105中,經(jīng)過(guò)一定時(shí)間間隔后,查詢(xún)下層返回的針對(duì)所述數(shù)據(jù)幀的ACK消息或NACK消息,如果接收到ACK消息,則從所述隊(duì)列中刪除所述數(shù)據(jù)幀,如果未接受到ACK消息或者接收到NACK消息,則基于所述重發(fā)次數(shù)來(lái)重新發(fā)送所述數(shù)據(jù)幀,并更新所述重發(fā)次數(shù),其中,所述時(shí)間間隔與超時(shí)時(shí)長(zhǎng)有關(guān)。
[0044]例如,到Is的時(shí)候,如果還沒(méi)收到MCU發(fā)送來(lái)的ACK,則重發(fā)次數(shù)減少一次,并把這幀數(shù)據(jù)再重發(fā)一次給MCU,如此重復(fù)3次,如果還是沒(méi)有收到MCU的ACK,則把這幀數(shù)據(jù)丟棄。如果在前幾步任何階段收到MCU發(fā)來(lái)的ACK,則刪除隊(duì)列中這個(gè)幀,表示數(shù)據(jù)已經(jīng)正確傳給MCU。
[0045]在本發(fā)明的一個(gè)實(shí)施例中,更新重發(fā)次數(shù)為將重發(fā)次數(shù)進(jìn)行遞減。當(dāng)重發(fā)次數(shù)為O次時(shí),不發(fā)送數(shù)據(jù)幀,并從隊(duì)列中刪除所述數(shù)據(jù)幀,從而將其做丟棄處理。
[0046]本發(fā)明還提供了一種用于車(chē)載終端的接收數(shù)據(jù)的通信方法,其包括以下步驟:
[0047]S201、接收按照上述通信方法發(fā)送的含有命令內(nèi)容的數(shù)據(jù)幀,并進(jìn)行校驗(yàn),如果校驗(yàn)正確,則向上層返回ACK消息;
[0048]S202、按照一系列協(xié)議規(guī)范解析所述數(shù)據(jù)幀,從而得到所述命令內(nèi)容;
[0049]S203、根據(jù)所述命令內(nèi)容執(zhí)行相應(yīng)操作。
[0050]在步驟S202中,按照串口協(xié)議規(guī)范解析所述數(shù)據(jù)幀,去除串口協(xié)議中規(guī)定的頭部和尾部,其中所述頭部包括同步幀頭、長(zhǎng)度、幀數(shù)據(jù)編號(hào)、標(biāo)志位和類(lèi)型。
[0051]按照幀數(shù)據(jù)編號(hào)將所述數(shù)據(jù)幀中的數(shù)據(jù)分發(fā)給對(duì)應(yīng)的子協(xié)議,再由所述子協(xié)議將所述數(shù)據(jù)解析為所述命令內(nèi)容。
[0052]如果校驗(yàn)不正確,則向上層返回NACK消息請(qǐng)求重新發(fā)送所述數(shù)據(jù)幀。
[0053]進(jìn)一步以蜂鳴器發(fā)聲為例來(lái)解釋上述接收數(shù)據(jù)的步驟。當(dāng)MCU接收到數(shù)據(jù)后,對(duì)OxfO Oxfl 0x08 0x00 0x00 0x01 Oxff 0x00 0x3E8 0x01 0x3d 這幀數(shù)據(jù)進(jìn)行校驗(yàn)。如果校驗(yàn)正確,則給 ARM 發(fā)送 ACK,格式為 OxfO Oxfl 0x05 0x00 0x00 0x01 Oxff OxNN。如果校驗(yàn)沒(méi)通過(guò),說(shuō)明傳輸過(guò)程中發(fā)生錯(cuò)誤,則發(fā)送NACK,格式為OxfO Oxfl 0x05 0x00 0x000x02 Oxff OxNN,請(qǐng)求ARM重新發(fā)送這一巾貞數(shù)據(jù)。當(dāng)然,MCU也可以采取不發(fā)送任何數(shù)據(jù)的方式,由ARM根據(jù)重傳次數(shù)來(lái)決定是否重新發(fā)送數(shù)據(jù)。
[0054]當(dāng)正確地接收到命令后,MCU根據(jù)收到的命令執(zhí)行相應(yīng)的操作。如配置驅(qū)動(dòng)蜂鳴發(fā)聲的PWM控制器,設(shè)置脈沖占空比與脈沖長(zhǎng)度,來(lái)驅(qū)動(dòng)蜂鳴以IK的頻率發(fā)聲Is。執(zhí)行成功后給ARM發(fā)送正確執(zhí)行命令的消息,如果執(zhí)行命令的動(dòng)作由于特殊原因不能完成,則給ARM回復(fù)命令執(zhí)行失敗消息。在MCU執(zhí)行發(fā)送數(shù)據(jù)的過(guò)程同ARM發(fā)送命令的過(guò)程,如圖4所示。
[0055]以上結(jié)合簡(jiǎn)單的蜂鳴發(fā)聲命令來(lái)介紹本發(fā)明,其它命令在本發(fā)明中以類(lèi)似的方式實(shí)現(xiàn)。
[0056]雖然本發(fā)明所揭露的實(shí)施方式如上,但所述的內(nèi)容只是為了便于理解本發(fā)明而采用的實(shí)施方式,并非用以限定本發(fā)明。任何本發(fā)明所屬【技術(shù)領(lǐng)域】?jī)?nèi)的技術(shù)人員,在不脫離本發(fā)明所揭露的精神和范圍的前提下,可以在實(shí)施的形式上及細(xì)節(jié)上作任何的修改與變化,但本發(fā)明的專(zhuān)利保護(hù)范圍,仍須以所附的權(quán)利要求書(shū)所界定的范圍為準(zhǔn)。
【權(quán)利要求】
1.一種用于車(chē)載終端的發(fā)送數(shù)據(jù)的通信方法,其特征在于,包括以下步驟: 5101、調(diào)用要完成功能的應(yīng)用程序接口以形成向下層發(fā)送的命令內(nèi)容; 5102、對(duì)所述命令內(nèi)容進(jìn)行封裝組成一數(shù)據(jù)幀; 5103、發(fā)送所述數(shù)據(jù)幀,并將其存入本地的隊(duì)列中; 5104、對(duì)存入本地隊(duì)列中的各個(gè)數(shù)據(jù)幀標(biāo)記超時(shí)時(shí)長(zhǎng)和重發(fā)次數(shù); 5105、經(jīng)過(guò)一定時(shí)間間隔后,查詢(xún)是否接收到下層返回的針對(duì)所述數(shù)據(jù)幀的ACK消息,如果接收到,則從所述隊(duì)列中刪除所述數(shù)據(jù)幀,如果未接受到ACK消息或者接收到了 NACK消息,則基于所述重發(fā)次數(shù)來(lái)重新發(fā)送所述數(shù)據(jù)幀,并更新所述重發(fā)次數(shù)和超時(shí)時(shí)長(zhǎng)。
2.如權(quán)利要求1所述的通信方法,其特征在于,在步驟S102中,通過(guò)調(diào)用發(fā)送數(shù)據(jù)的功能函數(shù)對(duì)所述命令內(nèi)容進(jìn)行進(jìn)一步的封裝,在所述命令內(nèi)容前增加頭部以及在所述命令后增加尾部。
3.權(quán)利要求2所述的通信方法,其特征在于,所述頭部包括同步幀頭、長(zhǎng)度、幀數(shù)據(jù)編號(hào)、標(biāo)志位和類(lèi)型。
4.權(quán)利要求2所述的通信方法,其特征在于,所述尾部包括校驗(yàn)碼。
5.如權(quán)利要求1-4中任一項(xiàng)所述的通信方法,其特征在于,在步驟S105中,更新所述重發(fā)次數(shù)為將所述重發(fā)次數(shù)進(jìn)行遞減。
6.如權(quán)利要求5所述的通信方法,其特征在于,在步驟S105中,當(dāng)重發(fā)次數(shù)為O次時(shí),不發(fā)送所述數(shù)據(jù)幀,并從所述隊(duì)列中刪除所述數(shù)據(jù)幀,從而將其做丟棄處理。
7.一種用于車(chē)載終端的接收數(shù)據(jù)的通信方法,其特征在于,包括以下步驟: 5201、接收按照權(quán)利要求1-6中任一項(xiàng)所述的通信方法發(fā)送的含有命令內(nèi)容的數(shù)據(jù)幀,并進(jìn)行校驗(yàn),如果校驗(yàn)正確,則向上層返回ACK消息; 5202、按照一系列協(xié)議規(guī)范解析所述數(shù)據(jù)幀,從而得到所述命令內(nèi)容; 5203、根據(jù)所述命令內(nèi)容執(zhí)行相應(yīng)操作。
8.如權(quán)利要求7所述的通信方法,其特征在于,在步驟S202中,按照串口協(xié)議規(guī)范解析所述數(shù)據(jù)幀,去除串口協(xié)議中規(guī)定的頭部和尾部,其中所述頭部包括同步幀頭、長(zhǎng)度、幀數(shù)據(jù)編號(hào)、標(biāo)志位和類(lèi)型。
9.如權(quán)利要求8所述的通信方法,其特征在于,按照幀數(shù)據(jù)編號(hào)將所述數(shù)據(jù)幀中的數(shù)據(jù)分發(fā)給對(duì)應(yīng)的子協(xié)議,再由所述子協(xié)議將所述數(shù)據(jù)解析為所述命令內(nèi)容。
10.如權(quán)利要求8所述的通信方法,其特征在于,如果校驗(yàn)不正確,則向上層返回NACK消息請(qǐng)求重新發(fā)送所述數(shù)據(jù)幀。
【文檔編號(hào)】H04L1/16GK103546250SQ201310430405
【公開(kāi)日】2014年1月29日 申請(qǐng)日期:2013年9月18日 優(yōu)先權(quán)日:2013年9月18日
【發(fā)明者】崔建忠 申請(qǐng)人:中標(biāo)軟件有限公司