《機(jī)器人創(chuàng)新設(shè)計(jì)》智能小車課程設(shè)計(jì)_第1頁
《機(jī)器人創(chuàng)新設(shè)計(jì)》智能小車課程設(shè)計(jì)_第2頁
《機(jī)器人創(chuàng)新設(shè)計(jì)》智能小車課程設(shè)計(jì)_第3頁
《機(jī)器人創(chuàng)新設(shè)計(jì)》智能小車課程設(shè)計(jì)_第4頁
《機(jī)器人創(chuàng)新設(shè)計(jì)》智能小車課程設(shè)計(jì)_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

作業(yè)題目:智能小車課程設(shè)計(jì)

《機(jī)器人創(chuàng)新設(shè)計(jì)考查》任務(wù)書專業(yè)班級(jí)機(jī)械電子工程學(xué)生姓名汪希山學(xué)號(hào)設(shè)計(jì)題目智能小車設(shè)計(jì)任務(wù)書設(shè)計(jì)要求:1.實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)傳輸2.實(shí)現(xiàn)視頻監(jiān)控3.實(shí)現(xiàn)可視化客戶端編寫4.實(shí)現(xiàn)串口通信,控制小車移動(dòng)實(shí)現(xiàn)服務(wù)器編寫交稿形式:手寫稿;R打印稿;軟件;圖紙;其他指導(dǎo)教師簽名:2020年12月16日學(xué)生簽名:2020年12月16日學(xué)生日志與師生見面情況序號(hào)完成工作進(jìn)展情況或交流情況師生見面時(shí)間地點(diǎn)1C語言基礎(chǔ)補(bǔ)習(xí)12月7日,躬行樓4042C語言基礎(chǔ)補(bǔ)習(xí)12月8日,躬行樓4043C語言基礎(chǔ)補(bǔ)習(xí)12月9日,躬行樓4044IO編程指導(dǎo)12月10日,躬行樓4045進(jìn)線程基礎(chǔ)12月11日,躬行樓4046網(wǎng)絡(luò)編程基礎(chǔ)12月14日,躬行樓4047Qt界面設(shè)計(jì)12月15日,躬行樓4048項(xiàng)目講解12月16日,躬行樓404學(xué)生簡(jiǎn)要總結(jié)與簽名:這兩周智慧小車項(xiàng)目學(xué)習(xí)任務(wù),過程非常有趣,在動(dòng)手操作的同時(shí)又學(xué)習(xí)了嵌入式以及c語言的相關(guān)知識(shí),讓我們的實(shí)訓(xùn)周內(nèi)容更加的充實(shí)。過此次的設(shè)計(jì)制作,使我們更加認(rèn)識(shí)到了動(dòng)手能力和理論知識(shí)的重要性,而理論與實(shí)踐的結(jié)合更是重中之重。當(dāng)然,我們也深刻地認(rèn)識(shí)到我們的不足,由于自身理論知識(shí)的欠缺和動(dòng)手能力的不佳在工作中頻頻受阻,走了好多彎路,雖然在制作過程中不可避免地遇到很多問題,但是最后還是在老師以及同學(xué)的幫助下圓滿解決了這些問題,實(shí)現(xiàn)了整個(gè)系統(tǒng)設(shè)計(jì)與最后調(diào)試,相關(guān)指標(biāo)達(dá)到預(yù)期的要求很好地完成了本次設(shè)計(jì)任務(wù)。

摘要 5Abstract: 6第1章任務(wù)及需求分析 71.1設(shè)計(jì)任務(wù)及目標(biāo) 71.1.1.緒論 7第2章整體設(shè)計(jì) 102.1Linux 102.1.1了解Linux操作系統(tǒng) 102.1.2網(wǎng)絡(luò)編程常用函數(shù) 102.2服務(wù)器構(gòu)架 112.2.1V4L2架構(gòu) 112.2.2CS架構(gòu)之客戶端編程步驟 112.2.3初始化CS架構(gòu)之服務(wù)器編程步驟車 122.3職責(zé)分配 132.4小車功能描述 13總結(jié) 15參考文獻(xiàn) 16附錄 17摘要智能小車是一種能通過無線控制運(yùn)動(dòng)并可以搭載各種功能配件的機(jī)械,它具有制作成本低廉,電路結(jié)構(gòu)簡(jiǎn)單,程序調(diào)試方便等的優(yōu)點(diǎn)。由于智能小車具有較強(qiáng)的趣味性,智能小車深受機(jī)械愛好者以及高校學(xué)生們的喜愛。隨著科技的發(fā)展智能小車也被廣泛應(yīng)用于各種玩具和其他產(chǎn)品的設(shè)計(jì)中,為中國(guó)玩具市場(chǎng)技術(shù)含量的缺乏進(jìn)行一定彌補(bǔ),實(shí)現(xiàn)經(jīng)濟(jì)收益,形成商業(yè)價(jià)值并豐富了人們的生活。本次試驗(yàn)采用wifi模塊實(shí)現(xiàn)視頻圖像傳輸,使用QT客戶端和攝像頭的配合進(jìn)行監(jiān)控控制,并采用STM32微處理器為核心芯片實(shí)現(xiàn)控制小車的前進(jìn)、后退、停止、及左轉(zhuǎn)、右轉(zhuǎn)的功能。本次試驗(yàn)主要體現(xiàn)出了多功能小車的智能模式,此智能系統(tǒng)的組成主要包括STM32控制器、電機(jī)驅(qū)動(dòng)電路、無線路由器、攝像頭。小車前進(jìn)過程中前端的攝像頭對(duì)周圍的環(huán)境進(jìn)行監(jiān)測(cè),同時(shí)把視頻信號(hào)傳回給QT客戶端。通過QT客戶端可以隨時(shí)控制小車行進(jìn)方向,而且可以操作攝像頭隨意上下、左右轉(zhuǎn)動(dòng),擴(kuò)大小車拍攝視野。經(jīng)實(shí)驗(yàn)驗(yàn)收測(cè)試,該智能小車系統(tǒng)反應(yīng)快速,靈活,各項(xiàng)指標(biāo)穩(wěn)定。關(guān)鍵詞:遠(yuǎn)程圖像傳輸;客戶端開發(fā);網(wǎng)絡(luò)編程;STM32;無線控制Abstract:Theintelligentcarisakindofmachinethatcancontrolthemotionwirelesslyandcancarryvariousfunctionalparts.Ithastheadvantagesoflowproductioncost,simplecircuitstructureandconvenientprogramdebugging.Becauseofitsstronginterestingness,intelligentcarisdeeplylovedbymechanicalloversandcollegestudents.Withthedevelopmentofscienceandtechnology,smartcarhasbeenwidelyusedinthedesignofvarioustoysandotherproductstomakeupforthelackoftechnicalcontentinChina'stoymarket,realizeeconomicbenefits,formcommercialvalueandenrichpeople'slife.Inthisexperiment,wifimodulewasusedtorealizevideoandimagetransmission,QTclientandcamerawereusedformonitoringandcontrol,andSTM32microprocessorwasusedasthecorechiptorealizethefunctionofcontrollingtheforward,backward,stop,leftandrightturnofthecar.Thistestmainlyreflectstheintelligentmodeofthemulti-functioncar.TheintelligentsystemconsistsofSTM32controller,motordrivecircuit,wirelessrouterandcamera.ThecameraatthefrontofthecarmonitorsthesurroundingenvironmentandsendsvideosignalsbacktotheQTclient.QTclientcancontrolthetravelingdirectionofthecaratanytime,andcanoperatethecameratorotateupanddown,leftandrightatwill,toexpandtheshootinghorizonofthecar.Throughtheexperimentandacceptancetest,theintelligentcarsystemhasfastresponse,flexible,andstableindexes.Keywords:videomonitoring;Smartcar;Networkprogramming;STM32;Motorcontrol;wireless第1章任務(wù)及需求分析1.1設(shè)計(jì)任務(wù)及目標(biāo)1.1.1.緒論所謂智能小車,主要指在普通汽車的基礎(chǔ)上增加了先進(jìn)的傳感器(雷達(dá)、攝像)、控制器、執(zhí)行器等裝置,通過車載傳感系統(tǒng)和信息終端實(shí)現(xiàn)與人、車、路之間的智能信息交換。它集中地運(yùn)用了計(jì)算機(jī)、傳感、信息、通信、導(dǎo)航、人工智能及自動(dòng)控制等技術(shù),是典型的高新技術(shù)綜合體。智實(shí)現(xiàn)在復(fù)雜環(huán)境背景下的控制運(yùn)動(dòng),從而完成具有特定功能的機(jī)器人系統(tǒng)。而隨著智能化電器時(shí)代的到來,它們?cè)跒槿藗兲峁┑氖孢m的生活環(huán)境的同時(shí),也提高了制造智能化電器對(duì)于人才要求的門檻。智能小車是集成了多種高新技術(shù),它不僅融合了電子、傳感器、計(jì)算機(jī)硬件、軟件等許多學(xué)科的知識(shí),而且還涉及到當(dāng)今許多前沿領(lǐng)域的技術(shù),它是一個(gè)國(guó)家高科技技術(shù)水平的重要體現(xiàn)。通過建立起簡(jiǎn)易智能小車的設(shè)計(jì),引導(dǎo)人從理論走向?qū)嵺`,培養(yǎng)我們的動(dòng)手能力,使我們?cè)诹私庵悄芑娖鞯墓ぷ髟淼幕A(chǔ)上,獲得完成整體項(xiàng)目的能力,并掌握了Stm32開發(fā)板的編程原理,為同學(xué)們進(jìn)入ARM領(lǐng)域提供了基礎(chǔ)。另外,本次課程設(shè)計(jì),使同學(xué)們了解自己的不足之處,從而使同學(xué)們有目標(biāo)的提升自己的能力。1.1.2研究背景目前歐美等國(guó)對(duì)于智能汽車的定義主要為先進(jìn)輔助駕駛系統(tǒng)(ADAS)、車載移動(dòng)應(yīng)用和無人駕駛技術(shù),并在更大程度上與城市智能交通管所謂智能汽車,主要指在普通汽車的基礎(chǔ)上增加了先進(jìn)的傳感器(雷達(dá)、攝像)、控制器、執(zhí)行器等裝置,通過車載傳感系統(tǒng)和信息終端實(shí)現(xiàn)與人、車、路之間的智能信息交換。目前歐美等國(guó)對(duì)于智能汽車的定義主要為先進(jìn)輔助駕駛系統(tǒng)(ADAS)、車載移動(dòng)應(yīng)用和無人駕駛技術(shù),并在理結(jié)合起所謂智能汽車,主要指在普通汽車的基礎(chǔ)上增加了先進(jìn)的傳感器(雷達(dá)、攝像)、控制器來?;诎沧渴謾C(jī)wifi技術(shù)的遙控小車有著廣大的潛在用戶,2014年11月數(shù)據(jù),Android占據(jù)中國(guó)智能手機(jī)操作系統(tǒng)市場(chǎng)81.5%。Android的系統(tǒng)內(nèi)核是基于網(wǎng)絡(luò)性性能超強(qiáng)的Linux,因此其網(wǎng)絡(luò)性能較其他系統(tǒng)有很大優(yōu)勢(shì)。能超強(qiáng)的Linux,因此其網(wǎng)絡(luò)性能較其他系統(tǒng)有很大優(yōu)勢(shì)。1.1.3智能小車設(shè)計(jì)構(gòu)想智能車輛是集環(huán)境感知、規(guī)劃決策、多等級(jí)輔助功能于一體的綜合系統(tǒng)。是機(jī)械人智能系統(tǒng)的一個(gè)重要組成部分。本次設(shè)計(jì)對(duì)智能小車的控制系統(tǒng)進(jìn)行了研究,設(shè)計(jì)實(shí)現(xiàn)一個(gè)基于視頻監(jiān)控和控制行跡處理的智能小車控制系統(tǒng)。實(shí)現(xiàn)智能小車最基本的兩個(gè)功能監(jiān)控、控制。通過電腦上在QT客戶端control_client界面編寫程序控制小車車輪轉(zhuǎn)動(dòng)的方向,我們還插入圖片美化了方向控制的端面,讓小車成功完成方向控制這一模塊。通過攝像頭的安裝和調(diào)試,在小車的終端上運(yùn)行camera_server運(yùn)行這個(gè)服務(wù)器,與QT客戶端進(jìn)行通信,將攝像頭采集到的圖片發(fā)送給camera_client這個(gè)客戶端,它就可以顯示出視頻,就完成了視頻拍攝的模塊部分。這就是整個(gè)小車兩個(gè)模塊的設(shè)計(jì)過程。1.1.4智能小車實(shí)現(xiàn)功能1.可實(shí)現(xiàn)小車的前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、加速、減速、停止;2.可通過wifi遙控操作,控制小車運(yùn)行狀態(tài);3.可通過視頻監(jiān)控,控制小車運(yùn)行狀態(tài);4.顯示相關(guān)運(yùn)行狀態(tài)參數(shù)與工作方式1.1.5研究思路主要應(yīng)用基于嵌入式linux系統(tǒng),利用STM32作為CPU(微控制器)控制小車最終的行動(dòng)軌跡。智能小車項(xiàng)目包含方向控制模塊,攝像頭拍攝模塊兩大功能控制系統(tǒng)。智能小車系統(tǒng)有兩個(gè)QT客戶端(攝像頭客戶端、串口控制客戶端)將采集數(shù)據(jù)通過wifi傳遞服務(wù)器路由板,再由路由板串口傳遞命令給STM32控制小車行動(dòng)。STM32微控制器根據(jù)采集的信號(hào)做出不同的判斷,從而控制電機(jī)運(yùn)動(dòng)方向和運(yùn)動(dòng)速度。將攝像頭采集到的圖片發(fā)送給camera_client這個(gè)客戶端,它就可以顯示出視頻。系統(tǒng)以STM32微控制器為核心,通過服務(wù)器采集不同的信號(hào)做出判斷,繼而改變電機(jī)的運(yùn)動(dòng)方向和運(yùn)動(dòng)速度。小車的終端上運(yùn)行camera_server運(yùn)行這個(gè)服務(wù)器,與QT客戶端進(jìn)行通信,攝像頭通過pic傳輸數(shù)據(jù)至ubuntu服務(wù)器,服務(wù)器通過網(wǎng)絡(luò)編程經(jīng)pic傳送數(shù)據(jù)至Qt客戶端,客戶端再經(jīng)過傳送數(shù)據(jù)至ubuntu服務(wù)器,ubuntu服務(wù)器經(jīng)過傳輸數(shù)據(jù)至小車,使智能小車實(shí)現(xiàn)智能改變運(yùn)動(dòng)軌跡與攝像監(jiān)控。實(shí)驗(yàn)系統(tǒng)結(jié)構(gòu)如圖1.1所示圖1.1第2章整體設(shè)計(jì)2.1Linux2.1.1了解Linux操作系統(tǒng)Linux操作系統(tǒng)整體分為三層,如圖2.11.用戶進(jìn)程:表示計(jì)算機(jī)中運(yùn)行的所有程序,它們運(yùn)行于用戶空間,由內(nèi)核統(tǒng)一管理;2.內(nèi)核:這是操作系統(tǒng)的核心,負(fù)責(zé)管理硬件系統(tǒng),同時(shí)為上層的應(yīng)用程序提供操作接口;3.硬件系統(tǒng):包括CPU、內(nèi)存、硬盤、網(wǎng)卡等;圖2.12.1.2網(wǎng)絡(luò)編程常用函數(shù)socket()創(chuàng)建套接字connect()建立連接bind()綁定本機(jī)地址和端口listen()設(shè)置監(jiān)聽套接字accept()接受TCP連接close()關(guān)閉套接字2.2服務(wù)器構(gòu)架2.2.1V4L2架構(gòu)1.攝像頭初始化Camera_init2.開始采集圖片Camera_start3.while(1){出隊(duì)一張圖片發(fā)送(長(zhǎng)度)(內(nèi)容)入隊(duì)一張圖片}4.停止采集Camera_stop5.結(jié)束攝像頭Camera_exit2.2.2CS架構(gòu)之客戶端編程步驟1.創(chuàng)建套接字、地址結(jié)構(gòu)及其長(zhǎng)度intsocket(intdomain,inttype,intprotocol);參數(shù)domaintypeprotocol意義地址族AF_INET套接字類型參數(shù)通常置為0 SOCK_STREAM//流式套接字 套接字類型SOCK_DGRAM//數(shù)據(jù)報(bào)套接字 SOCK_RAW//原始套接字2.連接服務(wù)器intconnect(intsockfd,(structsockaddr*)&addr,socklen_taddrlen);參數(shù)intsockfd(structsockaddr*)addrsocklen_taddrlen意義流式套接字服務(wù)器的地址結(jié)構(gòu)地址結(jié)構(gòu)的長(zhǎng)度2.2.3初始化CS架構(gòu)之服務(wù)器編程步驟車1.創(chuàng)建套接字和地址結(jié)構(gòu)及其長(zhǎng)度,同客戶端2.綁定本機(jī)地址和端口(一般服務(wù)器使用)int

bind(int

sockfd,

(struct

sockaddr

*)&my_addr,

int

addrlen);參數(shù)intsockfdconststructsockaddr*addrsocklen_taddrlen意義流式套接字地址結(jié)構(gòu)指針地址結(jié)構(gòu)長(zhǎng)度返回值:0或-13.設(shè)置監(jiān)聽套接字intlisten(intsockfd,intbacklog);參數(shù)intsockfdintbacklog意義流式套接字最大等待隊(duì)列長(zhǎng)度成功返回0,失敗返回-1,完成listen()調(diào)用后,流式套接字變成了監(jiān)聽套接字4.等待連接,創(chuàng)建讀寫套接字(只能用于收發(fā)數(shù)據(jù))intaccept(intsockfd,(structsockaddr*)addr,socklen_t*addrlen);參數(shù)intsockfd(structsockaddr*)addrsocklen_t*addrlen意義監(jiān)聽套接字客戶端的地址結(jié)構(gòu),一般設(shè)置NULL客戶端地址結(jié)構(gòu)的長(zhǎng)度,一般設(shè)置NULL接受控制客戶端發(fā)送的控制小車移動(dòng)命令把命令通過串口通信,發(fā)給STM32,讓小車動(dòng)起來2.3職責(zé)分配1.camer_client攝像頭客戶端負(fù)責(zé)人的主要職責(zé)是:創(chuàng)建服務(wù)器套接字及地址端口,并與攝像機(jī)服務(wù)器端口連接。通過端口連接攝像頭服務(wù)器,接收服務(wù)器數(shù)據(jù),通過轉(zhuǎn)到槽命令將攝像頭采集到的圖片顯示到QT界面的“PushButton”窗口上,并對(duì)QT界面進(jìn)行背景優(yōu)化及控制按鈕美化。2.camer_server攝像頭服務(wù)器負(fù)責(zé)人的主要職責(zé)是:實(shí)現(xiàn)控制攝像頭的數(shù)據(jù)采集并創(chuàng)建服務(wù)器套接字及地址端口,把攝像頭采集的數(shù)據(jù)準(zhǔn)確的傳輸?shù)娇蛻舳硕丝凇?.control_client串口控制客戶端負(fù)責(zé)人的主要職責(zé)是:使用QT軟件在設(shè)計(jì)界面創(chuàng)建按鈕(PushButtons)通過轉(zhuǎn)到槽指令在QT界面設(shè)計(jì)控制指令,并對(duì)控制指令按鈕進(jìn)行美化。在屬性命令欄里找到styleSheet點(diǎn)擊彈出編輯樣式表,添加資源圖片或其他,對(duì)按鍵進(jìn)行美化。創(chuàng)建服務(wù)器套接字及地址端口,并與串口服務(wù)器連接。通過端口向服務(wù)器發(fā)送控制指令控制汽車運(yùn)行。4.control_server串口控制服務(wù)器負(fù)責(zé)人的主要職責(zé)是:通過代碼的編寫對(duì)電機(jī)進(jìn)行控制,并通過指令控制讓汽車實(shí)現(xiàn)前后左右的行駛。創(chuàng)建服務(wù)器套接字及地址端口,通過服務(wù)器端口接收串口控制客戶端端口發(fā)送的指令對(duì)汽車進(jìn)行控制。2.4小車功能描述路由板打開,小車上面藍(lán)色的燈光變亮,證明WiFi已經(jīng)打開,將電腦連上這個(gè)WiFi。功能一:將攝像頭接到小車上面,開始運(yùn)行camera_server,在小車的終端上運(yùn)行這個(gè)服務(wù)器,那么這個(gè)服務(wù)器就會(huì)與QT客戶端進(jìn)行通信,將攝像頭采集到的圖片不停的發(fā)送給camera_client這個(gè)客戶端,讓它顯示視頻。功能二:QT界面control_client的作用是控制小車移動(dòng),在這個(gè)客戶端點(diǎn)擊按鈕,信號(hào)就會(huì)通過網(wǎng)絡(luò)發(fā)送給control_server這個(gè)服務(wù)器。這時(shí)小車還不能動(dòng),還要通過串口通信serial把這個(gè)命令發(fā)送給STM32這個(gè)板,就可以產(chǎn)生直流電源控制小車四個(gè)輪子運(yùn)動(dòng)。

總結(jié)本設(shè)計(jì)主要解決了以WiFi路由版模塊為中樞,搭載攝像頭和小車的控制服務(wù)器,通過電腦QT客戶端,實(shí)現(xiàn)了小車的遠(yuǎn)程WIFI控制以及遠(yuǎn)程的WiFi圖像傳輸。技術(shù)指標(biāo)達(dá)到設(shè)計(jì)要求的有:小車的前進(jìn),后退,左轉(zhuǎn),右轉(zhuǎn),停止的控制,攝像頭圖像傳輸。沒達(dá)到要求的有:小車的控制依然有些許遲鈍以及不靈活,攝像頭傳輸圖像模糊。主要完成工作:(1)系統(tǒng)功能設(shè)計(jì)包括小車行動(dòng)的控制,攝像頭圖像的傳輸。(2)系統(tǒng)軟件設(shè)計(jì)由QT客戶端和服務(wù)器組成。本次設(shè)計(jì)通過網(wǎng)絡(luò)架構(gòu)程序,并利用WIFI模塊建立電腦和小車之間的通信,再通過相應(yīng)的程序控制指令,以達(dá)到遠(yuǎn)程控制小車的目的。(3)完成系統(tǒng)調(diào)試,先連接小車的WiFi,再通過ubuntu32系統(tǒng)登入小車終端,將服務(wù)器程序?qū)懭胄≤嚱K端,在電腦上打開QT客戶端,連接上服務(wù)器,實(shí)現(xiàn)小車的控制。本次設(shè)計(jì)尚有幾處地方需要完善:(1)QT客戶端控制小車行動(dòng)不方便,可以讓鍵盤控制代替鼠標(biāo)控制。(2)小車可以加裝雷達(dá),遇到障礙物可以自動(dòng)避開。(3)c語言基礎(chǔ)較為薄弱,需要加強(qiáng)c語言知識(shí)與運(yùn)用能力(4)本次實(shí)訓(xùn)時(shí)間較短,缺乏操作鍛煉。

參考文獻(xiàn)[1]張毅剛,彭喜元,彭宇。單片機(jī)原理及應(yīng)用.高等教育出版社.2015.5[2]沈紅.衛(wèi)基于單片機(jī)的智能系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).電子工業(yè)出版社.2005[3]王晶.智能小車運(yùn)動(dòng)控制技術(shù)研究.武漢.武漢理工大學(xué).2009年[4]于連國(guó),李偉,王妍瑋.基于單片機(jī)的智能小車設(shè)計(jì)[J]林業(yè)機(jī)械與木工設(shè)備.2011.vol.20,NO.4:39-41[5]周學(xué)毛.新編C語言程序設(shè)計(jì)教程.西安電子科技大學(xué)出版社.2004.11

附錄附錄1、系統(tǒng)框圖或大的流程圖附錄2、系統(tǒng)截圖或照片附錄3、主要源代碼攝像頭服務(wù)器#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<string.h>#include<errno.h>#include<fcntl.h>#include<sys/mman.h>#include<sys/ioctl.h>#include<linux/videodev2.h>#define REQBUFS_COUNT 4structcam_buf{ void*start; size_tlength;};structv4l2_requestbuffersreqbufs;structcam_bufbufs[REQBUFS_COUNT];intcamera_init(char*devpath,unsignedintwidth,unsignedintheight){ inti; intfd; intret; structv4l2_buffervbuf; structv4l2_formatformat; structv4l2_capabilitycapability; fd=open(devpath,O_RDWR); if(fd==-1){ perror("camera->init"); return-1; } ret=ioctl(fd,VIDIOC_QUERYCAP,&capability); if(ret==-1){ perror("camera->init"); return-1; } if(!(capability.capabilities&V4L2_CAP_VIDEO_CAPTURE)){ fprintf(stderr,"camera->init:devicecannotsupportV4L2_CAP_VIDEO_CAPTURE\n"); close(fd); return-1; } if(!(capability.capabilities&V4L2_CAP_STREAMING)){ fprintf(stderr,"camera->init:devicecannotsupportV4L2_CAP_STREAMING\n"); close(fd); return-1; } memset(&format,0,sizeof(format)); format.type=V4L2_BUF_TYPE_VIDEO_CAPTURE; format.fmt.pix.pixelformat=V4L2_PIX_FMT_MJPEG; format.fmt.pix.width=width; format.fmt.pix.height=height; format.fmt.pix.field=V4L2_FIELD_INTERLACED; ret=ioctl(fd,VIDIOC_S_FMT,&format); if(ret==-1){ perror("camerainit"); return-1; } memset(&reqbufs,0,sizeof(structv4l2_requestbuffers)); reqbufs.count =REQBUFS_COUNT; reqbufs.type =V4L2_BUF_TYPE_VIDEO_CAPTURE; reqbufs.memory =V4L2_MEMORY_MMAP; ret=ioctl(fd,VIDIOC_REQBUFS,&reqbufs); if(ret==-1){ perror("camerainit"); close(fd); return-1; } for(i=0;i<reqbufs.count;i++) { memset(&vbuf,0,sizeof(structv4l2_buffer)); vbuf.type=V4L2_BUF_TYPE_VIDEO_CAPTURE; vbuf.memory=V4L2_MEMORY_MMAP; vbuf.index=i; ret=ioctl(fd,VIDIOC_QUERYBUF,&vbuf); if(ret==-1){ perror("camerainit"); close(fd); return-1; } bufs[i].length=vbuf.length; bufs[i].start=mmap(NULL,vbuf.length,PROT_READ|PROT_WRITE,MAP_SHARED,fd,vbuf.m.offset); if(bufs[i].start==MAP_FAILED) { perror("camerainit"); close(fd); return-1; } vbuf.type=V4L2_BUF_TYPE_VIDEO_CAPTURE; vbuf.memory=V4L2_MEMORY_MMAP; ret=ioctl(fd,VIDIOC_QBUF,&vbuf); if(ret==-1){ perror("camerainit"); close(fd); return-1; } } returnfd;}intcamera_start(intfd){ intret; enumv4l2_buf_typetype=V4L2_BUF_TYPE_VIDEO_CAPTURE; ret=ioctl(fd,VIDIOC_STREAMON,&type); if(ret==-1){ perror("camera->start"); return-1; } fprintf(stdout,"camera->start:startcapture\n"); return0;}intcamera_dqbuf(intfd,void*buf,unsignedint*size,unsignedint*index){ intret; fd_setfds; structtimevaltimeout; structv4l2_buffervbuf; while(1){ FD_ZERO(&fds); FD_SET(fd,&fds); timeout.tv_sec=2; timeout.tv_usec=0; ret=select(fd+1,&fds,NULL,NULL,&timeout); if(ret==-1){ perror("camera->dqbuf"); if(errno==EINTR) continue; else return-1; }elseif(ret==0){ fprintf(stderr,"camera->dqbuf:dequeuebuffertimeout\n"); continue; }else{ vbuf.ty

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論