專利名稱:一種基于以太網(wǎng)的相機(jī)控制和高速數(shù)據(jù)傳輸方法
技術(shù)領(lǐng)域:
本發(fā)明涉及基于以太網(wǎng)傳輸?shù)某上裣到y(tǒng),尤其涉及基于以太網(wǎng)的相機(jī)控制和高速 數(shù)據(jù)傳輸方法,該方法將以太網(wǎng)作為數(shù)據(jù)傳輸?shù)拿浇?,用以太網(wǎng)幀作為傳輸載體,從而實(shí)現(xiàn) 相機(jī)的控制和所獲取圖像數(shù)據(jù)的高速傳輸。
背景技術(shù):
傳統(tǒng)的基于以太網(wǎng)的成像系統(tǒng)通?;赥CP/IP協(xié)議棧,而協(xié)議棧本身需要消耗 較多的CPU和存儲器資源,當(dāng)硬件系統(tǒng)資源有限時(shí),由于TCP/IP協(xié)議棧本身的開銷,通常會 導(dǎo)致數(shù)據(jù)傳輸速率較慢。同時(shí)大多數(shù)的成像系統(tǒng)中采集端和控制端通常處于同一局域網(wǎng) 內(nèi),即協(xié)議棧中鏈路層以上的協(xié)議層如網(wǎng)際層所提供的數(shù)據(jù)路由功能就顯得多余。針對傳統(tǒng)方法的不足本文提出一種新的方法來實(shí)現(xiàn)數(shù)據(jù)傳輸,即將以太網(wǎng)幀作為 數(shù)據(jù)傳輸媒介,而舍棄了基于傳輸層的通信方案,由于省去了協(xié)議棧的開銷故對于硬件資 源有限的嵌入式系統(tǒng)而言,使用本文描述的方法可大幅提高傳輸速度;同時(shí)本文還提出一 套基于以太網(wǎng)幀的相機(jī)控制方法,該套方法囊括了相機(jī)連接、控制、數(shù)據(jù)傳輸?shù)确矫娴牟僮?流程,從而保證了數(shù)據(jù)傳輸?shù)目煽啃浴?br>
發(fā)明內(nèi)容
設(shè)計(jì)一種新的基于以太網(wǎng)幀的相機(jī)控制方法,該方法將解決成像系統(tǒng)基于TCP/IP 協(xié)議??刂坪蛡鬏敹鴮?dǎo)致的數(shù)據(jù)傳輸速率較慢的技術(shù)問題。為解決上述技術(shù)問題,本發(fā)明采取了如下技術(shù)方案一種基于以太網(wǎng)的相機(jī)控制方法,用于相機(jī)的遠(yuǎn)程控制和數(shù)據(jù)傳輸,負(fù)責(zé)控制的 一端稱為Master端,被控制的相機(jī)稱為Slaver端,其特征在于該方法包括五種不同的操 作過程,分別是相機(jī)發(fā)現(xiàn)操作、相機(jī)連接/斷開操作、相機(jī)參數(shù)設(shè)置/查詢操作、連接保活 操作、以及拍照和圖像數(shù)據(jù)傳輸操作,并針對這些操作過程定義控制命令幀格式和圖像數(shù) 據(jù)幀格式,所有幀格式中首部18字節(jié)具有統(tǒng)一的格式,包括幀類型字段、請求/應(yīng)答字段、 Master端物理地址、Slaver端物理地址、和時(shí)間戳,后面部分的數(shù)據(jù)格式將根據(jù)幀類型字 段值的不同而不同。進(jìn)一步地,所述相機(jī)發(fā)現(xiàn)操作通過廣播“設(shè)備發(fā)現(xiàn)幀”的方式來發(fā)現(xiàn)網(wǎng)絡(luò)中正在工 作的Slaver設(shè)備,從而定位該slaver設(shè)備,用戶能夠根據(jù)該Slaver設(shè)備的信息啟動連接 過程來與該Slaver設(shè)備建立通信關(guān)系。進(jìn)一步地,所述圖像數(shù)據(jù)傳輸操作將圖像數(shù)據(jù)分幀進(jìn)行傳輸,同時(shí)將控制信息附 加在圖像數(shù)據(jù)幀中,Master端能夠通過該控制信息判斷圖像幀的合法性并定位每幀圖像來 重組圖像數(shù)據(jù)。優(yōu)選地,所述圖像數(shù)據(jù)傳輸操作還具有保證圖像數(shù)據(jù)質(zhì)量的能力,其通過重傳機(jī) 制實(shí)現(xiàn),以保證在傳輸圖像數(shù)據(jù)的過程中發(fā)生丟幀或錯(cuò)幀時(shí)能夠重傳這些幀。進(jìn)一步地,所述方法規(guī)定Master端定期啟動連接?;畈僮鱽頇z測鏈路的通斷,每次啟動連接?;畈僮骱驧aster端均需要等待Slaver端回應(yīng)的連接保活應(yīng)答幀來確保 Slaver端依然處于工作狀態(tài),同時(shí)Slaver端也需要定期檢測是否收到了 Master端發(fā)來的 連接保活請求幀來確保Master端依然處于工作狀態(tài),任何一端在確認(rèn)對方不再工作時(shí)就 斷開連接將自己置于空閑狀態(tài)。進(jìn)一步地,所述方法是基于請求/應(yīng)答模式來工作的,所有的操作均由Master端 發(fā)出相應(yīng)的請求幀作為開始,Slaver端在收到Master端發(fā)來的請求幀后均需要回應(yīng)一個(gè) 應(yīng)答幀,以給Master端反饋本次操作的結(jié)果。優(yōu)選地,數(shù)據(jù)的載體是自定義以太網(wǎng)幀,數(shù)據(jù)傳輸?shù)膶用鎯H到數(shù)據(jù)鏈路層,所述數(shù) 據(jù)被封裝在以太網(wǎng)幀的數(shù)據(jù)字段中,而以太網(wǎng)幀類型字段填充的是一個(gè)特殊值,依此字段 來與其他基于鏈路層的協(xié)議幀進(jìn)行區(qū)分,從而保證基于這種控制方法的設(shè)備都只處理類型 字段為該特殊值的以太網(wǎng)幀。優(yōu)選地,所有的控制命令在執(zhí)行期間均有超時(shí)機(jī)制保證,當(dāng)鏈路中斷時(shí),Master端 能夠在一定時(shí)間內(nèi)作出響應(yīng)并通知用戶,而不至陷入無限等待狀態(tài)而出現(xiàn)死機(jī)現(xiàn)象。本發(fā)明的基于以太網(wǎng)的相機(jī)控制方法,由于將數(shù)據(jù)封裝在以太網(wǎng)幀中進(jìn)行傳輸, 就網(wǎng)絡(luò)分層而言該數(shù)據(jù)實(shí)際工作在數(shù)據(jù)鏈路層,因此這種設(shè)計(jì)擯棄了高層協(xié)議所帶來的開 銷,從而省去了大量的CPU和存儲器開銷,在資源有限的嵌入式系統(tǒng)中將大幅提高傳輸速 率。同時(shí)該方法還設(shè)計(jì)了一定的機(jī)制來保障通信質(zhì)量,從而彌補(bǔ)了缺少傳輸控制協(xié)議所帶 來的數(shù)據(jù)傳輸質(zhì)量下降問題。
圖1是根據(jù)本發(fā)明的基于以太網(wǎng)的相機(jī)控制方法的相機(jī)控制方法幀格式圖。圖2是根據(jù)本發(fā)明的基于以太網(wǎng)的相機(jī)控制方法的Slaver端程序設(shè)計(jì)框圖。圖3是根據(jù)本發(fā)明的基于以太網(wǎng)的相機(jī)控制方法的Master端請求隊(duì)列設(shè)計(jì)圖。圖4是根據(jù)本發(fā)明的基于以太網(wǎng)的相機(jī)控制方法的Master端狀態(tài)轉(zhuǎn)移圖。
具體實(shí)施例方式下面將結(jié)合附圖對本發(fā)明的基于以太網(wǎng)的相機(jī)控制方法進(jìn)行詳細(xì)說明。本發(fā)明的基于以太網(wǎng)的相機(jī)控制方法用于控制工作在以太網(wǎng)上的嵌入式圖像采 集設(shè)備,該方法的數(shù)據(jù)載體是以太網(wǎng)幀,即數(shù)據(jù)工作在數(shù)據(jù)鏈路層上。方法中需要一個(gè)運(yùn)行 控制程序的PC端,由于它處于支配地位故我們稱它為Master ;而圖像的采集(即相機(jī))由 一個(gè)CMOS傳感器組成的嵌入式設(shè)備完成,我們稱它為Slaver。高速以太網(wǎng)相機(jī)控制方法涉 及如下功能或過程1)相機(jī)發(fā)現(xiàn)過程,即在局域網(wǎng)內(nèi)查詢工作的相機(jī)2)相機(jī)連接/斷開3)相機(jī)參數(shù)設(shè)置/查詢4)相機(jī)連接?;?,即在與相機(jī)建立連接后檢測鏈路的通斷5)拍照及傳輸過程由于該方法的數(shù)據(jù)載體是以太網(wǎng)幀,而以太網(wǎng)協(xié)議是不保證通信質(zhì)量的,所以 本相機(jī)控制方法中所有控制命令的傳輸都要求Slaver給予回應(yīng),如果超時(shí)則根據(jù)方法Master需要重發(fā)控制命令,同時(shí)對于圖像數(shù)據(jù)的傳輸設(shè)計(jì)重傳機(jī)制來保障圖像數(shù)據(jù)的正 確性和完整性。該方法中描述的通信機(jī)制被設(shè)計(jì)成一種點(diǎn)對點(diǎn)的通信模式,通信中所涉及 的幀格式如圖1所示,除去相機(jī)發(fā)現(xiàn)過程中需要用到廣播幀以外,其他的通信均只是存在 于Master與Slaver之間。所有的控制數(shù)據(jù)都被封裝在以太網(wǎng)幀格式101中進(jìn)行傳輸,它 被填充在以太網(wǎng)幀的負(fù)載域即Data字段中,為了與現(xiàn)有基于以太網(wǎng)幀的協(xié)議進(jìn)行區(qū)分,故 將以太網(wǎng)幀格式中的‘Type’字段設(shè)置為OxOAOA。控制方法中共定義了 9種不同的幀類 型,其中8種為控制命令幀,規(guī)定所有的控制命令需要被應(yīng)答,即Master發(fā)出控制命令請 求幀,由Slaver接收并處理后需要返回?cái)y帶操作結(jié)果的應(yīng)答幀;剩下的1種為圖像數(shù)據(jù) 幀,該類幀負(fù)責(zé)傳遞圖像數(shù)據(jù)??刂茙母袷?02中前18個(gè)字節(jié)被定義成特定的含義,其 中’FrmType ‘字段代表幀類型,其中填充代表9種不同幀的類型碼;’Ack/Req’字段指示該 幀是請求幀還是應(yīng)答幀,凡是Master發(fā)往Slaver的幀該字段均填充’請求’,反之填充’應(yīng) 答,;,Master Mac Address,和,Slaver Mac Address,字段分別填充了 Master 端和 Slaver 端的Mac地址;,Time Stamp'字段用于填充一個(gè)時(shí)間戳,在Master發(fā)出請求幀時(shí)需要用 當(dāng)前系統(tǒng)時(shí)間值填充這個(gè)字段,在Slaver接收到請求幀并做響應(yīng)處理后回復(fù)應(yīng)答幀時(shí),用 請求幀中該字段的值填充應(yīng)答幀,使得Master在收到Slaver的應(yīng)答幀時(shí)能依據(jù)該字段查 詢出其對應(yīng)的請求幀。針對不用控制幀類型(即’ FrmType'字段值的不同),,Data'字段 會有不同的格式(103 110),下面按照控制功能的不同逐個(gè)介紹這9種不同幀類型’Data’ 字段的格式。1)相機(jī)發(fā)現(xiàn)過程相機(jī)發(fā)現(xiàn)過程是Master通過廣播發(fā)現(xiàn)幀在局域網(wǎng)內(nèi)發(fā)現(xiàn)正在工作的Slaver,由 Master發(fā)出的設(shè)備發(fā)現(xiàn)請求幀中的’ Data'字段為28字節(jié)的保留字段103,之所以設(shè)計(jì)保 留字段是為了湊夠64字節(jié)的最小以太網(wǎng)幀長度,后面所有保留字段的設(shè)計(jì)均是處于這樣 的考慮,將不再予以介紹。需要注意的是,該種幀的’ Slaver Mac Address’字段102沒有 意義,Slaver端不會解析該字段,在實(shí)現(xiàn)時(shí)將該字段填充全’ 1,。Slaver在收到這樣的廣播 幀后會回復(fù)應(yīng)答幀,其中’Data’字段為127字節(jié)的設(shè)備描述符和1字節(jié)的忙閑標(biāo)識105,設(shè) 備描述符是預(yù)先存儲在Slaver的Flash中的一段信息,忙閑標(biāo)識用于指示當(dāng)前Slaver是 否已與其他的Master建立連接即服務(wù)關(guān)系。2)相機(jī)連接/斷開Master通過發(fā)出連接請求幀試圖與一個(gè)指定Mac地址的Slaver建立連接,該幀 的’ Data'區(qū)域格式如106所示,其中2字節(jié)的’ Keep Alive Time’字段用于指定?;钫埱?幀發(fā)出的周期時(shí)間。Slaver再收到該幀會根據(jù)自身是否服務(wù)于別的Master來回復(fù)應(yīng)答幀, 其,Data,字段格式如104所示,其中2字節(jié)的,Operation Result,填充操作結(jié)果,Master 在收到該幀后依據(jù)這個(gè)字段確認(rèn)建立連接是否成功。相機(jī)斷開操作與連接操作類似,只是 Master發(fā)出斷開連接請求幀后Slaver并不需要針對此幀回發(fā)應(yīng)答幀。3)參數(shù)設(shè)置/查詢該操作并不規(guī)定參數(shù)的個(gè)數(shù)和意義,而是提供一種參數(shù)設(shè)置及查詢的機(jī)制。 Master通過發(fā)出參數(shù)設(shè)置請求幀請求對Slaver進(jìn)行參數(shù)設(shè)置操作,該幀的’ Data'區(qū)域格 式如107所示,其中,Paranter Lenth,字段指定了后續(xù),Parameter List,字段的長度,單位 為字節(jié),Slaver在收到該幀后會進(jìn)行參數(shù)設(shè)置操作,并依據(jù)結(jié)果返回應(yīng)答幀,該幀的’ Data’
5字段如104所示。Master也可以通過發(fā)送參數(shù)查詢幀來獲得Slaver的當(dāng)前參數(shù)值,該幀 的’ Data'字段如103所示,Slaver在收到該幀后將發(fā)送應(yīng)答幀來返回參數(shù),該幀的’ Data' 字段如107所示。參數(shù)的設(shè)置及查詢操作均要求Master和Slaver已經(jīng)建立連接。4)相機(jī)連接?;頜aster與Slaver建立連接后,會定時(shí)向Slaver發(fā)送連接?;钫埱髱搸?,Data, 區(qū)域格式如103所示,Slaver在收到該幀后會回復(fù)連接?;顟?yīng)答幀,該幀’ Data'字段格式 如104所示。如果Master在指定時(shí)間內(nèi)沒有收到已發(fā)出連接?;钫埱髱鶎?yīng)的應(yīng)答中貞, 則認(rèn)為與Slaver的連接中斷,同理如果Slaver在指定的周期內(nèi)沒有收到連接保活請求幀 則也認(rèn)為與Master的連接中斷。當(dāng)設(shè)備在執(zhí)行其他操作時(shí)(例如傳輸圖像數(shù)據(jù))不執(zhí)行 連接保活操作。5)拍攝及傳輸過程Master通過發(fā)送拍攝請求幀來啟動一次拍照過程,該幀,Data,區(qū)域格式如108所 示,其中’ Image Number'標(biāo)示當(dāng)前這次拍攝操作所獲得圖片的編號,’ Retrans Flag’字段 則標(biāo)示本次拍攝操作獲得的圖片在進(jìn)行傳輸時(shí)出現(xiàn)丟幀現(xiàn)象后,是否要求Slaver對丟失 的幀進(jìn)行重傳,Slaver將根據(jù)這個(gè)值來決定是否需要在發(fā)送完一幅圖片的圖像數(shù)據(jù)后在內(nèi) 存中保留這幀數(shù)據(jù),啟動重傳機(jī)制則能夠保證該幀圖片的傳輸質(zhì)量,本方法提供這個(gè)可選 的機(jī)制;Slaver在接收到該幀后將執(zhí)行拍攝,同時(shí)將獲得的圖像數(shù)據(jù)封裝成若干個(gè)圖像數(shù) 據(jù)幀發(fā)送給Master,其幀格式如111所示,其中’ ImageNumber’字段填充當(dāng)前圖片號,該值 為拍攝請求幀中由Master指定的圖片號,,F(xiàn)rameNumber'字段用來定位本幀圖像數(shù)據(jù)在整 幅圖像數(shù)據(jù)中的相對位置,Master通過該字段按順序排列收到的圖像數(shù)據(jù),'Frame Lenth' 字段指定后續(xù)’ Image Data’字段的長度,單位為字節(jié);Slaver在發(fā)出所有的圖像數(shù)據(jù)幀后, 會發(fā)出一個(gè)曝光請求應(yīng)答幀,其幀格式如109所示,其中’Operation Result’字段是本次曝 光操作的結(jié)果,’ Bytes Transmitted'字段標(biāo)示本次曝光操作Slaver共發(fā)出了多少個(gè)字節(jié) 的圖像數(shù)據(jù),Master在收到該幀時(shí)將結(jié)束一次拍攝操作,同時(shí)根據(jù)判斷收到的曝光應(yīng)答幀 的’ Bytes Transmitted'字段與實(shí)際收到的圖像數(shù)據(jù)幀中包含的字節(jié)總數(shù),如果相等則證 明傳輸?shù)倪^程中沒有丟幀現(xiàn)象,否則將選擇進(jìn)行重傳操作(取決于用戶的選擇),即Master 發(fā)出重傳請求幀,該幀’ Data'區(qū)域格式如110所示,其中’ Image Number'字段填充待重傳 的圖片號,,Retrans Frame Number,字段填充待重傳的圖像數(shù)據(jù)幀的個(gè)數(shù),,Retrans Frame List’則是待重傳圖像數(shù)據(jù)幀的列表,Slaver在收到該幀后將根據(jù)重傳列表中指定的幀號 重傳這些丟失的幀,在重傳完成后Slaver將發(fā)送重傳請求的應(yīng)答幀,該幀’ Data’區(qū)域格式 如109所示,其中’ Opeartion Result’字段填充本次重傳操作的結(jié)果,如果Slaver內(nèi)存中 已沒有圖片號指定的圖像數(shù)據(jù)幀則也在該字段中反映出來,’ Byte Transmitted'字段標(biāo)示 本次重傳操作Slaver共發(fā)出了多少個(gè)字節(jié)的圖像數(shù)據(jù)。下面介紹方法本身邏輯的實(shí)現(xiàn)。針對Master和Slaver的不同,方法的實(shí)現(xiàn)細(xì)節(jié) 也不同,下面將分別予以介紹。相較于Master端而言,Slaver端的邏輯較為簡單,除去連接?;畈僮饕酝?后面 將重點(diǎn)介紹),其他的操作對于Slaver端而言具有大致相同的處理模式等待Master發(fā) 來的請求幀一 >完成請求幀規(guī)定的處理一 >返回應(yīng)答幀。這種控制方法需要嵌入式操 作系統(tǒng)的支持。Slaver端所涉及的2個(gè)線程如圖2所示,其中’命令執(zhí)行線程’(CommandImplementation Thread即圖中201部分)是一個(gè)負(fù)責(zé)處理由Master發(fā)來的控制命令的線 程(后面簡稱CI線程),該線程的函數(shù)體被設(shè)計(jì)成一個(gè)無限循環(huán),循環(huán)開始處等待一個(gè)信號 量,這個(gè)信號量通常處于無信號狀態(tài),只有當(dāng)網(wǎng)卡收到了一個(gè)控制命令幀時(shí)(即圖中203部 分)會給這個(gè)信號量一個(gè)信號,導(dǎo)致CI線程開始執(zhí)行,它將解析控制命令幀并執(zhí)行相應(yīng)操 作;另一個(gè)線程’圖像數(shù)據(jù)發(fā)送線程,(Image Data Send Thread即圖中202部分)是負(fù)責(zé) 發(fā)送圖像的線程(后面簡稱IDS線程),它也被設(shè)計(jì)成一個(gè)無限循環(huán),循環(huán)開始處等待一個(gè) 信號量,這個(gè)信號量通常處于無信號狀態(tài),只有當(dāng)需要發(fā)送圖像數(shù)據(jù)時(shí),如一幀圖像曝光完 成或者需要重傳某一幀的圖像數(shù)據(jù)時(shí)(即圖中204部分),程序會將該信號置于有信號狀態(tài) 從而導(dǎo)致IDS線程得以執(zhí)行,它將調(diào)用網(wǎng)卡的發(fā)送操作向Master發(fā)送圖像數(shù)據(jù)幀,完成所 有圖像數(shù)據(jù)幀的傳輸后還會向Master發(fā)送相應(yīng)的應(yīng)答幀,如果是曝光操作則發(fā)送曝光操 作請求幀對應(yīng)的應(yīng)答幀,如果是重傳操作則發(fā)送重傳請求幀對應(yīng)的應(yīng)答幀。下面著重介紹一下?;顧C(jī)制的實(shí)現(xiàn),當(dāng)Master端發(fā)來連接請求幀時(shí),規(guī)定其中需 要攜帶一個(gè)參數(shù)即連接?;顜l(fā)送周期,Slaver依此參數(shù)啟動一個(gè)周期到時(shí)定時(shí)器,同時(shí) 將一個(gè)標(biāo)記變量bKe印AliveFlag置為TRUE,它會在每次收到Master發(fā)來的連接?;顜瑫r(shí) 被刷新為TRUE。每當(dāng)周期到時(shí)定時(shí)器到時(shí)時(shí)檢查bKe印AliveFlag變量,如果它的值為TRUE 說明本次定時(shí)器到時(shí)與上次定時(shí)器到時(shí)之間收到了 Master發(fā)來的連接保活幀,認(rèn)為連接 依然維持,同時(shí)需要將bKe印AliveFlag置為FALSE ;相反如果這個(gè)bKe印AliveFlag的值為 FALSE則說明本次定時(shí)器到時(shí)與上次定時(shí)器到時(shí)之間沒有收到Master發(fā)來的連接?;顜?, 則認(rèn)為與Master之間的連接中斷了,這種機(jī)制能夠保證當(dāng)因?yàn)槟撤N原因?qū)е碌逆溌窋嚅_ 時(shí),Slaver能夠檢查到這樣的斷開并自動將本身的狀態(tài)置為空閑。Master端通常運(yùn)行在PC機(jī)上,這里舉例運(yùn)行在一臺裝有Windows操作系統(tǒng)的PC 機(jī)上,由于數(shù)據(jù)的傳輸過程實(shí)際發(fā)生在數(shù)據(jù)鏈路層,故選擇使用PCAP作為以太網(wǎng)幀的收發(fā) 工具,由于其內(nèi)部具有緩沖區(qū)的設(shè)計(jì)且Master端通常沒有較大數(shù)據(jù)量的數(shù)據(jù)需要發(fā)送,故 我們采用單線程設(shè)計(jì),即一個(gè)線程內(nèi)包含控制命令幀解析處理等全部工作。規(guī)定Master端發(fā)出的所有請求幀都需要等待Slaver發(fā)出的應(yīng)答幀,只有收到應(yīng) 答幀才算完成一個(gè)請求操作,故在Master端設(shè)計(jì)一請求隊(duì)列結(jié)構(gòu)如圖3所示,用于實(shí)現(xiàn)這 種請求/應(yīng)答模式的通信機(jī)制。其中請求隊(duì)列301由一個(gè)個(gè)’請求結(jié)構(gòu)(Request Struct)‘ 的結(jié)構(gòu)體構(gòu)成,這個(gè)結(jié)構(gòu)內(nèi)部由四部分組成302,第一部分是時(shí)間戳,即發(fā)送請求幀的時(shí)間 戳字段的值,第二部分是超時(shí)定時(shí)器句柄,即這個(gè)發(fā)送請求幀發(fā)出的同時(shí)啟動的超時(shí)定時(shí) 器句柄,第三部分是請求幀的緩沖區(qū)首地址,第四部分是請求幀緩存區(qū)的長度。每當(dāng)Master 發(fā)出一個(gè)請求幀時(shí),會同時(shí)啟動一個(gè)超時(shí)定時(shí)器,并依據(jù)這幀內(nèi)容以及超時(shí)定時(shí)器句柄構(gòu) 造一個(gè)如302所示的結(jié)構(gòu)體并存入請求隊(duì)列中,每當(dāng)收到Slaver發(fā)回的應(yīng)答幀時(shí)會依據(jù)這 幀中的時(shí)間戳字段在請求隊(duì)列中查找時(shí)間戳吻合的那個(gè)請求,從而確認(rèn)一個(gè)請求命令得到 Slaver的執(zhí)行,同時(shí)關(guān)閉對應(yīng)的超時(shí)定時(shí)器。如果某個(gè)超時(shí)定時(shí)器到時(shí),則依據(jù)這個(gè)定時(shí) 器的句柄在請求隊(duì)列中查找超時(shí)定時(shí)器句柄吻合的那個(gè)請求結(jié)構(gòu)體,從而確認(rèn)一個(gè)請求命 令執(zhí)行的超時(shí)。如果在收到一個(gè)請求應(yīng)答幀后,而在請求列表中沒有找到時(shí)間戳吻合的請 求結(jié)構(gòu)體,說明這個(gè)請求在Master端已做了對應(yīng)的超時(shí)處理,此時(shí)認(rèn)為這個(gè)應(yīng)答幀不再有 效,故忽略這個(gè)應(yīng)答幀。Master端通過一個(gè)狀態(tài)機(jī)來控制,其狀態(tài)轉(zhuǎn)移圖如圖4所示。狀態(tài)在初始化時(shí)處于401,通過發(fā)送連接請求幀將導(dǎo)致狀態(tài)機(jī)進(jìn)入等待連接請求被應(yīng)答狀態(tài)402,如果確認(rèn) 命令被執(zhí)行則狀態(tài)機(jī)跳轉(zhuǎn)到已連接空閑狀態(tài)403,否則超時(shí)將導(dǎo)致狀態(tài)機(jī)跳轉(zhuǎn)回未連接空 閑狀態(tài)401 ;通過發(fā)送參數(shù)設(shè)置請求幀狀態(tài)機(jī)進(jìn)入發(fā)出設(shè)置曝光參數(shù)命令后等待回復(fù)狀態(tài) 404,無論是確認(rèn)命令被執(zhí)行還是超時(shí)狀態(tài)機(jī)均跳轉(zhuǎn)到已連接空閑狀態(tài)403,對于參數(shù)查詢 而言其操作流程基本類似。下面描述拍照過程和可能產(chǎn)生的數(shù)據(jù)重傳過程=Master發(fā)出拍照請求幀時(shí)會依 據(jù)該幀向請求隊(duì)列中加入一個(gè)請求項(xiàng),同時(shí)啟動超時(shí)定時(shí)器并將狀態(tài)機(jī)從已連接空閑狀態(tài) 403跳轉(zhuǎn)到圖像數(shù)據(jù)接收狀態(tài)406,此時(shí)Master做好了接收圖像數(shù)據(jù)幀的準(zhǔn)備,對于收到 的是當(dāng)前圖片號規(guī)定的圖片的數(shù)據(jù)幀則會保存起來,通常最后收到幀是Slaver發(fā)來的拍 照應(yīng)答幀,則需要在請求隊(duì)列里刪除該應(yīng)答幀對應(yīng)的那個(gè)請求項(xiàng)同時(shí)關(guān)閉對應(yīng)的那個(gè)超時(shí) 定時(shí)器,此時(shí)Master將進(jìn)入圖像數(shù)據(jù)完整性檢查狀態(tài)407,即檢查狀態(tài)機(jī)處于圖像數(shù)據(jù)接 收狀態(tài)406時(shí)收到的所有圖像數(shù)據(jù)幀是否完整,如果完整則狀態(tài)機(jī)跳轉(zhuǎn)回已連接空閑狀態(tài) 403,至此完成一次拍照操作。如果完整性檢查失敗即有圖片數(shù)據(jù)幀在傳輸中丟失了,則根 據(jù)用戶設(shè)置來決定是否進(jìn)入重傳操作,這里假定進(jìn)入重傳操作,則Master發(fā)出圖片數(shù)據(jù)重 傳請求幀,同時(shí)啟動超時(shí)定時(shí)器并在請求隊(duì)列中添加該請求,狀態(tài)機(jī)由圖像數(shù)據(jù)完整性檢 查狀態(tài)407跳轉(zhuǎn)到圖像數(shù)據(jù)接收狀態(tài)406,即Master又進(jìn)入了圖像數(shù)據(jù)接收狀態(tài),在該狀態(tài) 中Master接收缺失的圖像數(shù)據(jù),在這個(gè)過程中通常最后收到的幀是Slaver發(fā)來的重傳應(yīng) 答幀,則需要在請求隊(duì)列中刪除該應(yīng)答幀對應(yīng)的那個(gè)請求項(xiàng)同時(shí)關(guān)閉對應(yīng)的那個(gè)超時(shí)定時(shí) 器,此時(shí)Master進(jìn)入圖像數(shù)據(jù)完整性檢查狀態(tài)407,檢查在重傳操作之后圖像數(shù)據(jù)的完整 性并決定是不是還有重傳的需求,如果圖像完整則跳轉(zhuǎn)回已連接空閑狀態(tài)403,至此完成一 次重傳操作。如果由于鏈路問題恰好丟失了最后的應(yīng)答幀(無論是應(yīng)答拍照請求對應(yīng)的應(yīng) 答幀還是重傳請求對應(yīng)的應(yīng)答幀),都會導(dǎo)致定時(shí)超時(shí),則狀態(tài)機(jī)也會跳轉(zhuǎn)到圖像數(shù)據(jù)完整 性檢查狀態(tài)407進(jìn)行完整性檢查,再決定是否有必要進(jìn)行重傳操作。狀態(tài)機(jī)中并未涉及設(shè)備探測過程,這是因?yàn)樵O(shè)備探測過程與其他的操作不相關(guān), 即不存在前后聯(lián)系,故只需要設(shè)計(jì)一個(gè)單獨(dú)的狀態(tài)變量i^bDeviceDetectFlag記錄設(shè)備探 測過程開始和結(jié)束。狀態(tài)機(jī)中也未涉及連接保活操作的過程,這是因?yàn)檫B接?;畈僮魇侵?期啟動的,如果在狀態(tài)機(jī)中加入該狀態(tài)則可能導(dǎo)致操作沖突,即恰好狀態(tài)機(jī)處于連接?;?操作中時(shí)用戶提出其他請求如拍照請求,則狀態(tài)機(jī)無法響應(yīng)用戶的請求,故單獨(dú)設(shè)計(jì)一個(gè) 狀態(tài)變量nubCormectMaintainFlag記錄連接?;钸^程的開始和結(jié)束,由于連接?;畈僮?是定時(shí)執(zhí)行的,故需要設(shè)計(jì)一個(gè)周期定時(shí)器來啟動連接?;畈僮?。盡管本發(fā)明只是以一些形式得以表示,對于本領(lǐng)域技術(shù)人員顯而易見的是,在不 脫離本發(fā)明范圍的情況下,本發(fā)明可以有不同的變形。
權(quán)利要求
一種基于以太網(wǎng)的相機(jī)控制方法,用于相機(jī)的遠(yuǎn)程控制和數(shù)據(jù)傳輸,負(fù)責(zé)控制的一端稱為Master端,被控制的相機(jī)稱為Slaver端,其特征在于該方法包括五種不同的操作過程,分別是相機(jī)發(fā)現(xiàn)操作、相機(jī)連接/斷開操作、相機(jī)參數(shù)設(shè)置/查詢操作、連接?;畈僮?、以及拍照和圖像數(shù)據(jù)傳輸操作,并針對這些操作過程定義控制命令幀格式和圖像數(shù)據(jù)幀格式,所有幀格式中,首部18字節(jié)具有統(tǒng)一的格式,其中包括’幀類型字段’、’請求/應(yīng)答字段’、’Master端物理地址’、’Slaver端物理地址’和’時(shí)間戳’這5個(gè)域,之后的數(shù)據(jù)格式將根據(jù)幀類型字段值的不同而不同。
2.根據(jù)權(quán)利要求1所述的相機(jī)控制方法,其特征在于所述相機(jī)發(fā)現(xiàn)操作通過廣播“設(shè) 備發(fā)現(xiàn)幀”的方式來發(fā)現(xiàn)網(wǎng)絡(luò)中正在工作的Slaver設(shè)備,從而定位該slaver設(shè)備,用戶能 夠根據(jù)該Slaver設(shè)備的信息啟動連接過程來與該Slaver設(shè)備建立通信。
3.根據(jù)權(quán)利要求1所述的相機(jī)控制方法,其特征在于所述圖像數(shù)據(jù)傳輸操作將圖像 數(shù)據(jù)分幀進(jìn)行傳輸,同時(shí)將控制信息附加在圖像數(shù)據(jù)幀中,Master端能夠通過該控制信息 判斷圖像幀的合法性并定位每幀圖像來重組圖像數(shù)據(jù)。
4.根據(jù)權(quán)利要求3所述的相機(jī)控制方法,所述圖像數(shù)據(jù)傳輸操作還具有保證圖像數(shù)據(jù) 質(zhì)量的能力,即每次圖像數(shù)據(jù)傳輸之后Master端都需要對接收到的圖像數(shù)據(jù)進(jìn)行完整性 檢查從而決定是否啟動重傳操作,其通過這種機(jī)制來保證在傳輸圖像數(shù)據(jù)的過程中發(fā)生丟 幀或錯(cuò)幀時(shí)能夠重傳這些幀。
5.根據(jù)權(quán)利要求1所述的相機(jī)控制方法,其特征在于所述方法規(guī)定Master端定期 啟動連接?;畈僮鱽頇z測鏈路的通斷,每次啟動連接?;畈僮骱驧aster端均需要等待 Slaver端回應(yīng)的連接?;顟?yīng)答幀來確保Slaver端依然處于工作狀態(tài),同時(shí)Slaver端也需 要定期檢測是否收到了 Master端發(fā)來的連接?;钫埱髱瑏泶_保Master端依然處于工作狀 態(tài),任何一端在檢測到鏈路斷開時(shí)都會將自己的狀態(tài)從工作狀態(tài)置于空閑狀態(tài)。
6.根據(jù)權(quán)利要求1所述的相機(jī)控制方法,其特征在于所述方法是基于請求/應(yīng)答 模式來工作的,所有的操作均由Master端發(fā)出對應(yīng)的請求幀作為開始,Slaver端在收到 Master端發(fā)來的請求幀后均需要進(jìn)行操作并在最后向Master端回應(yīng)一個(gè)應(yīng)答幀,來反饋 本次操作的結(jié)果。
7.根據(jù)權(quán)利要求1至6中任一項(xiàng)所述的相機(jī)控制方法,其特征在于數(shù)據(jù)的載體是自 定義以太網(wǎng)幀,數(shù)據(jù)傳輸?shù)膶用鎯H到數(shù)據(jù)鏈路層,所述數(shù)據(jù)被封裝在以太網(wǎng)幀的數(shù)據(jù)字段 中,而以太網(wǎng)幀類型字段填充的是一個(gè)特殊值OxOAOA,依此字段來與其他基于鏈路層的協(xié) 議幀進(jìn)行區(qū)分,從而保證基于該種控制方法的Master或Slaver設(shè)備都只處理類型字段為 該特殊值OxOAOA的以太網(wǎng)幀。
8.根據(jù)權(quán)利要求1至6中任一項(xiàng)所述的相機(jī)控制方法,其特征在于所有的控制命令 在執(zhí)行期間均有超時(shí)機(jī)制保證,當(dāng)鏈路中斷或者發(fā)出的請求幀在一定時(shí)間內(nèi)得不到應(yīng)答 時(shí),Master端能夠作出相應(yīng)的處理如通過重傳請求幀來再次啟動操作或者通知用戶操作失 敗等,故不至陷入無限等待狀態(tài)而出現(xiàn)死機(jī)現(xiàn)象。
全文摘要
一種基于以太網(wǎng)的高速圖像傳輸及相機(jī)控制方法,用于相機(jī)的遠(yuǎn)程控制和數(shù)據(jù)傳輸,負(fù)責(zé)實(shí)施控制的程序端稱為Master端,被控制的相機(jī)稱為Slaver端,其特征在于該方法包括五種不同的操作過程,分別是相機(jī)發(fā)現(xiàn)操作、相機(jī)連接/斷開操作、相機(jī)參數(shù)設(shè)置/查詢操作、連接?;畈僮鳌⒁约芭恼蘸蛨D像數(shù)據(jù)傳輸操作,并針對這些操作過程定義控制命令幀格式和圖像數(shù)據(jù)幀格式,所有幀格式中,首部18字節(jié)具有統(tǒng)一的格式,其中包括’幀類型字段’、’請求/應(yīng)答字段’、’Master端物理地址’、’Slaver端物理地址’和’時(shí)間戳’這5個(gè)域,之后的數(shù)據(jù)格式將根據(jù)幀類型字段值的不同而不同。
文檔編號H04L29/08GK101917486SQ201010264229
公開日2010年12月15日 申請日期2010年8月27日 優(yōu)先權(quán)日2010年8月27日
發(fā)明者關(guān)永, 劉卉, 尚媛園, 張偉功, 徐達(dá)維, 楊新華, ?;圩? 趙曉旭 申請人:首都師范大學(xué)