專利名稱:基于can總線的長幀數(shù)據(jù)傳輸卡和長幀數(shù)據(jù)傳輸方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)應(yīng)用技術(shù)領(lǐng)域,尤其涉及電子信息系統(tǒng)中所需的基于CAN總線的長幀數(shù)據(jù)傳輸卡和長幀數(shù)據(jù)傳輸方法。
背景技術(shù):
目前在電子信息系統(tǒng),中特別是在車輛電子信息系統(tǒng)中,CAN總線技術(shù)得到了越來越多的應(yīng)用,而現(xiàn)有技術(shù)只局限于短幀數(shù)據(jù)在CAN總線上的傳輸,目前在車電系統(tǒng)中通過CAN總線連接的計(jì)算機(jī)和外部設(shè)備很難進(jìn)行長幀數(shù)據(jù)的傳輸?,F(xiàn)有的解決辦法多是對應(yīng)用層協(xié)議進(jìn)行處理,將長幀數(shù)據(jù)通過應(yīng)用層軟件進(jìn)行拆分,為了保證拆分后數(shù)據(jù)包的同一性,必須給拆分后的每一幀數(shù)據(jù)加上時標(biāo)。該方法最大的缺點(diǎn)是通用性差、實(shí)時性不強(qiáng)、會過多占用有限的CPU資源。隨著對電子信息系統(tǒng)的數(shù)據(jù)量、數(shù)據(jù)復(fù)雜性與數(shù)據(jù)訪問的實(shí)時性要求的提高,舊有的處理方法很難滿足要求。因此本設(shè)計(jì)提出一種基于CAN總線的長幀數(shù)據(jù) 傳輸方法,在板卡上通過DSP實(shí)現(xiàn)CAN總線長幀數(shù)據(jù)的傳輸,在保證實(shí)時性的同時,又不占用上位機(jī)的資源。
發(fā)明內(nèi)容
本發(fā)明的技術(shù)方案是為了解決現(xiàn)有技術(shù)中無法通過CAN總線進(jìn)行長幀數(shù)據(jù)的傳輸,提供一種能夠支持CAN總線長幀數(shù)據(jù)傳輸?shù)姆椒?,該方法適合于各種電子信息系統(tǒng),特別是車輛電子信息系統(tǒng),具有通用性強(qiáng)、實(shí)時性高等特點(diǎn)。本發(fā)明的技術(shù)解決方案是設(shè)計(jì)一種基于CAN總線的長幀數(shù)據(jù)傳輸卡,采用即插即用的以DSP作為核心處理器的PCI卡。所述的PCI卡上包括DSP芯片、PCI轉(zhuǎn)換器、CAN收發(fā)器、FLASH芯片、雙端口RAM、A/D轉(zhuǎn)換器和電源模塊。PCI卡通過PCI總線與計(jì)算機(jī)連接。該方法具體步驟如下步驟I :將長幀傳輸卡通過PCI總線連接到計(jì)算機(jī)上,安裝驅(qū)動程序;步驟2 :創(chuàng)建共享內(nèi)存映射,開辟通信緩沖區(qū);步驟3 :通過調(diào)用DLL接口函數(shù)進(jìn)行相應(yīng)參數(shù)的設(shè)置;步驟4 :本節(jié)點(diǎn)開機(jī)后,廣播在線信息;步驟5 :與在線節(jié)點(diǎn)建立連接,創(chuàng)建接收線程和發(fā)送線程;用戶節(jié)點(diǎn)應(yīng)用程序通過調(diào)用接口 DLL函數(shù)進(jìn)行數(shù)據(jù)發(fā)送,接口函數(shù)將數(shù)據(jù)寫入雙端口 RAM,DSP芯片中的發(fā)送線程從雙端口 RAM中取出后發(fā)送信息,接收線程接收信息,如果收到數(shù)據(jù),放入雙端口 RAM,并通過DLL接口直接通過消息發(fā)送給應(yīng)用程序。具體實(shí)現(xiàn)方法為程序啟動后,新建接收線程、分發(fā)線程、長幀發(fā)送線程、長幀接收線程。線程之間通過信號量進(jìn)行同步。各自的屬性為接收線程無限循環(huán),收到數(shù)據(jù)包存到環(huán)形接收隊(duì)列,然后進(jìn)入等待。分發(fā)線程無限循環(huán),判斷環(huán)形接收隊(duì)列是否有數(shù),依次逐包讀取,如為短幀,直接通過接口函數(shù)輸出。如為長幀首包,開啟長幀接收任務(wù)。不同源點(diǎn)開啟不同長幀接收任務(wù),支持多源點(diǎn)同時長巾貞傳輸。長幀發(fā)送線程無限循,環(huán)判斷環(huán)形發(fā)送隊(duì)列有數(shù),依次逐包發(fā)送,直到發(fā)送完畢進(jìn)入等待狀態(tài)。長幀接收線程單任務(wù)循環(huán),當(dāng)分發(fā)任務(wù)收到發(fā)送請求幀后啟動,分包數(shù)據(jù)全部接收完畢后,將收的數(shù)據(jù)打包,放入數(shù)據(jù)共享區(qū),通過消息發(fā)送到應(yīng)用程序。如接收過程中發(fā)生超時,發(fā)送中斷命令,自動退出。當(dāng)某個節(jié)點(diǎn)傳送一條請求發(fā)送消息(TP. CM_RTS)給一個目標(biāo)地址時,連接就開始 了。請求發(fā)送消息包含了整個消息的字節(jié)大小,要傳送的獨(dú)立消息的數(shù)目,以及它設(shè)定的參數(shù)群編號。在一個節(jié)點(diǎn)接收到請求發(fā)送消息后,它可以選擇接收連接或者拒絕連接。如果選擇接收連接,響應(yīng)者將發(fā)送一條準(zhǔn)備發(fā)送消息(TP. CM_CTS)。準(zhǔn)備發(fā)送消息包含了節(jié)點(diǎn)可接收數(shù)據(jù)包的數(shù)目,和它將要接收的第一個數(shù)據(jù)包的序列編號。響應(yīng)者必須確認(rèn)自己有充足的資源來處理即將接收的這么多數(shù)目的數(shù)據(jù)包。在剛剛開放連接的時候,數(shù)據(jù)包的序列編號是I。如果選擇拒絕連接,響應(yīng)者將發(fā)送一條放棄連接消息(TP. Conn_Abort)。連接被拒絕可以有很多種原因,例如,缺少資源、存儲空間不足等等。當(dāng)發(fā)送者(例如,RTS設(shè)備)接收到來自響應(yīng)者(例如,CTS設(shè)備)的相應(yīng)的CTS消息,那么可以認(rèn)為已經(jīng)為發(fā)送者建立了連接。當(dāng)響應(yīng)者已經(jīng)成功傳送了它的CTS消息作為對一個RTS消息的響應(yīng),那么可以認(rèn)為已經(jīng)為響應(yīng)者建立了連接。這些定義將用于決定什么時候需要發(fā)送連接放棄消息來關(guān)閉連接。如果響應(yīng)者收到RTS消息并決定不建立連接,那么它應(yīng)該發(fā)送一條放棄連接消息。這樣可以讓發(fā)送者轉(zhuǎn)移到一個新的連接而不必等到超時。當(dāng)連接的發(fā)送者接收到準(zhǔn)備發(fā)送消息后,數(shù)據(jù)傳輸正式開始。其中有一種例外的情況,就是當(dāng)節(jié)點(diǎn)發(fā)送了廣播公告消息(TP.CM_BAM)后開始數(shù)據(jù)傳輸,這時,不需要使用準(zhǔn)備發(fā)送消息。在傳輸沒有錯誤的情況下,有兩種關(guān)閉連接的情形。第一種是在發(fā)送給全局目標(biāo)地址時,第二種是在發(fā)送給一個指定目標(biāo)地址時。在第一種情形下,接收完數(shù)據(jù)后將沒有關(guān)閉連接的操作。在第二種情形下,當(dāng)接收到數(shù)據(jù)流的最后一個數(shù)據(jù)包時,響應(yīng)者將發(fā)送一個消息結(jié)束應(yīng)答(TP. CM_EndofMsgACK)給消息的發(fā)送者。在進(jìn)行全局目標(biāo)地址傳輸時,響應(yīng)者不允許使用“放棄連接”消息。在進(jìn)行指定目標(biāo)地址傳輸時,發(fā)送者或者響應(yīng)者都可以在任何時候使用“放棄連接”消息來終止連接。(兩方中的)任一方發(fā)生傳輸故障也會導(dǎo)致連接的關(guān)閉。例如,當(dāng)收到的最后一個數(shù)據(jù)包后等待下一個數(shù)據(jù)包(CTS允許有更多)的時間間隔大于(Tl)秒;當(dāng)一條CTS消息被發(fā)送后等待時間大于(T2)秒(發(fā)送者發(fā)生故障);當(dāng)發(fā)送了一個數(shù)據(jù)包后等待CTS或者ACK消息的時間大于(T3)秒(響應(yīng)者發(fā)生故障);在0^(0)消息后等待下一條CTS來保持連接,但等待時間大于(T4)秒,這些都將會導(dǎo)致關(guān)閉連接發(fā)生。在實(shí)際傳輸過程中,無論發(fā)送者還是響應(yīng)者,由于某一原因(包括超時)決定要關(guān)閉連接,它都應(yīng)該發(fā)出一條放棄連接消息。
步驟6 :當(dāng)用戶節(jié)點(diǎn)斷開連接時,廣播離線信息,并結(jié)束相應(yīng)的線程。發(fā)明的有益效果計(jì)算機(jī)可通過本發(fā)明實(shí)現(xiàn)通過CAN總線進(jìn)行長幀數(shù)據(jù)傳輸,使用方便,具有良好的擴(kuò)展性和數(shù)據(jù)處理的實(shí)時性,適合于各種軍用電子信息系統(tǒng),特別是車輛電子信息系統(tǒng)中使用,具有擴(kuò)展性強(qiáng),使用簡潔的特點(diǎn)。
圖I為本發(fā)明的硬件組成圖;圖2為本發(fā)明的軟件流程圖;圖3為基于J1939協(xié)議的連接模式下的長幀數(shù)據(jù)傳輸框圖;圖4為基于J1939協(xié)議的廣播模式下的長幀數(shù)據(jù)傳輸框圖。
具體實(shí)施例方式下面結(jié)合附圖,對本發(fā)明的實(shí)施例作進(jìn)一步詳細(xì)說明。本發(fā)明CAN總線通信底層采用CAN2. OB協(xié)議規(guī)范。幀協(xié)議采用CAN擴(kuò)展幀。由于CAN本身是一個底層協(xié)議,僅詳細(xì)定義了物理層和數(shù)據(jù)鏈路層,本身并不完整。很多復(fù)雜的應(yīng)用問題需要更高層次的定義來解決。比如,CAN數(shù)據(jù)幀一次最多只能傳輸8字節(jié),而不能傳輸大于8字節(jié)的長幀數(shù)據(jù)。因此,本發(fā)明應(yīng)用層協(xié)議選用SAE J1939。J1939協(xié)議中的核心是負(fù)責(zé)數(shù)據(jù)傳輸?shù)膫鬏攨f(xié)議。它的功能分為兩部分(I)數(shù)據(jù)的拆分打包和重組。一個J1939的報(bào)文單元只有8個字節(jié)的數(shù)據(jù)場。因此如果所要發(fā)送的數(shù)據(jù)超過了 8字節(jié),就應(yīng)該分成幾個小的數(shù)據(jù)包分批發(fā)送。數(shù)據(jù)場的第一個字節(jié)從I開始作為報(bào)文的序號,后7個字節(jié)用來存放數(shù)據(jù)。所以可以發(fā)送255X7 =1785個字節(jié)的數(shù)據(jù)。報(bào)文被接收以后按序號重新組合成原來的數(shù)據(jù)。(2)連接管理。主要對節(jié)點(diǎn)之間連接的建立和關(guān)閉,數(shù)據(jù)的傳送進(jìn)行管理。其中定義了 5種幀結(jié)構(gòu)發(fā)送請求幀、發(fā)送清除幀、結(jié)束應(yīng)答幀、連接失敗幀以及用來全局接收的廣播幀。節(jié)點(diǎn)之間的連接通過一個節(jié)點(diǎn)向目的地址發(fā)送一個發(fā)送請求幀而建立。在接收發(fā)送請求幀以后,節(jié)點(diǎn)如果有足夠的空間來接收數(shù)據(jù)并且數(shù)據(jù)有效則發(fā)送一個發(fā)送清除幀,開始數(shù)據(jù)的傳送。如果存儲空間不夠或者數(shù)據(jù)無效等原因節(jié)點(diǎn)需要拒絕連接則發(fā)送連接失敗幀,連接關(guān)閉。如果數(shù)據(jù)接收全部完成。則節(jié)點(diǎn)發(fā)送一個結(jié)束應(yīng)答幀,連接關(guān)閉。本發(fā)明可以應(yīng)用在軍用電子信息系統(tǒng),特別是車輛電子信息系統(tǒng),采用如附圖I所示的方法進(jìn)行連接,多個計(jì)算機(jī)通過CAN總線連接,實(shí)現(xiàn)數(shù)據(jù)傳輸采用步驟如下步驟I :將長幀傳輸卡通過PCI總線連接到計(jì)算機(jī)上,安裝驅(qū)動程序;步驟2 :創(chuàng)建共享內(nèi)存映射,開辟通信緩沖區(qū);步驟3 :通過調(diào)用DLL接口函數(shù)進(jìn)行相應(yīng)參數(shù)的設(shè)置;步驟4 :廣播在線信息;步驟5 :與在線節(jié)點(diǎn)建立連接,創(chuàng)建接收線程和發(fā)送線程;具體實(shí)現(xiàn)方法為程序啟動后,新建接收線程、分發(fā)線程、長幀發(fā)送線程、長幀接收線程。線程之間通過信號量進(jìn)行同步。各自的屬性為接收線程無限循環(huán),收到數(shù)據(jù)包存到環(huán)形接收隊(duì)列,然后進(jìn)入等待。分發(fā)線程無限循環(huán),判斷環(huán)形接收隊(duì)列是否有數(shù),依次逐包讀取,如為短幀數(shù)據(jù),直接通過接口函數(shù)輸出。如為長幀數(shù)據(jù)首包,開啟長幀接收任務(wù)。不同源點(diǎn)開啟不同長幀接收任務(wù),分發(fā)線程支持多源點(diǎn)同時進(jìn)行長幀數(shù)據(jù)的傳輸。長幀發(fā)送線程無限循環(huán),判斷環(huán)形發(fā)送隊(duì)列有數(shù),依次逐包發(fā)送,直到發(fā)送完畢進(jìn)入等待狀態(tài)。長幀接收線程單任務(wù)循環(huán),當(dāng)分發(fā)任務(wù)收到發(fā)送請求幀后啟動,分包數(shù)據(jù)全部接收完畢后,將收的數(shù)據(jù)打包,放入數(shù)據(jù)共享區(qū),通過消息發(fā)送到應(yīng)用程序。如接收過程中發(fā)生超時,發(fā)送中斷命令,自動退出。結(jié)合附圖3、4對本發(fā)明的最佳實(shí)施例做進(jìn)一步描述當(dāng)某個節(jié)點(diǎn)傳送一條請求發(fā)送消息(TP. CM_RTS)給一個目標(biāo)地址時,連接就開始了。請求發(fā)送消息包含了整個消息的字節(jié)大小,要傳送的獨(dú)立消息的數(shù)目,以及它設(shè)定的參數(shù)群編號。在一個節(jié)點(diǎn)接收到請求發(fā)送消息后,它可以選擇接收連接或者拒絕連接。如果選擇接收連接,響應(yīng)者將發(fā)送一條準(zhǔn)備發(fā)送消息(TP. CM_CTS)。準(zhǔn)備發(fā)送消息包含了節(jié)點(diǎn)可接收數(shù)據(jù)包的數(shù)目,和它將要接收的第一個數(shù)據(jù)包的序列編號。響應(yīng)者必須確認(rèn)自己有充足的資源來處理即將接收的這么多數(shù)目的數(shù)據(jù)包。在剛剛開放連接的時候,數(shù)據(jù)包的序列編號是I。如果選擇拒絕連接,響應(yīng)者將發(fā)送一條放棄連接消息(TP. Conn_Abort)。連接被拒絕可以有很多種原因,例如,缺少資源、存儲空間等等。當(dāng)發(fā)送者(例如,RTS設(shè)備)接收到來自響應(yīng)者(例如,CTS設(shè)備)的相應(yīng)的CTS消息,那么可以認(rèn)為已經(jīng)為發(fā)送者建立了連接。當(dāng)響應(yīng)者已經(jīng)成功傳送了它的CTS消息作為對一個RTS消息的響應(yīng),那么可以認(rèn)為已經(jīng)為響應(yīng)者建立了連接。這些定義將用于決定什么時候需要發(fā)送連接放棄消息來關(guān)閉連接。如果響應(yīng)者收到RTS消息并決定不建立連接,那么它應(yīng)該發(fā)送一條放棄連接消息。這樣可以讓發(fā)送者轉(zhuǎn)移到一個新的連接而不必等到超時。當(dāng)連接的發(fā)送者接收到準(zhǔn)備發(fā)送消息后,數(shù)據(jù)傳輸正式開始。其中有一種例外的情況,就是當(dāng)節(jié)點(diǎn)發(fā)送了廣播公告消息(TP.CM_BAM)后開始數(shù)據(jù)傳輸,這時,不需要使用準(zhǔn)備發(fā)送消息。在傳輸沒有錯誤的情況下,有兩種關(guān)閉連接的情形。第一種是在發(fā)送給全局目標(biāo)地址時,第二種是在發(fā)送給一個指定目標(biāo)地址時。在第一種情形下,接收完數(shù)據(jù)后將沒有關(guān)閉連接的操作。在第二種情形下,當(dāng)接收到數(shù)據(jù)流的最后一個數(shù)據(jù)包時,響應(yīng)者將發(fā)送一個消息結(jié)束應(yīng)答(TP. CM_EndofMsgACK)給消息的發(fā)送者。在進(jìn)行全局目標(biāo)地址傳輸時,響應(yīng)者不允許使用“放棄連接”消息。在進(jìn)行指定目標(biāo)地址傳輸時,發(fā)送者或者響應(yīng)者都可以在任何時候使用“放棄連接”消息來終止連接。(兩方中的)任一方發(fā)生傳輸故障也會導(dǎo)致連接的關(guān)閉。例如,當(dāng)收到的最后一個 數(shù)據(jù)包后等待下一個數(shù)據(jù)包(CTS允許有更多)的時間間隔大于(Tl)秒;當(dāng)一條CTS消息被發(fā)送后等待時間大于(T2)秒(發(fā)送者發(fā)生故障);當(dāng)發(fā)送了一個數(shù)據(jù)包后等待CTS或者ACK消息的時間大于(T3)秒(響應(yīng)者發(fā)生故障);在0^(0)消息后等待下一條CTS來保持連接,但等待時間大于(T4)秒,這些都將會導(dǎo)致關(guān)閉連接發(fā)生。在實(shí)際傳輸過程中,無論發(fā)送者還是響應(yīng)者,由于某一原因(包括超時)決定要關(guān)閉連接,它都應(yīng)該發(fā)出一條放棄連接消息。步驟6 ;當(dāng)用戶節(jié)點(diǎn)斷開連接時,通信服務(wù)器關(guān)閉與它的連接,并結(jié)束相應(yīng)的線程。計(jì)算機(jī)通過本發(fā)明可實(shí)現(xiàn)基于CAN總線的長幀數(shù)據(jù)傳輸,該方法使用方便簡潔,具有良好的擴(kuò)展性和數(shù)據(jù)處理的實(shí)時性,適合于各種軍用電子信息系統(tǒng),特別是車輛電子信息系統(tǒng)中使用。
應(yīng)當(dāng)理解的是,上述針對本發(fā)明實(shí)施例的表述較為詳細(xì),并不能因此而認(rèn)為是對本發(fā)明專利保護(hù)范圍的限制,本發(fā)明的專利保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。
權(quán)利要求
1.一種基于CAN總線的長幀數(shù)據(jù)傳輸卡,其特征在于,所述的設(shè)備包括DSP芯片、雙端ロ RAM、FLASH存儲器、CAN收發(fā)器、PCI轉(zhuǎn)換器;其中,PCI轉(zhuǎn)換器通過CPI總線與計(jì)算機(jī)主機(jī)相連接,并向主機(jī)系統(tǒng)提交數(shù)據(jù)以及接收主機(jī)系統(tǒng)的下發(fā)數(shù)據(jù);雙端ロ RAM、FLASH存儲器存儲DSP運(yùn)算中的中間數(shù)據(jù);CAN收發(fā)器用于和CAN總線連接,進(jìn)行CAN總線上數(shù)據(jù)的收發(fā);DSP用于控制系統(tǒng)內(nèi)部各部分的工作,同時,長巾貞傳輸?shù)母鞣N控制程序也都在DSP中實(shí)現(xiàn)。
2.基于權(quán)利要求I所述的基于PCI總線的CAN總線長幀數(shù)據(jù)傳輸卡,其特征在干,DSP芯片、雙端ロ RAM、FLASH存儲器、CAN收發(fā)器、PCI轉(zhuǎn)換器通過DSP外圍總線連接。
3.ー種基于權(quán)利要求I所述的設(shè)備實(shí)現(xiàn)的長巾貞數(shù)據(jù)傳輸方法,其特征在于,所述的方法包括以下步驟 步驟ー將長幀傳輸卡通過PCI總線連接到計(jì)算機(jī)上,安裝驅(qū)動程序; 步驟ニ 創(chuàng)建共享內(nèi)存映射,開辟通信緩沖區(qū); 步驟三通過調(diào)用DLL接ロ函數(shù)進(jìn)行相應(yīng)參數(shù)的設(shè)置; 步驟四當(dāng)用戶節(jié)點(diǎn)連接上CAN總線時,廣播在線信息; 步驟五與在線節(jié)點(diǎn)建立連接,創(chuàng)建接收線程和發(fā)送線程;用戶節(jié)點(diǎn)應(yīng)用程序通過調(diào)用接ロ DLL函數(shù)進(jìn)行數(shù)據(jù)發(fā)送,接ロ函數(shù)將數(shù)據(jù)寫入雙端ロ RAM,DSP芯片中的發(fā)送線程從雙端ロ RAM中取出后發(fā)送信息,接收線程接收信息,如果收到數(shù)據(jù),放入雙端ロ RAM,并通過DLL接ロ直接通過消息發(fā)送給應(yīng)用程序; 具體實(shí)現(xiàn)方法為 程序啟動后,新建接收線程、分發(fā)線程、長幀發(fā)送線程、長幀接收線程。線程之間通過信號量進(jìn)行同歩;各自的屬性為 接收線程無限循環(huán),收到數(shù)據(jù)包存到環(huán)形接收隊(duì)列,然后進(jìn)入等待; 分發(fā)線程無限循環(huán),判斷環(huán)形接收隊(duì)列是否有數(shù),依次逐包讀取,如為短幀,直接通過接ロ函數(shù)輸出;如為長幀首包,開啟長幀接收任務(wù);不同源點(diǎn)開啟不同長幀接收任務(wù),支持多源點(diǎn)同時長巾貞傳輸; 長幀發(fā)送線程無限循環(huán),判斷環(huán)形發(fā)送隊(duì)列有數(shù),依次逐包發(fā)送,直到發(fā)送完畢進(jìn)入等待狀態(tài); 長幀接收線程單任務(wù)循環(huán),當(dāng)分發(fā)任務(wù)收到發(fā)送請求幀后啟動,分包數(shù)據(jù)全部接收完畢后,將收的數(shù)據(jù)打包,放入數(shù)據(jù)共享區(qū),通過消息發(fā)送到應(yīng)用程序;如接收過程中發(fā)生超時,發(fā)送中斷命令,自動退出; 當(dāng)某個節(jié)點(diǎn)傳送一條請求發(fā)送消息(TP. CM_RTS)給ー個目標(biāo)地址時,連接就開始了 ;請求發(fā)送消息包含了整個消息的字節(jié)大小,要傳送的獨(dú)立消息的數(shù)目,以及它設(shè)定的參數(shù)群編號; 在一個節(jié)點(diǎn)接收到請求發(fā)送消息后,它可以選擇接收連接或者拒絕連接;如果選擇接收連接,響應(yīng)者將發(fā)送一條準(zhǔn)備發(fā)送消息(TP.CM_CTS);準(zhǔn)備發(fā)送消息包含了節(jié)點(diǎn)可接收數(shù)據(jù)包的數(shù)目,和它將要接收的第一個數(shù)據(jù)包的序列編號;響應(yīng)者必須確認(rèn)自己有充足的資源來處理即將接收的這么多數(shù)目的數(shù)據(jù)包;在剛剛開放連接的時候,數(shù)據(jù)包的序列編號是I ; 如果選擇拒絕連接,響應(yīng)者將發(fā)送一條放棄連接消息(TP. Conn_Abort);連接被拒絕可以有很多種原因,例如,缺少資源、存儲空間不足等; 當(dāng)發(fā)送者(例如,RTS設(shè)備)接收到來自響應(yīng)者(例如,CTS設(shè)備)的相應(yīng)的CTS消息,那么可以認(rèn)為已經(jīng)為發(fā)送者建立了連接;當(dāng)響應(yīng)者已經(jīng)成功傳送了它的CTS消息作為對ー個RTS消息的響應(yīng),那么可以認(rèn)為已經(jīng)為響應(yīng)者建立了連接;這些定義將用于決定什么時候需要發(fā)送連接放棄消息來關(guān)閉連接; 如果響應(yīng)者收到RTS消息并決定不建立連接,那么它應(yīng)該發(fā)送一條放棄連接消息;這樣可以讓發(fā)送者轉(zhuǎn)移到一個新的連接而不必等到超時; 當(dāng)連接的發(fā)送者接收到準(zhǔn)備發(fā)送消息后,數(shù)據(jù)傳輸正式開始;其中有ー種例外的情況,就是當(dāng)節(jié)點(diǎn)發(fā)送了廣播公告消息(TP.CM_BAM)后開始數(shù)據(jù)傳輸,這時,不需要使用準(zhǔn)備發(fā)送消息; 在傳輸沒有錯誤的情況下,有兩種關(guān)閉連接的情形;第一種是在發(fā)送給全局目標(biāo)地址時,第二種是在發(fā)送給ー個指定目標(biāo)地址時;在第一種情形下,接收完數(shù)據(jù)后將沒有關(guān)閉連接的操作;在第二種情形下,當(dāng)接收到數(shù)據(jù)流的最后ー個數(shù)據(jù)包吋,響應(yīng)者將發(fā)送ー個消息結(jié)束應(yīng)答(TP. CM_EndofMsgACK)給消息的發(fā)送者; 在進(jìn)行全局目標(biāo)地址傳輸吋,響應(yīng)者不允許使用“放棄連接”消息;在進(jìn)行指定目標(biāo)地址傳輸吋,發(fā)送者或者響應(yīng)者都可以在任何時候使用“放棄連接”消息來終止連接; (兩方中的)任一方發(fā)生傳輸故障也會導(dǎo)致連接的關(guān)閉;例如,當(dāng)收到的最后ー個數(shù)據(jù)包后等待下一個數(shù)據(jù)包(CTS允許有更多)的時間間隔大于(Tl)秒;當(dāng)一條CTS消息被發(fā)送后等待時間大于(T2)秒(發(fā)送者發(fā)生故障);當(dāng)發(fā)送了一個數(shù)據(jù)包后等待CTS或者ACK消息的時間大于(T3)秒(響應(yīng)者發(fā)生故障);在CTS(O)消息后等待下一條CTS來保持連接,但等待時間大于(T4)秒,這些都將會導(dǎo)致關(guān)閉連接發(fā)生;在實(shí)際傳輸過程中,無論發(fā)送者還是響應(yīng)者,由于某一原因(包括超吋)決定要關(guān)閉連接,它都應(yīng)該發(fā)出一條放棄連接消息; 步驟六當(dāng)用戶節(jié)點(diǎn)斷開連接時,通信服務(wù)器關(guān)閉與它的連接,并結(jié)束相應(yīng)的線程。
全文摘要
本發(fā)明屬于計(jì)算機(jī)應(yīng)用技術(shù)領(lǐng)域,為一種基于CAN總線的長幀數(shù)據(jù)傳輸卡和長幀數(shù)據(jù)傳輸方法。長幀數(shù)據(jù)傳輸卡由DSP芯片、雙端口RAM、FLASH存儲器、CAN收發(fā)器、PCI轉(zhuǎn)換器組成。長幀數(shù)據(jù)傳輸方法步驟如下①將長幀傳輸卡通過PCI總線連接到計(jì)算機(jī)上,安裝驅(qū)動程序;②創(chuàng)建共享內(nèi)存映射開辟通信緩沖區(qū);③通過調(diào)用DLL接口函數(shù)進(jìn)行相應(yīng)參數(shù)的設(shè)置;④廣播在線信息;⑤與在線節(jié)點(diǎn)建立連接,創(chuàng)建接收線程和發(fā)送線程;⑥當(dāng)用戶節(jié)點(diǎn)斷開連接時,關(guān)閉與它的連接,并結(jié)束相應(yīng)的線程。計(jì)算機(jī)通過本發(fā)明可實(shí)現(xiàn)在CAN總線上進(jìn)行長幀數(shù)據(jù)傳輸,使用方便簡潔,且具有良好的擴(kuò)展性和實(shí)時性,適合在各類電子信息系統(tǒng)中使用。
文檔編號G06F13/42GK102681969SQ201110057979
公開日2012年9月19日 申請日期2011年3月11日 優(yōu)先權(quán)日2011年3月11日
發(fā)明者仲妍, 劉曉宏, 宋永強(qiáng), 左欽文, 王惠軍, 蔡晶 申請人:中國人民解放軍63973部隊(duì), 山西國營大眾機(jī)械廠軍品第一研究所