国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      數(shù)據(jù)處理方法和裝置制造方法

      文檔序號:6527106閱讀:152來源:國知局
      數(shù)據(jù)處理方法和裝置制造方法
      【專利摘要】本發(fā)明提供了一種數(shù)據(jù)處理方法和裝置,其中,數(shù)據(jù)處理方法包括:接收用戶設(shè)備發(fā)送的數(shù)據(jù)包;將數(shù)據(jù)包中的數(shù)據(jù)按照第一設(shè)定規(guī)則復(fù)制到任務(wù)控制塊中,并將任務(wù)控制塊中的數(shù)據(jù)設(shè)定為完成狀態(tài);調(diào)用USB接口向USB數(shù)據(jù)卡發(fā)送任務(wù)控制塊中的數(shù)據(jù),同時繼續(xù)接收用戶設(shè)備發(fā)送的其他數(shù)據(jù)包,并將數(shù)據(jù)按照第一設(shè)定規(guī)則分別復(fù)制到其他任務(wù)控制塊中,將其他任務(wù)控制塊組織成待發(fā)送任務(wù)控制塊鏈表;在設(shè)定為完成狀態(tài)的任務(wù)控制塊中的數(shù)據(jù)發(fā)送完成后,對待發(fā)送任務(wù)控制塊鏈表中的各個任務(wù)控制塊中的數(shù)據(jù)進行組包;調(diào)用USB接口發(fā)送組包后的數(shù)據(jù)至USB數(shù)據(jù)卡。通過本發(fā)明,避免了USB總線的傳輸效率不能得到充分利用,USB數(shù)據(jù)傳輸速率低的問題。
      【專利說明】數(shù)據(jù)處理方法和裝置
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及數(shù)據(jù)卡【技術(shù)領(lǐng)域】,特別是涉及一種數(shù)據(jù)處理方法和裝置。
      【背景技術(shù)】
      [0002]USB (Universal Serial Bus,通用串行總線)已成為計算機領(lǐng)域的標(biāo)準(zhǔn)接口技術(shù),由于其具有即插即用、使用方便、低成本等特點,迅速得到業(yè)界的強力支持,目前已成為主流的總線標(biāo)準(zhǔn)。USB廣泛應(yīng)用于傳統(tǒng)PC (Personal Computer,個人電腦)外設(shè),如鼠標(biāo)、鍵盤、顯示器等,移動存儲設(shè)備如移動硬盤、閃存盤等,以及新興的消費類電子,如MP3播放器、數(shù)碼相機、移動電話等。同時,其應(yīng)用范圍也在不斷擴大,基于USB的數(shù)據(jù)通信系統(tǒng)也在日益增多,其中,最具有代表性的為USB數(shù)據(jù)卡。
      [0003]USB 數(shù)據(jù)卡的上行業(yè)務(wù)需要遵循 NDIS (Network Driver Interface Standard,網(wǎng)絡(luò)驅(qū)動器接口規(guī)范)要求的串行方式。目前,基于USB的數(shù)據(jù)卡進行數(shù)據(jù)傳輸時,數(shù)據(jù)包的傳輸流程為:PC (Personal Computer,個人電腦)操作系統(tǒng)把數(shù)據(jù)包通過按照NDIS調(diào)用的接口發(fā)送給PC中的USB數(shù)據(jù)卡驅(qū)動程序;USB數(shù)據(jù)卡驅(qū)動程序通過USB總線把數(shù)據(jù)包發(fā)送給USB數(shù)據(jù)卡;待USB數(shù)據(jù)卡確認(rèn)收到該數(shù)據(jù)包后,USB數(shù)據(jù)卡驅(qū)動程序再通知PC操作系統(tǒng)該數(shù)據(jù)包已發(fā)送完成;PC操作系統(tǒng)接收USB數(shù)據(jù)卡驅(qū)動程序發(fā)送的USB總線已發(fā)送完該數(shù)據(jù)包的消息;PC操作系統(tǒng)會根據(jù)需求決定是否發(fā)送下一個數(shù)據(jù)包。
      [0004]上述現(xiàn)有的USB數(shù)據(jù)傳輸方式,在進行數(shù)據(jù)包的傳輸時,PC操作系統(tǒng)必須等前一個數(shù)據(jù)包發(fā)送至USB數(shù)據(jù)卡,并收到USB數(shù)據(jù)卡驅(qū)動程序發(fā)送的完成消息后,才可以再次向USB數(shù)據(jù)卡驅(qū)動程序發(fā)送下一個數(shù)據(jù)包。由于PC操作系統(tǒng)與USB數(shù)據(jù)卡驅(qū)動程序的交互速率小于USB總線的傳輸速率,使得USB總線的傳輸效率不能得到充分利用,導(dǎo)致USB數(shù)據(jù)傳輸速率低。

      【發(fā)明內(nèi)容】

      [0005]本發(fā)明提供了一種數(shù)據(jù)處理方法和裝置,以解決現(xiàn)有的USB數(shù)據(jù)傳輸方式在進行數(shù)據(jù)包的傳輸時,USB總線的傳輸效率不能得到充分利用,USB數(shù)據(jù)傳輸速率低的問題。
      [0006]為了解決上述問題,本發(fā)明公開了一種數(shù)據(jù)處理方法,包括:接收用戶設(shè)備發(fā)送的數(shù)據(jù)包;將所述數(shù)據(jù)包中的數(shù)據(jù)按照第一設(shè)定規(guī)則復(fù)制到任務(wù)控制塊中,并將所述任務(wù)控制塊中的數(shù)據(jù)設(shè)定為完成狀態(tài);調(diào)用通用串行總線接口向所述通用串行總線數(shù)據(jù)卡發(fā)送所述任務(wù)控制塊中的數(shù)據(jù),同時繼續(xù)接收所述用戶設(shè)備發(fā)送的其他數(shù)據(jù)包,并將所述其他數(shù)據(jù)包中的數(shù)據(jù)按照所述第一設(shè)定規(guī)則分別復(fù)制到其他任務(wù)控制塊中,將所述其他任務(wù)控制塊組織成待發(fā)送任務(wù)控制塊鏈表;在設(shè)定為完成狀態(tài)的所述任務(wù)控制塊中的數(shù)據(jù)發(fā)送完成后,按照第二設(shè)定規(guī)則對所述待發(fā)送任務(wù)控制塊鏈表中的各個任務(wù)控制塊中的數(shù)據(jù)進行組包;調(diào)用所述通用串行總線接口發(fā)送組包后的所述數(shù)據(jù)至所述通用串行總線數(shù)據(jù)卡。
      [0007]為了解決上述問題,本發(fā)明還公開了一種數(shù)據(jù)處理裝置,包括:接收模塊,用于接收用戶設(shè)備發(fā)送的數(shù)據(jù)包;復(fù)制模塊,用于將所述數(shù)據(jù)包中的數(shù)據(jù)按照第一設(shè)定規(guī)則復(fù)制到任務(wù)控制塊中,并將所述任務(wù)控制塊中的數(shù)據(jù)設(shè)定為完成狀態(tài);組織模塊,用于調(diào)用通用串行總線接口向所述通用串行總線數(shù)據(jù)卡發(fā)送所述任務(wù)控制塊中的數(shù)據(jù),同時繼續(xù)接收所述用戶設(shè)備發(fā)送的其他數(shù)據(jù)包,并將所述其他數(shù)據(jù)包中的數(shù)據(jù)按照所述第一設(shè)定規(guī)則分別復(fù)制到其他任務(wù)控制塊中,將所述其他任務(wù)控制塊組織成待發(fā)送任務(wù)控制塊鏈表;組包模塊,用于在設(shè)定為完成狀態(tài)的所述任務(wù)控制塊中的數(shù)據(jù)發(fā)送完成后,按照第二設(shè)定規(guī)則對所述待發(fā)送任務(wù)控制塊鏈表中的各個任務(wù)控制塊中的數(shù)據(jù)進行組包;發(fā)送模塊,用于調(diào)用所述通用串行總線接口發(fā)送組包后的所述數(shù)據(jù)至所述通用串行總線數(shù)據(jù)卡。
      [0008]與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點:
      [0009]本發(fā)明中數(shù)據(jù)處理方案,USB數(shù)據(jù)卡驅(qū)動程序所在的用戶設(shè)備向USB數(shù)據(jù)卡發(fā)送數(shù)據(jù)包時,在接收到一個待發(fā)送的數(shù)據(jù)包后,將數(shù)據(jù)包復(fù)制到任務(wù)控制塊中,并將被復(fù)制的數(shù)據(jù)包設(shè)定為完成狀態(tài)。當(dāng)被復(fù)制的數(shù)據(jù)包被設(shè)定為完成狀態(tài)后,該設(shè)定為完成狀態(tài)的數(shù)據(jù)包通過USB接口發(fā)送至USB數(shù)據(jù)卡;與此同時,還繼續(xù)接收用戶設(shè)備發(fā)送的數(shù)據(jù)包,避免了現(xiàn)有技術(shù)中,需要將接收到的數(shù)據(jù)包發(fā)送至USB數(shù)據(jù)卡后,才能繼續(xù)接收下一個數(shù)據(jù)包,從而導(dǎo)致數(shù)據(jù)處理速度慢,數(shù)據(jù)傳輸速率低的問題。此外,還將接收到的其他數(shù)據(jù)包中的數(shù)據(jù)復(fù)制到任務(wù)控制塊中組成待發(fā)送任務(wù)控制塊鏈表,在設(shè)定為完成狀態(tài)的所述任務(wù)控制塊中的數(shù)據(jù)發(fā)送完成后,將待發(fā)送任務(wù)控制塊鏈表中的各個任務(wù)控制塊中的數(shù)據(jù)進行組包,一并通過USB接口發(fā)送至USB數(shù)據(jù)卡中,解決了現(xiàn)有的技術(shù)中,USB數(shù)據(jù)卡驅(qū)動程序每次只能發(fā)送一個數(shù)據(jù)包至USB數(shù)據(jù)卡,USB總線的傳輸效率不能得到充分利用,數(shù)據(jù)傳輸速率低的問題。通過本發(fā)明中的數(shù)據(jù)處理方案,將數(shù)據(jù)包進行緩存、組包后發(fā)送至USB數(shù)據(jù)卡,充分利用了 USB總線的傳輸效率,提高了數(shù)據(jù)的傳輸速率。
      【專利附圖】

      【附圖說明】
      [0010]圖1是根據(jù)本發(fā)明實施例一的一種數(shù)據(jù)處理方法的步驟流程圖;
      [0011]圖2是根據(jù)本發(fā)明實施例二的一種數(shù)據(jù)處理方法的步驟流程圖;
      [0012]圖3是根據(jù)本發(fā)明實施例三的一種數(shù)據(jù)處理方法的步驟流程圖;
      [0013]圖4是根據(jù)本發(fā)明實施例四的一種數(shù)據(jù)處理方法的步驟流程圖;
      [0014]圖5是根據(jù)本發(fā)明實施例五的一種數(shù)據(jù)處理方法的步驟流程圖;
      [0015]圖6是采用實施例五中的數(shù)據(jù)處理方法對數(shù)據(jù)進行組包的具體步驟流程圖;
      [0016]圖7是對采用實施例五中的數(shù)據(jù)處理方法得到的組包后的數(shù)據(jù)包進行解包的具體流程圖;
      [0017]圖8是根據(jù)本發(fā)明實施例六的一種數(shù)據(jù)處理裝置的結(jié)構(gòu)框圖;
      [0018]圖9是根據(jù)本發(fā)明實施例七的一種數(shù)據(jù)處理裝置的結(jié)構(gòu)框圖;
      [0019]圖10是根據(jù)本發(fā)明實施例八的一種數(shù)據(jù)處理裝置的結(jié)構(gòu)框圖。
      【具體實施方式】
      [0020]為使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖和【具體實施方式】對本發(fā)明作進一步詳細(xì)的說明。
      [0021]實施例一
      [0022]參照圖1,示出了本發(fā)明實施例一的一種數(shù)據(jù)處理方法的步驟流程圖。[0023]本實施例從USB數(shù)據(jù)發(fā)送側(cè)對本發(fā)明的數(shù)據(jù)處理方法進行說明,本實施例的數(shù)據(jù)處理的步驟如下:
      [0024]步驟S102:接收用戶設(shè)備發(fā)送的數(shù)據(jù)包。
      [0025]本實施例中的數(shù)據(jù)處理方法通過集成了 USB數(shù)據(jù)卡驅(qū)動程序的數(shù)據(jù)處理裝置實現(xiàn),該數(shù)據(jù)處理裝置設(shè)置于終端設(shè)備例如PC上,PC操作系統(tǒng)通過USB數(shù)據(jù)卡驅(qū)動程序發(fā)送需要向USB數(shù)據(jù)卡發(fā)送的數(shù)據(jù)包,USB數(shù)據(jù)卡驅(qū)動程序調(diào)用USB接口向USB數(shù)據(jù)卡發(fā)送數(shù)據(jù)包,PC通過USB數(shù)據(jù)卡驅(qū)動程序調(diào)用接口時需要遵循NDIS。
      [0026]步驟S104:將數(shù)據(jù)包中的數(shù)據(jù)按照第一設(shè)定規(guī)則復(fù)制到任務(wù)控制塊中,并將任務(wù)控制塊中的數(shù)據(jù)設(shè)定為完成狀態(tài)。
      [0027]當(dāng)收到數(shù)據(jù)包時,會由USB數(shù)據(jù)卡驅(qū)動程序?qū)?shù)據(jù)包中的數(shù)據(jù)復(fù)制到任務(wù)控制塊中。
      [0028]第一設(shè)定規(guī)則可以由本領(lǐng)域技術(shù)人員根據(jù)實際情況適當(dāng)設(shè)置,如,可以直接從空閑任務(wù)控制塊鏈表中提取一個空閑任務(wù)控制塊將數(shù)據(jù)包中的數(shù)據(jù)復(fù)制到該空閑任務(wù)控制塊中;還可以從待發(fā)送的任務(wù)控制塊鏈表中取出一個待發(fā)送任務(wù)控制塊將數(shù)據(jù)包中的數(shù)據(jù)復(fù)制到待發(fā)送的任務(wù)控制塊中。
      [0029]在將數(shù)據(jù)包中的數(shù)據(jù)復(fù)制到任務(wù)控制塊中后,將任務(wù)控制塊中的數(shù)據(jù)設(shè)定為完成狀態(tài)。當(dāng)任務(wù)塊中的數(shù)據(jù)為完成狀態(tài)時,USB數(shù)據(jù)卡驅(qū)動程序?qū)⒃摖顟B(tài)反饋給PC操作系統(tǒng),PC操作系統(tǒng)遵循NDIS協(xié)議,根據(jù)需求調(diào)用接口繼續(xù)通過USB數(shù)據(jù)卡驅(qū)動程序發(fā)送需要向USB數(shù)據(jù)卡發(fā)送的數(shù)據(jù)包。需要說明的是,USB數(shù)據(jù)卡驅(qū)動程序并不是一直不停的將任務(wù)控制塊中的數(shù)據(jù)設(shè)定為完成狀態(tài),當(dāng)任務(wù)塊中的數(shù)據(jù)達到一定量時,將不會繼續(xù)將數(shù)據(jù)設(shè)定為完成狀態(tài),而是待定狀態(tài),此時,PC操作系統(tǒng)將不會再向USB數(shù)據(jù)卡驅(qū)動程序發(fā)送數(shù)據(jù)包。
      [0030]步驟S106:調(diào)用USB接口向USB數(shù)據(jù)卡發(fā)送任務(wù)控制塊中的數(shù)據(jù),同時繼續(xù)接收用戶設(shè)備發(fā)送的其他數(shù)據(jù)包,并將其他數(shù)據(jù)包中的數(shù)據(jù)按照第一設(shè)定規(guī)則分別復(fù)制到其他任務(wù)控制塊中,將其他任務(wù)控制塊組織成待發(fā)送任務(wù)控制塊鏈表。
      [0031]這些鏈表中的數(shù)據(jù)在USB接口空閑時,將會被組包發(fā)送至USB數(shù)據(jù)卡。
      [0032]也即,數(shù)據(jù)發(fā)送和數(shù)據(jù)接收同時進行,從而有效地提高了數(shù)據(jù)處理和發(fā)送效率。
      [0033]步驟S108:在設(shè)定為完成狀態(tài)的任務(wù)控制塊中的數(shù)據(jù)發(fā)送完成后,按照第二設(shè)定規(guī)則對待發(fā)送任務(wù)控制塊鏈表中的各個任務(wù)控制塊中的數(shù)據(jù)進行組包。
      [0034]在設(shè)定為完成狀態(tài)的任務(wù)控制塊中的數(shù)據(jù)發(fā)送完成后,即USB接口空閑時,將會把緩存于待發(fā)送任務(wù)控制塊鏈表中的數(shù)據(jù)進行組包,將組包好的數(shù)據(jù)一并通過USB接口發(fā)送至USB數(shù)據(jù)卡中。
      [0035]其中,第二設(shè)定規(guī)則可以由本領(lǐng)域技術(shù)人員根據(jù)實際需求適當(dāng)設(shè)置,如直接將設(shè)定數(shù)量的任務(wù)控制塊中的數(shù)據(jù)進行組包,或者,將一個或多個任務(wù)控制塊中的數(shù)據(jù)復(fù)制到仍有空閑空間的任務(wù)控制塊中后再進行組包等等。
      [0036]步驟SllO:調(diào)用USB接口發(fā)送組包后的數(shù)據(jù)至USB數(shù)據(jù)卡。
      [0037]通過本實施例提供的數(shù)據(jù)處理方法,USB數(shù)據(jù)卡驅(qū)動程序所在的用戶設(shè)備向USB數(shù)據(jù)卡發(fā)送數(shù)據(jù)包時,在接收到一個待發(fā)送的數(shù)據(jù)包后,將數(shù)據(jù)包復(fù)制到任務(wù)控制塊中,并將被復(fù)制的數(shù)據(jù)包設(shè)定為完成狀態(tài)。當(dāng)被復(fù)制的數(shù)據(jù)包被設(shè)定為完成狀態(tài)后,該設(shè)定為完成狀態(tài)的數(shù)據(jù)包通過USB接口發(fā)送至USB數(shù)據(jù)卡;與此同時,還繼續(xù)接收用戶設(shè)備發(fā)送的其他數(shù)據(jù)包,避免了現(xiàn)有技術(shù)中,需要通過USB數(shù)據(jù)卡驅(qū)動程序?qū)⒔邮盏降臄?shù)據(jù)包發(fā)送至USB數(shù)據(jù)卡后,才能繼續(xù)接收下一個數(shù)據(jù)包的問題,從而導(dǎo)致數(shù)據(jù)處理速度慢,數(shù)據(jù)傳輸速率低的問題。此外,還使用USB數(shù)據(jù)卡驅(qū)動程序?qū)⒔邮盏降钠渌麛?shù)據(jù)包中的數(shù)據(jù)復(fù)制到任務(wù)控制塊中組成待發(fā)送任務(wù)控制塊鏈表,在設(shè)定為完成狀態(tài)的任務(wù)控制塊中的數(shù)據(jù)發(fā)送完成后,將待發(fā)送任務(wù)控制塊鏈表中的各個任務(wù)控制塊中的數(shù)據(jù)進行組包,一并通過USB接口發(fā)送至USB數(shù)據(jù)卡中,解決了現(xiàn)有的技術(shù)中,USB數(shù)據(jù)卡驅(qū)動程序每次只能發(fā)送一個數(shù)據(jù)包至USB數(shù)據(jù)卡,USB總線的傳輸效率不能得到充分利用,數(shù)據(jù)傳輸速率低的問題。通過本實施例中的數(shù)據(jù)處理方法,將數(shù)據(jù)包進行緩存、組包后發(fā)送至USB數(shù)據(jù)卡,充分利用了 USB總線的傳輸效率,提高了數(shù)據(jù)的傳輸速率。
      [0038]實施例二
      [0039]參照圖2,示出了本發(fā)明實施例二的一種數(shù)據(jù)處理方法的步驟流程圖。
      [0040]本實施例仍從USB數(shù)據(jù)發(fā)送側(cè)對本發(fā)明的數(shù)據(jù)處理方法進行說明,本實施例中以USB數(shù)據(jù)卡驅(qū)動程序集成的數(shù)據(jù)處理裝置來進行數(shù)據(jù)的處理,數(shù)據(jù)處理方法的具體步驟如下:
      [0041]步驟S202 =USB數(shù)據(jù)卡驅(qū)動程序集成的數(shù)據(jù)處理裝置接收用戶設(shè)備發(fā)送的數(shù)據(jù)包。
      [0042]本實施例中將USB數(shù)據(jù)卡驅(qū)動程序集成的數(shù)據(jù)處理裝置安裝于終端設(shè)備例如PC上,PC操作系統(tǒng)通過USB數(shù)據(jù)卡驅(qū)動程序發(fā)送需要向USB數(shù)據(jù)卡發(fā)送的數(shù)據(jù)包,USB數(shù)據(jù)卡驅(qū)動程序通過調(diào)用USB接口向USB數(shù)據(jù)卡發(fā)送的數(shù)據(jù)包。其中,PC操作系統(tǒng)調(diào)用USB接口時需要遵循NDIS協(xié)議。
      [0043]步驟S204 =USB數(shù)據(jù)卡驅(qū)動程序集成的數(shù)據(jù)處理裝置將數(shù)據(jù)包中的數(shù)據(jù)按照第一設(shè)定規(guī)則復(fù)制到任務(wù)控制塊中,并將任務(wù)控制塊中的數(shù)據(jù)設(shè)定為完成狀態(tài)。
      [0044]優(yōu)選地,USB數(shù)據(jù)卡驅(qū)動程序集成的數(shù)據(jù)處理裝置將數(shù)據(jù)包中的數(shù)據(jù)按照第一設(shè)定規(guī)則復(fù)制到任務(wù)控制塊中的具體步驟包括:USB數(shù)據(jù)卡驅(qū)動程序集成的數(shù)據(jù)處理裝置判斷USB數(shù)據(jù)卡驅(qū)動程序中是否存在待發(fā)送的任務(wù)控制塊;若存在,則將用戶設(shè)備發(fā)送的數(shù)據(jù)包中的數(shù)據(jù)復(fù)制到一個仍有空閑空間的待發(fā)送的任務(wù)控制塊中,其中,該空閑空間大于或等于待復(fù)制的數(shù)據(jù)包的大小;若不存在,則從空閑任務(wù)控制塊鏈表中提取一個空閑的任務(wù)控制塊,將數(shù)據(jù)包中的數(shù)據(jù)復(fù)制到提取的空閑的任務(wù)控制塊中。
      [0045]步驟S206 =USB數(shù)據(jù)卡驅(qū)動程序集成的數(shù)據(jù)處理裝置在調(diào)用USB接口向USB數(shù)據(jù)卡發(fā)送任務(wù)控制塊中的數(shù)據(jù)的同時,繼續(xù)接收用戶設(shè)備發(fā)送的其他數(shù)據(jù)包,并將其他數(shù)據(jù)包中的數(shù)據(jù)按照第一設(shè)定規(guī)則分別復(fù)制到其他任務(wù)控制塊中,將其他任務(wù)控制塊組織成待發(fā)送任務(wù)控制塊鏈表。
      [0046]USB數(shù)據(jù)卡驅(qū)動程序集成的數(shù)據(jù)處理裝置使用USB數(shù)據(jù)卡驅(qū)動程序?qū)⒔邮盏降臄?shù)據(jù)包復(fù)制到任務(wù)控制塊中,在復(fù)制數(shù)據(jù)之前,要選擇將數(shù)據(jù)復(fù)制到哪個任務(wù)控制塊中。如果,待發(fā)送的任務(wù)塊鏈表中,存在待發(fā)送的任務(wù)控制塊,并且該待發(fā)送的任務(wù)控制塊中仍有空閑空間,并且空閑空間大于或等于待復(fù)制的數(shù)據(jù)包的大小,那么,將選擇該待發(fā)送的任務(wù)控制塊,來復(fù)制接收的其他數(shù)據(jù)包中的數(shù)據(jù),將復(fù)制的數(shù)據(jù)與待發(fā)送任務(wù)控制塊中的原來數(shù)據(jù)進行組包。如果,待發(fā)送任務(wù)塊鏈表中,不存在待發(fā)送的任務(wù)控制塊,或者,沒有空閑空間大于或等于待復(fù)制的數(shù)據(jù)包的大小的任務(wù)控制塊,則從空閑任務(wù)控制塊鏈表中提取一個空閑的任務(wù)控制塊,將數(shù)據(jù)包中的數(shù)據(jù)復(fù)制到提取的空閑的任務(wù)控制塊中。
      [0047]當(dāng)待發(fā)送任務(wù)控制塊鏈表中的數(shù)據(jù)包達到一定數(shù)量時,USB數(shù)據(jù)卡驅(qū)動程序集成的數(shù)據(jù)處理裝置將不會再將復(fù)制到任務(wù)控制塊中的數(shù)據(jù)繼續(xù)設(shè)定的為完成狀態(tài),而是將其設(shè)定為其他狀態(tài),例如待定狀態(tài)。那么此時,USB數(shù)據(jù)卡驅(qū)動程序集成的數(shù)據(jù)處理裝置將會把該狀態(tài)反饋給用戶設(shè)備,用戶設(shè)備將不會再繼續(xù)調(diào)用接口發(fā)送數(shù)據(jù)包。
      [0048]步驟S208 =USB數(shù)據(jù)卡驅(qū)動程序集成的數(shù)據(jù)處理裝置在設(shè)定為完成狀態(tài)的任務(wù)控制塊中的數(shù)據(jù)發(fā)送完成后,從待發(fā)送任務(wù)控制塊鏈表中提取一個待發(fā)送的任務(wù)控制塊。
      [0049]步驟S210 =USB數(shù)據(jù)卡驅(qū)動程序集成的數(shù)據(jù)處理裝置判斷待發(fā)送任務(wù)控制塊鏈表中是否存在其他待發(fā)送的任務(wù)控制塊。若不存在,則執(zhí)行步驟S212 ;若存在,則執(zhí)行步驟S214。
      [0050]步驟S212:當(dāng)判斷待發(fā)送任務(wù)控制塊鏈表中不存在其他待發(fā)送的任務(wù)控制塊時,USB數(shù)據(jù)卡驅(qū)動程序集成的數(shù)據(jù)處理裝置直接調(diào)用USB接口發(fā)送提取的任務(wù)控制塊中的數(shù)據(jù)至USB數(shù)據(jù)卡,結(jié)束本次流程。
      [0051]步驟S214:當(dāng)判斷待發(fā)送任務(wù)控制塊鏈表中存在其他待發(fā)送的任務(wù)控制塊時,則USB數(shù)據(jù)卡驅(qū)動程序集成的數(shù)據(jù)處理裝置從待發(fā)送任務(wù)控制塊鏈表中再提取其他待發(fā)送的任務(wù)控制塊,對提取的所有待發(fā)送任務(wù)控制塊中的數(shù)據(jù)進行組包。
      [0052]具體地,USB數(shù)據(jù)卡驅(qū)動程序集成的數(shù)據(jù)處理裝置從待發(fā)送任務(wù)控制塊鏈表中再提取其他待發(fā)送的任務(wù)控制塊,對提取的所有待發(fā)送任務(wù)控制塊中的數(shù)據(jù)進行組包的步驟包括:
      [0053]步驟S2142 =USB數(shù)據(jù)卡驅(qū)動程序集成的數(shù)據(jù)處理裝置從待發(fā)送任務(wù)控制塊鏈表中再提取一個其他待發(fā)送的任務(wù)控制塊。
      [0054]步驟S2144 =USB數(shù)據(jù)卡驅(qū)動程序集成的數(shù)據(jù)處理裝置判斷先后提取的兩個待發(fā)送的任務(wù)控制塊的數(shù)據(jù)量大小之和是否小于或等于設(shè)定值;若是,則執(zhí)行步驟S2146 ;若否,則執(zhí)行步驟S2148。
      [0055]其中,設(shè)定值可以由本領(lǐng)域技術(shù)人員根據(jù)實際情況適當(dāng)設(shè)置,較優(yōu)地,設(shè)定值可以設(shè)置成32KB,當(dāng)然也可以是其他的值。
      [0056]步驟S2146:若兩個待發(fā)送的任務(wù)控制塊的數(shù)據(jù)量大小之和小于或等于設(shè)定值,則USB數(shù)據(jù)卡驅(qū)動程序集成的數(shù)據(jù)處理裝置將提取的待發(fā)送的任務(wù)控制塊中的一個任務(wù)控制塊中的數(shù)據(jù)復(fù)制到另一個任務(wù)控制塊中進行組包,并將被復(fù)制了數(shù)據(jù)的任務(wù)控制塊鏈接入空閑任務(wù)控制塊鏈表,返回步驟S210。
      [0057]其中,復(fù)制和被復(fù)制的任務(wù)控制塊可以是兩個任務(wù)控制塊中的任何一個。
      [0058]在將一個任務(wù)控制塊中的數(shù)據(jù)復(fù)制到另一個任務(wù)控制塊中后,將被復(fù)制了數(shù)據(jù)的任務(wù)控制塊鏈接入空閑任務(wù)控制塊鏈表,返回步驟S210繼續(xù)判斷待發(fā)送任務(wù)控制塊鏈表中是否存在其他待發(fā)送的任務(wù)控制塊。
      [0059]在對待發(fā)送任務(wù)控制塊鏈表中的各個任務(wù)控制塊中的數(shù)據(jù)進行組包時,可以依次對待發(fā)送的任務(wù)控制塊中的各個數(shù)據(jù)包進行組包。組包時,每當(dāng)一個待發(fā)送任務(wù)控制塊中的數(shù)據(jù)被復(fù)制到另一個待發(fā)送任務(wù)控制塊中時,即進行每次組包時,都會修改組包后的數(shù)據(jù)包中的數(shù)據(jù)的總包數(shù),以及各個數(shù)據(jù)包的包長信息。組包后的數(shù)據(jù)包中包括:組包的數(shù)據(jù)包的總包數(shù)、各個數(shù)據(jù)包的包長和實際數(shù)據(jù)。
      [0060]步驟S2148:若兩個待發(fā)送的任務(wù)控制塊的數(shù)據(jù)量大小之和大于所述設(shè)定值,則USB數(shù)據(jù)卡驅(qū)動程序集成的數(shù)據(jù)處理裝置通過USB數(shù)據(jù)卡驅(qū)動程序?qū)⒑筇崛〉拇l(fā)送的任務(wù)控制塊放回待發(fā)送任務(wù)控制塊鏈表中,執(zhí)行步驟S216。
      [0061]步驟S216 =USB數(shù)據(jù)卡驅(qū)動程序集成的數(shù)據(jù)處理裝置調(diào)用USB接口發(fā)送組包后的數(shù)據(jù)至USB數(shù)據(jù)卡。
      [0062]通過本實施例提供的數(shù)據(jù)處理方法,USB數(shù)據(jù)卡驅(qū)動程序集成的數(shù)據(jù)處理裝置向USB數(shù)據(jù)卡發(fā)送數(shù)據(jù)包時,在接收到用戶設(shè)備發(fā)送的一個數(shù)據(jù)包后,將數(shù)據(jù)包復(fù)制到任務(wù)控制塊中,并將被復(fù)制的數(shù)據(jù)包設(shè)定為完成狀態(tài)。當(dāng)被復(fù)制的數(shù)據(jù)包被設(shè)定為完成狀態(tài)后,該設(shè)定為完成狀態(tài)的數(shù)據(jù)包通過USB接口發(fā)送至USB數(shù)據(jù)卡;與此同時,還繼續(xù)接收用戶設(shè)備發(fā)送的其他數(shù)據(jù)包,避免了現(xiàn)有技術(shù)中,需要通過USB數(shù)據(jù)卡驅(qū)動程序?qū)⒔邮盏降臄?shù)據(jù)包發(fā)送至USB數(shù)據(jù)卡后,才能繼續(xù)接收下一個數(shù)據(jù)包,從而導(dǎo)致數(shù)據(jù)處理速度慢,數(shù)據(jù)傳輸速率低的問題。此外,使用USB數(shù)據(jù)卡驅(qū)動程序?qū)⒔邮盏降钠渌麛?shù)據(jù)包中的數(shù)據(jù)復(fù)制到任務(wù)控制塊中組成待發(fā)送任務(wù)控制塊鏈表,在設(shè)定為完成狀態(tài)的所述任務(wù)控制塊中的數(shù)據(jù)發(fā)送完成后,將數(shù)據(jù)包中的數(shù)據(jù)進行緩存,待USB接口空閑后,將待發(fā)送任務(wù)控制塊鏈表中的各個任務(wù)控制塊中的數(shù)據(jù)進行組包,一并通過USB接口發(fā)送至USB數(shù)據(jù)卡中,解決了現(xiàn)有的技術(shù)中,通過USB數(shù)據(jù)卡驅(qū)動程序每次只能發(fā)送一個數(shù)據(jù)包至USB數(shù)據(jù)卡,USB總線的傳輸效率不能得到充分利用,數(shù)據(jù)傳輸速率低的問題。通過本實施例中的數(shù)據(jù)處理方法,通過USB數(shù)據(jù)卡驅(qū)動程序?qū)?shù)據(jù)包進行緩存、組包后發(fā)送至USB數(shù)據(jù)卡,充分利用了 USB總線的傳輸效率,提高了數(shù)據(jù)的傳輸速率。
      [0063]實施例三
      [0064]參照圖3,示出了本發(fā)明實施例三的一種數(shù)據(jù)處理方法的步驟流程圖。
      [0065]本實施例從USB數(shù)據(jù)接收側(cè)對本發(fā)明中的數(shù)據(jù)處理方法進行說明,本實施例的數(shù)據(jù)處理的具體步驟如下:
      [0066]步驟S302 =USB數(shù)據(jù)卡接收USB數(shù)據(jù)卡驅(qū)動程序通過USB接口發(fā)送的組包后的數(shù)據(jù)包。其中,組包后的數(shù)據(jù)包由USB數(shù)據(jù)卡驅(qū)動程序通過以下方式進行組包:USB數(shù)據(jù)卡驅(qū)動程序接收用戶設(shè)備發(fā)送的數(shù)據(jù)包;將數(shù)據(jù)包中的數(shù)據(jù)按照第一設(shè)定規(guī)則復(fù)制到任務(wù)控制塊中,并將任務(wù)控制塊中的數(shù)據(jù)設(shè)定為完成狀態(tài);在調(diào)用USB接口向USB數(shù)據(jù)卡發(fā)送任務(wù)控制塊中的數(shù)據(jù)的同時,繼續(xù)接收需要向USB數(shù)據(jù)卡發(fā)送的其他數(shù)據(jù)包,并將其他數(shù)據(jù)包中的數(shù)據(jù)按照第一設(shè)定規(guī)則分別復(fù)制到其他任務(wù)控制塊中,將其他任務(wù)控制塊組織成待發(fā)送任務(wù)控制塊鏈表;在設(shè)定為完成狀態(tài)的任務(wù)控制塊中的數(shù)據(jù)發(fā)送完成后,按照第二設(shè)定規(guī)則對待發(fā)送任務(wù)控制塊鏈表中的各個任務(wù)控制塊中的數(shù)據(jù)進行組包。
      [0067]需要說明的是,USB數(shù)據(jù)卡驅(qū)動程序在按照第一設(shè)定規(guī)則對接收到的數(shù)據(jù)包中的數(shù)據(jù)復(fù)制到任務(wù)控制塊中的過程可參考實施例一或?qū)嵤├械膹?fù)制過程。并且,在按照第二設(shè)定規(guī)則對待發(fā)送的任務(wù)控制塊鏈表中的各個任務(wù)控制塊中的數(shù)據(jù)進行組包的過程,也可參考實施例一或?qū)嵤├械慕M包過程。
      [0068]步驟S304:USB數(shù)據(jù)卡對接收的組包后的數(shù)據(jù)包進行解包。
      [0069]通過本實施例中提供的數(shù)據(jù)處理方法,在USB數(shù)據(jù)卡接收到經(jīng)終端設(shè)備側(cè)的USB數(shù)據(jù)卡驅(qū)動程序組包后的數(shù)據(jù)包后,USB數(shù)據(jù)卡將組包后的數(shù)據(jù)包還原為原始數(shù)據(jù)包,進而對各個數(shù)據(jù)包中的數(shù)據(jù)進行處理,避免了現(xiàn)有的USB數(shù)據(jù)傳輸中,一方面,需要在接收完一個數(shù)據(jù)包后向USB數(shù)據(jù)卡驅(qū)動程序側(cè)返回確認(rèn)響應(yīng)才能再次接收下一個數(shù)據(jù)包,數(shù)據(jù)傳輸速度和效率均低的問題;另一方面,這種單個數(shù)據(jù)包的接收也造成USB數(shù)據(jù)卡要處理完一個數(shù)據(jù)包的數(shù)據(jù)后如果需要處理下一個數(shù)據(jù)包,那么還要等待下一個數(shù)據(jù)包發(fā)送至USB數(shù)據(jù)卡后才能再對其進行處理,導(dǎo)致處理效率低的問題,節(jié)省了等待數(shù)據(jù)包發(fā)送至USB數(shù)據(jù)卡的時間,提高了數(shù)據(jù)的傳輸速率。
      [0070]實施例四
      [0071]參照圖4,示出了本發(fā)明實施例四的一種數(shù)據(jù)處理方法的步驟流程圖。
      [0072]本實施例依然從USB數(shù)據(jù)接收側(cè)對本發(fā)明中的數(shù)據(jù)處理方法進行說明,本實施例的數(shù)據(jù)處理方法的具體步驟如下:
      [0073]步驟S402 =USB數(shù)據(jù)卡接收USB數(shù)據(jù)卡驅(qū)動程序通過USB接口發(fā)送的組包后的數(shù)據(jù)包。
      [0074]其中,組包后的數(shù)據(jù)包由USB數(shù)據(jù)卡驅(qū)動程序通過以下方式進行組包:USB數(shù)據(jù)卡驅(qū)動程序接收用戶設(shè)備發(fā)送的數(shù)據(jù)包;將數(shù)據(jù)包中的數(shù)據(jù)按照第一設(shè)定規(guī)則復(fù)制到任務(wù)控制塊中,并將任務(wù)控制塊中的數(shù)據(jù)設(shè)定為完成狀態(tài);在調(diào)用USB接口向USB數(shù)據(jù)卡發(fā)送任務(wù)控制塊中的數(shù)據(jù)的同時,繼續(xù)接收用戶設(shè)備發(fā)送的其他數(shù)據(jù)包,并將其他數(shù)據(jù)包中的數(shù)據(jù)按照第一設(shè)定規(guī)則分別復(fù)制到其他任務(wù)控制塊中,將其他任務(wù)控制塊組織成待發(fā)送任務(wù)控制塊鏈表;在設(shè)定為完成狀態(tài)的任務(wù)控制塊中的數(shù)據(jù)發(fā)送完成后,按照第二設(shè)定規(guī)則對待發(fā)送任務(wù)控制塊鏈表中的各個任務(wù)控制塊中的數(shù)據(jù)進行組包。
      [0075]本實施例中,設(shè)定組包后的數(shù)據(jù)包中包括:組包的數(shù)據(jù)包的總包數(shù)、各個數(shù)據(jù)包的包長和實際數(shù)據(jù)。
      [0076]步驟S404 =USB數(shù)據(jù)卡獲取組包后的數(shù)據(jù)包的總包數(shù)和各個數(shù)據(jù)包的包長。
      [0077]步驟S406 =USB數(shù)據(jù)卡依據(jù)組包后的數(shù)據(jù)包的總包數(shù)和各個數(shù)據(jù)包的包長對組包后的數(shù)據(jù)包進行解包。
      [0078]包括:從第一個數(shù)據(jù)包開始,依次判斷組包后的數(shù)據(jù)包中各個數(shù)據(jù)包的包長是否滿足設(shè)定標(biāo)準(zhǔn);若不滿足設(shè)定標(biāo)準(zhǔn),則直接停止對剩余的組包后的數(shù)據(jù)包進行解包;若滿足設(shè)定標(biāo)準(zhǔn),則對滿足設(shè)定標(biāo)準(zhǔn)的數(shù)據(jù)包進行解包并返回依次判斷所述組包后的數(shù)據(jù)包中各個數(shù)據(jù)包的包長是否滿足設(shè)定標(biāo)準(zhǔn)的步驟。
      [0079]—種優(yōu)選的判斷組包后的數(shù)據(jù)包中各個數(shù)據(jù)包的包長是否滿足設(shè)定標(biāo)準(zhǔn)為:獲取一個數(shù)據(jù)包的包長,將該包長與設(shè)定值進行對比,例如將設(shè)定值設(shè)為1500個字節(jié),那么判斷包長是否小于或等于設(shè)定值1500個字節(jié),若小于或等于設(shè)定值1500個字節(jié),則可判定該數(shù)據(jù)包的包長符合標(biāo)準(zhǔn),則可進行解包過程;若不大于該設(shè)定值1500個字節(jié),則停止解包操作,不再對該組包后的數(shù)據(jù)包中剩余的數(shù)據(jù)包進行解包。需要說明的是,1500個字節(jié)僅為示例性說明,可以依據(jù)需求設(shè)定為任意適當(dāng)?shù)闹怠?br> [0080]USB數(shù)據(jù)卡在判斷第一個數(shù)據(jù)包的包長滿足設(shè)定標(biāo)準(zhǔn)后,則會復(fù)制該數(shù)據(jù)包中的數(shù)據(jù),并對數(shù)據(jù)進行處理;當(dāng)處理完第一個數(shù)據(jù)包中的數(shù)據(jù)后,接著判斷第二個數(shù)據(jù)包的包長是否滿足設(shè)定標(biāo)準(zhǔn),如果第二個數(shù)據(jù)包的包長也滿足設(shè)定標(biāo)準(zhǔn),那么也會復(fù)制第二個數(shù)據(jù)包中的數(shù)據(jù),進行處理,依次循環(huán)操作,直至所有的數(shù)據(jù)包中的數(shù)據(jù)都處理完成,或者遇到包長不滿足設(shè)定標(biāo)準(zhǔn)的數(shù)據(jù)包停止解包。[0081]當(dāng)某一數(shù)據(jù)包的包長不滿足設(shè)定標(biāo)準(zhǔn)時,則說明該數(shù)據(jù)包的組包過程可能出現(xiàn)了問題,即組包后的數(shù)據(jù)包出現(xiàn)了問題,則將停止對該組包后的數(shù)據(jù)包進行解包。例如:某一組包后的數(shù)據(jù)包中包含10個數(shù)據(jù)包,那么USB數(shù)據(jù)卡依次對組包后的數(shù)據(jù)包進行解包。假設(shè),前5個數(shù)據(jù)包的包長都是滿足設(shè)定標(biāo)準(zhǔn)的,那么USB數(shù)據(jù)卡就對前5個數(shù)據(jù)包進行解包,復(fù)制前5個數(shù)據(jù)包中的數(shù)據(jù),并處理完這些數(shù)據(jù);到第6個數(shù)據(jù)包時,判斷第6個數(shù)據(jù)包的包長不滿足設(shè)定標(biāo)準(zhǔn),那么USB數(shù)據(jù)卡將停止解包,即不會繼續(xù)處理后邊剩余的數(shù)據(jù)包。
      [0082]通過本實施例中提供的數(shù)據(jù)處理方法,在USB數(shù)據(jù)卡接收到經(jīng)終端設(shè)備側(cè)的USB數(shù)據(jù)卡驅(qū)動程序組包后的數(shù)據(jù)包后,USB數(shù)據(jù)卡獲取組包后的數(shù)據(jù)包的總包數(shù)和各個數(shù)據(jù)包的包長,依據(jù)總包數(shù)和各個數(shù)據(jù)包的包長對組包后的數(shù)據(jù)包進行解包,使USB數(shù)據(jù)卡能夠還原原始數(shù)據(jù),并對原始數(shù)據(jù)進行進一步的處理。并且,在解包的過程中,USB數(shù)據(jù)卡會判斷數(shù)據(jù)包的包長是否滿足設(shè)定標(biāo)準(zhǔn),一旦數(shù)據(jù)包的包長不滿足設(shè)定標(biāo)準(zhǔn)時,則會立即停止解包,能夠節(jié)省解包時間,保證數(shù)據(jù)的準(zhǔn)確性。
      [0083]實施例五
      [0084]參照圖5,示出了本發(fā)明實施例五的一種數(shù)據(jù)處理方法的流程圖。
      [0085]本實施例中,設(shè)定USB數(shù)據(jù)卡驅(qū)動程序設(shè)置于PC中,從PC與USB數(shù)據(jù)卡之間的數(shù)據(jù)交互的角度對本發(fā)明的數(shù)據(jù)處理方法進行說明。
      [0086]本實施例的數(shù)據(jù)處理方法步驟如下:
      [0087]步驟S502:PC操作系統(tǒng)遵循NDIS協(xié)議,根據(jù)NDIS協(xié)議調(diào)用接口 MPSendPacket發(fā)送上行數(shù)據(jù)包給PC的USB數(shù)據(jù)卡驅(qū)動程序,其中,上行數(shù)據(jù)包即待發(fā)送給USB數(shù)據(jù)卡的數(shù)據(jù)包。
      [0088]其中,MPSendPacket接口是注冊給NDIS的發(fā)送接口,當(dāng)需要發(fā)送IP (InternetProtocol,網(wǎng)絡(luò)之間互聯(lián)的協(xié)議)數(shù)據(jù)包時會調(diào)用到MpSendPacket接口。
      [0089]步驟S504 =USB數(shù)據(jù)卡驅(qū)動程序?qū)?shù)據(jù)包的狀態(tài)設(shè)定為NDIS_STATUS_PENDING,即待定狀態(tài)。
      [0090]步驟S506:USB數(shù)據(jù)卡驅(qū)動程序判斷待發(fā)送任務(wù)控制塊鏈表QueueSendTCB中是否存在待發(fā)送的任務(wù)控制塊TCB。若存在,則執(zhí)行步驟S508,若不存在,則執(zhí)行步驟S510。
      [0091]待發(fā)送任務(wù)控制塊鏈表QueueSendTCB是保存待發(fā)送TCB (Tast Control Block,任務(wù)控制塊)指針的鏈表。
      [0092]步驟S508:USB數(shù)據(jù)卡驅(qū)動程序從QueueSendTCB中取出一個TCB復(fù)制數(shù)據(jù)包中的數(shù)據(jù),執(zhí)行步驟S512。
      [0093]步驟S510:USB數(shù)據(jù)卡驅(qū)動程序從空閑任務(wù)控制塊鏈表SendFreeList中取出一個空閑的TCB,復(fù)制數(shù)據(jù)包中的數(shù)據(jù),執(zhí)行步驟S512。
      [0094]如果QueueSendTCB有待發(fā)送的TCB,將IP數(shù)據(jù)包中的數(shù)據(jù)復(fù)制到該TCB中;否則,從SendFreeList中拿出一個空閑的TCB來保存IP數(shù)據(jù)包中的數(shù)據(jù)。
      [0095]步驟S512 =USB數(shù)據(jù)卡驅(qū)動程序?qū)臓顟B(tài)設(shè)定為NDIS_STATUS_C0MPLETE。
      [0096]NDIS_STATUS_C0MPLETE即完成狀態(tài),數(shù)據(jù)包被復(fù)制完成后,該數(shù)據(jù)包的狀態(tài)被設(shè)定為NDIS_STATUS_C0MPLETE狀態(tài),PC操作系統(tǒng)在數(shù)據(jù)包的狀態(tài)被設(shè)定為NDIS_STATUS_COMPLETE狀態(tài)之后,會繼續(xù)發(fā)送下一個IP數(shù)據(jù)包。
      [0097]步驟S514:USB數(shù)據(jù)卡驅(qū)動程序判斷USB接口是否空閑。若空閑,則執(zhí)行步驟S516 ;若不空閑,則執(zhí)行步驟S518。
      [0098]步驟S516 =USB數(shù)據(jù)卡驅(qū)動程序調(diào)用USB接口進行設(shè)定為完成狀態(tài)的TCB中的數(shù)據(jù)包的發(fā)送,執(zhí)行步驟S520。
      [0099]步驟S518 =USB數(shù)據(jù)卡驅(qū)動程序?qū)?fù)制了數(shù)據(jù)的任務(wù)控制塊TCB放入QueueSendTCB中,待發(fā)送,結(jié)束本次發(fā)送流程。
      [0100]當(dāng)USB空閑時,USB數(shù)據(jù)卡驅(qū)動程序調(diào)用USB發(fā)送函數(shù)實現(xiàn)USB接口,發(fā)送TCB里的數(shù)據(jù);否則就把TCB塞回QueueSendTCB。
      [0101]步驟S520 =USB數(shù)據(jù)卡驅(qū)動程序確定數(shù)據(jù)包發(fā)送完成。
      [0102]數(shù)據(jù)包發(fā)送完成后,此時USB空閑,USB數(shù)據(jù)卡驅(qū)動程序會調(diào)用進USB的發(fā)送完成函數(shù)。在這里進行組包動作,組包完成后,進行再次發(fā)送。
      [0103]步驟S522 =USB數(shù)據(jù)卡驅(qū)動程序判斷QueueSendTCB中是否有待發(fā)送的TCB。若存在待發(fā)送的TCB,則執(zhí)行步驟S524。若不存在待發(fā)送的TCB則結(jié)束本次發(fā)送流程。
      [0104]步驟S524 =USB數(shù)據(jù)卡驅(qū)動程序查詢QueueSendTCB,并進行組包操作,返回步驟S516。
      [0105]在執(zhí)行完步驟S524后,再次返回步驟S516,即對QueueSendTCB中的數(shù)據(jù)進行組包操作,將組包后的數(shù)據(jù)發(fā)送至USB數(shù)據(jù)卡。
      [0106]其中,上述對QueueSendTCB中的數(shù)據(jù)進行組包操作的具體流程參照附圖6。
      [0107]具體地,對QueueSendTCB中的數(shù)據(jù)進行組包操作的步驟如下:
      [0108]步驟S602 =USB數(shù)據(jù)卡驅(qū)動程序確定USB已發(fā)送完成當(dāng)前的數(shù)據(jù)包。
      [0109]步驟S604 =USB數(shù)據(jù)卡驅(qū)動程序判斷QueueSendTCB中是否有待發(fā)送的TCB。若存在,執(zhí)行步驟S606 ;若不存在,則結(jié)束本次組包過程。
      [0110]步驟S606 =USB數(shù)據(jù)卡驅(qū)動程序從QueueSendTCB中取一個TCB出來。
      [0111]為便于區(qū)別,將此次提取的TCB命名為pTCB。
      [0112]步驟S608 =USB數(shù)據(jù)卡驅(qū)動程序判斷QueueSendTCB中是否還有待發(fā)送的TCB。若存在,執(zhí)行步驟S610 ;若不存在,則調(diào)用USB發(fā)送函數(shù),發(fā)送pTCB里的數(shù)據(jù)。
      [0113]步驟S610 =USB數(shù)據(jù)卡驅(qū)動程序從QueueSendTCB中再提取一個TCB出來。
      [0114]為便于區(qū)別,將此次提取的TCB命名為PTempTCB。
      [0115]步驟S612:USB數(shù)據(jù)卡驅(qū)動程序檢查兩個TCB中的數(shù)據(jù)包的包長和是否小于32KB。若兩個TCB中的數(shù)據(jù)包的包長和是小于或等于32KB,則執(zhí)行步驟S614 ;若大于32KB則直接執(zhí)行步驟S616。
      [0116]也即,如果PTCB和PTempTCB數(shù)據(jù)滿足組包條件,將PTempTCB的數(shù)據(jù)copy到PTCB數(shù)據(jù)中。把PTempTCB數(shù)據(jù)信息清除,并塞回QueueTCB中。
      [0117]需要說明的是:32KB僅為示例性說明,其它適當(dāng)值同樣適用。
      [0118]步驟S614 =USB數(shù)據(jù)卡驅(qū)動程序?qū)TempTCB中的數(shù)據(jù)復(fù)制到PTCB中。
      [0119]將PTempTCB中的數(shù)據(jù)復(fù)制到PTCB中后,將PTempTCB中的數(shù)據(jù)刪除。將PTCB中的數(shù)據(jù)包與PTempTCB中的數(shù)據(jù)包進行組包。
      [0120]當(dāng)然,在實際應(yīng)用中,也可以將PTCB中的數(shù)據(jù)復(fù)制到PTempTCB中。
      [0121]步驟S616 =USB數(shù)據(jù)卡驅(qū)動程序?qū)TempTCB放回QueueSendTCB中。
      [0122]步驟S618 =USB數(shù)據(jù)卡驅(qū)動程序修改PTCB中記錄的包長和包數(shù)的信息,調(diào)用USB發(fā)送函數(shù),發(fā)送PTCB中的數(shù)據(jù)。
      [0123]需要說明的是,上述將PTCB與PTempTCB進行組包僅為簡單組包示例,在整個組包的流程中,如果QueueSendTCB中存在多個待發(fā)送的TCB,那么將會循環(huán)上述組包的步驟,對各個待發(fā)送的TCB中的數(shù)據(jù)進行組包。
      [0124]一種組包后的數(shù)據(jù)包的格式如表1所示:
      [0125]表1
      【權(quán)利要求】
      1.一種數(shù)據(jù)處理方法,其特征在于,包括: 接收用戶設(shè)備發(fā)送的數(shù)據(jù)包; 將所述數(shù)據(jù)包中的數(shù)據(jù)按照第一設(shè)定規(guī)則復(fù)制到任務(wù)控制塊中,并將所述任務(wù)控制塊中的數(shù)據(jù)設(shè)定為完成狀態(tài); 調(diào)用通用串行總線接口向所述通用串行總線數(shù)據(jù)卡發(fā)送所述任務(wù)控制塊中的數(shù)據(jù),同時繼續(xù)接收所述用戶設(shè)備發(fā)送的其他數(shù)據(jù)包,并將所述其他數(shù)據(jù)包中的數(shù)據(jù)按照所述第一設(shè)定規(guī)則分別復(fù)制到其他任務(wù)控制塊中,將所述其他任務(wù)控制塊組織成待發(fā)送任務(wù)控制塊鏈表; 在設(shè)定為完成狀態(tài)的所述任務(wù)控制塊中的數(shù)據(jù)發(fā)送完成后,按照第二設(shè)定規(guī)則對所述待發(fā)送任務(wù)控制塊鏈表中的各個任務(wù)控制塊中的數(shù)據(jù)進行組包; 調(diào)用所述通用串行總線接口發(fā)送組包后的所述數(shù)據(jù)至所述通用串行總線數(shù)據(jù)卡。
      2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述按照第二設(shè)定規(guī)則對所述待發(fā)送任務(wù)控制塊鏈表中的各個任務(wù)控制塊中的數(shù)據(jù)進行組包步驟包括: 從所述待發(fā)送任務(wù)控制塊鏈表中提取一個待發(fā)送的任務(wù)控制塊; 判斷所述待發(fā)送任務(wù)控制塊鏈表中是否存在其他待發(fā)送的任務(wù)控制塊; 若不存在,則直接調(diào)用所述通用串行總線接口發(fā)送提取的所述任務(wù)控制塊中的數(shù)據(jù)至所述通用串行總線數(shù)據(jù)卡; 若存在,則從所述待發(fā)送任務(wù)控制塊鏈表中再提取其他待發(fā)送的任務(wù)控制塊,對提取的所有待發(fā)送任務(wù)控制塊中的 數(shù)據(jù)進行組包。
      3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述從所述待發(fā)送任務(wù)控制塊鏈表中再提取其他待發(fā)送的任務(wù)控制塊,對提取的所有待發(fā)送任務(wù)控制塊中的數(shù)據(jù)進行組包的步驟包括: 從所述待發(fā)送任務(wù)控制塊鏈表中再提取一個其他待發(fā)送的任務(wù)控制塊; 判斷先后提取的兩個所述待發(fā)送的任務(wù)控制塊的數(shù)據(jù)量大小之和是否小于或等于設(shè)定值,其中,所述設(shè)定值小于或等于所述任務(wù)控制塊的大??; 若小于或等于所述設(shè)定值,則將提取的待發(fā)送的任務(wù)控制塊中的一個任務(wù)控制塊中的數(shù)據(jù)復(fù)制到另一個任務(wù)控制塊中進行組包,并將被復(fù)制了數(shù)據(jù)的任務(wù)控制塊鏈接入空閑任務(wù)控制塊鏈表,返回所述判斷所述待發(fā)送任務(wù)控制塊鏈表中是否存在其他待發(fā)送的任務(wù)控制塊的步驟; 若大于所述設(shè)定值,則將后提取的所述待發(fā)送的任務(wù)控制塊放回所述待發(fā)送任務(wù)控制塊鏈表中。
      4.根據(jù)權(quán)利要求1至3任一項所述的方法,其特征在于,組包后的數(shù)據(jù)包中包括:組包的數(shù)據(jù)包的總包數(shù)、各個數(shù)據(jù)包的包長和實際數(shù)據(jù)。
      5.根據(jù)權(quán)利要求1至3任一項所述的方法,其特征在于,所述將所述數(shù)據(jù)包中的數(shù)據(jù)按照第一設(shè)定規(guī)則復(fù)制到任務(wù)控制塊中步驟包括: 判斷通用串行總線數(shù)據(jù)卡驅(qū)動程序中是否存在待發(fā)送的任務(wù)控制塊; 若存在,則將所述用戶設(shè)備發(fā)送的數(shù)據(jù)包中的數(shù)據(jù)復(fù)制到一個仍有空閑空間的待發(fā)送的任務(wù)控制塊中,其中,所述空閑空間大于或等于待復(fù)制的所述數(shù)據(jù)包的大??; 若不存在,則從空閑任務(wù)控制塊鏈表中提取一個空閑的任務(wù)控制塊,將所述數(shù)據(jù)包中的數(shù)據(jù)復(fù)制到提取的所述空閑的任務(wù)控制塊中。
      6.一種數(shù)據(jù)處理裝置,其特征在于,包括: 接收模塊,用于接收用戶設(shè)備發(fā)送的數(shù)據(jù)包; 復(fù)制模塊,用于將所述數(shù)據(jù)包中的數(shù)據(jù)按照第一設(shè)定規(guī)則復(fù)制到任務(wù)控制塊中,并將所述任務(wù)控制塊中的數(shù)據(jù)設(shè)定為完成狀態(tài); 組織模塊,用于調(diào)用通用串行總線接口向所述通用串行總線數(shù)據(jù)卡發(fā)送所述任務(wù)控制塊中的數(shù)據(jù),同時繼續(xù)接收所述用戶設(shè)備發(fā)送的其他數(shù)據(jù)包,并將所述其他數(shù)據(jù)包中的數(shù)據(jù)按照所述第一設(shè)定規(guī)則分別復(fù)制到其他任務(wù)控制塊中,將所述其他任務(wù)控制塊組織成待發(fā)送任務(wù)控制塊鏈表; 組包模塊,用于在設(shè)定為完成狀態(tài)的所述任務(wù)控制塊中的數(shù)據(jù)發(fā)送完成后,按照第二設(shè)定規(guī)則對所述待發(fā)送任務(wù)控制塊鏈表中的各個任務(wù)控制塊中的數(shù)據(jù)進行組包; 發(fā)送模塊,用于調(diào)用所述通用串行總線接口發(fā)送組包后的所述數(shù)據(jù)至所述通用串行總線數(shù)據(jù)卡。
      7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述組包模塊包括: 提取子模塊,用于在設(shè)定為完成狀態(tài)的所述任務(wù)控制塊中的數(shù)據(jù)發(fā)送完成后,從所述待發(fā)送任務(wù)控制塊鏈表中提取一個待 發(fā)送的任務(wù)控制塊; 第一判斷子模塊,用于判斷所述待發(fā)送任務(wù)控制塊鏈表中是否存在其他待發(fā)送的任務(wù)控制塊; 執(zhí)行子模塊,用于在所述第一判斷子模塊的判斷結(jié)果為不存在時,調(diào)用所述發(fā)送模塊在所述第一判斷子模塊的判斷結(jié)果為存在時,從所述待發(fā)送任務(wù)控制塊鏈表中再提取其他待發(fā)送的任務(wù)控制塊,對提取的所有待發(fā)送任務(wù)控制塊中的數(shù)據(jù)進行組包。
      8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述執(zhí)行子模塊在從所述待發(fā)送任務(wù)控制塊鏈表中再提取其他待發(fā)送的任務(wù)控制塊,對提取的所有待發(fā)送任務(wù)控制塊中的數(shù)據(jù)進行組包時: 從所述待發(fā)送任務(wù)控制塊鏈表中再提取一個其他待發(fā)送的任務(wù)控制塊;判斷先后提取的兩個所述待發(fā)送的任務(wù)控制塊的數(shù)據(jù)量大小之和是否小于或等于設(shè)定值,其中,所述設(shè)定值小于或等于所述任務(wù)控制塊的大小;若小于或等于所述設(shè)定值時,將提取的待發(fā)送的任務(wù)控制塊中的一個任務(wù)控制塊中的數(shù)據(jù)復(fù)制到另一個任務(wù)控制塊中進行組包,并將被復(fù)制了數(shù)據(jù)的任務(wù)控制塊鏈接入空閑任務(wù)控制塊鏈表,返回所述第一判斷子模塊;若大于所述設(shè)定值時,將后提取的所述待發(fā)送的任務(wù)控制塊放回所述待發(fā)送任務(wù)控制塊鏈表中。
      9.根據(jù)權(quán)利要求6至8任一項所述的裝置,其特征在于,組包后的數(shù)據(jù)包中包括:組包的數(shù)據(jù)包的總包數(shù)、各個數(shù)據(jù)包的包長和實際數(shù)據(jù)。
      10.根據(jù)權(quán)利要求6至8任一項所述的裝置,其特征在于,所述復(fù)制模塊包括: 判斷子模塊,用于判斷通用串行總線數(shù)據(jù)卡驅(qū)動程序中是否存在待發(fā)送的任務(wù)控制塊; 第一復(fù)制子模塊,用于在所述判斷子模塊判斷結(jié)果為存在時,則將所述用戶設(shè)備發(fā)送的數(shù)據(jù)包中的數(shù)據(jù)復(fù)制到一個仍有空閑空間的待發(fā)送的任務(wù)控制塊中,其中,所述空閑空間大于或等于待復(fù)制的所述數(shù)據(jù)包的大?。? 第二復(fù)制子模塊,用于所述判斷子模塊判斷結(jié)果為不存在時,從空閑任務(wù)控制塊鏈表中提取一個空閑的任務(wù)控制塊,將所述數(shù)據(jù)包中的數(shù)據(jù)復(fù)制到提取的所述空閑的任務(wù)控制塊中。
      【文檔編號】G06F13/38GK103714033SQ201310753237
      【公開日】2014年4月9日 申請日期:2013年12月31日 優(yōu)先權(quán)日:2013年12月31日
      【發(fā)明者】邸忠輝, 李鳳慶, 許操 申請人:北京創(chuàng)毅視訊科技有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1