項(xiàng)目-移動物體監(jiān)控系統(tǒng)_第1頁
項(xiàng)目-移動物體監(jiān)控系統(tǒng)_第2頁
項(xiàng)目-移動物體監(jiān)控系統(tǒng)_第3頁
項(xiàng)目-移動物體監(jiān)控系統(tǒng)_第4頁
項(xiàng)目-移動物體監(jiān)控系統(tǒng)_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余34頁可下載查看

付費(fèi)下載

下載本文檔

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

文檔簡介

Sprint1聲音子系統(tǒng)開OSS架OSS是“開放音頻系統(tǒng)”的縮寫,是Linux系統(tǒng)早期比較常用一種音頻架構(gòu)!基于文件1.1OSSALSA架不是很好,所以Linux內(nèi)核逐漸取消或者說減弱了對OSS架構(gòu)的支持,進(jìn)而在2002年以后1.2ALSA過ALSA庫應(yīng)用程序接口、ASLA標(biāo)準(zhǔn)庫、Linux內(nèi)核的ALSA模塊,最后才通過ALSA核心模塊調(diào)用具體的硬件驅(qū)動程序硬件。ALSA架構(gòu)主要借助于以下設(shè)備文件對音頻設(shè)備ALSA-OSS封LinuxOSS,他們是基于OSS開發(fā)的,比如在本項(xiàng)目所使用的Madplay器。為了在新版本的內(nèi)核中使用早期的OSS架構(gòu)需要考慮到向前兼容的問題所以大部分系統(tǒng)采用ALSA-1.3ALSA-OSS進(jìn)入配置菜,為了能夠使用開發(fā)板上的聲卡需要在Linux內(nèi)核里加上相應(yīng)的驅(qū)動模塊所,在內(nèi)核代碼頂層執(zhí)行Make支持ALSA-OSS封DeviceDrivers<*>Soundcardsupport>(明確目標(biāo),要配置聲卡 AdvancedLinuxSoundArchitecture>(ALSA)2.1ALSA-OSS OSSMixer OSSPCM(digitalaudio)[*]OSSPCM(digitalaudio)API-Includeplugin這三個選項(xiàng),因?yàn)殡m然低層驅(qū)動最終調(diào)用的是ALSA驅(qū)動,但是為了兼容OSS架構(gòu)的應(yīng)用程OSS SupportoldALSAALSAITALSAALSAALSA驅(qū)由于的聲卡還是屬于片上聲卡,所以在AdvancedLinuxSoundArchitecture子ALSA-OSS ALSAforSoCaudiosupport2.2ALSA主要是選中對三星的片上聲卡的支持,以及對2440使用的IIS標(biāo)準(zhǔn)的UDA134X聲卡的 2.3二.移植器SDKmp3文件id3分析高精度MPEG音頻庫,支持MPEG-1(LayerLayerIILayerIII(將sdk里面resource 的以下內(nèi)容到Linux系統(tǒng)中。并解壓以后交叉編譯,將得到將提供的 tar-xzflibid3tag-0.15.1b.tar.gztar-xzflibmad-0.15.1b.tar.gztar-xzfzlib-1.1.4.tar.gztar-xzfmadplay-zlib源碼。使用命令:./configuresharedprefix=/NFS/_install,生Makefile。其中—shared--prefix=_install指明后面執(zhí)makeinstall后庫和頭文件的安裝路徑,注意創(chuàng)建_install。LDSHARED=arm-linux-gcc-shared-Wl,-soname,libz.so.1CPP=arm-linux-gcc-E到指定的下,當(dāng)然這里指的是之前創(chuàng)建的_install這個。 cp - 下的庫和頭文 cp_install/include/*.h/opt/EmbedSky/4.3.3/arm-none-linux-gnueabi/include/-rfcp_install/lib/*/opt/EmbedSky/4.3.3/arm-none-linux-gnueabi/lib/-rflibid3tag源碼。使用命令:./configure--host=arm-linux--Makefile。其中--host--prefix=/NFS/_install指明后面執(zhí)行makeinstall后庫和頭文件的安裝路徑,這里指定的_install假如不makeinstall后會自動創(chuàng)建。 下,也就是之前創(chuàng)建的_install這個 將生成的動態(tài)庫拷貝到根文件系統(tǒng)/NFS/rootfs下的libcp/NFS/_install/lib/*.so*/NFS/rootfs/lib/-arf,如果原本就有這些不需要 cp_install/include/*.h/opt/EmbedSky/4.3.3/arm-none-linux-gnueabi/include/-rfcp_install/lib/*/opt/EmbedSky/4.3.3/arm-none-linux-gnueabi/lib/-rf過程中,由于之前已經(jīng)過zlib的庫文件,所以會提示是否覆蓋,直接回./configureMakefile中需要去掉一個 makecp 將相關(guān)頭文件和庫文件到交叉編譯器的路徑下cp_install/include/*.h/opt/EmbedSky/4.3.3/arm-none-linux-gnueabi/include/-rfcp_install/lib/*/opt/EmbedSky/4.3.3/arm-none-linux-gnueabi/lib/-rf進(jìn)入madplay源碼。由于前面已經(jīng)將madplay所依賴的動態(tài)庫拷貝到了根文件系統(tǒng)的/lib下,這里只需要編譯動態(tài)連接的madplay程序即可,這樣的使用命令:./configurehost=arm-linux,生成Makefile使用命令:make,編譯madplay,即可在madplay源碼 放器主程序madplay。使用命令:cpmadplay/NFS/rootfs/sbin,將madplay拷貝到開發(fā)板根文件系 arm-linux-gccglibc庫文件到開發(fā)板的文件系統(tǒng),交叉編譯的c庫文件在 cp./*/NFS/rootfs/lib/-PCLinux中查看madplayarm-linux-readelf-dSharedlibrary:Sharedlibrary:Sharedlibrary:Sharedlibrary:Sharedlibrary:Sharedlibrary:后面內(nèi)容先不管,可以看到需要6個動態(tài)庫,然后現(xiàn)在去的nfs文件系統(tǒng)的lib下通過samba從windows一首MP3后綴的歌曲到PC的Linux中nfs文件系統(tǒng)1.MP3(madplay1.mp3就可以聽到悅耳的歌曲了請插上耳機(jī))雖然有可能會輸出亂碼但是哦現(xiàn)在不關(guān)心,madplay1.mp3mp3_log.txt2>&1madplayQ植有問題,請思考是不是把所有的動態(tài)庫都完全了!Sprint2頭子系統(tǒng)開一.頭驅(qū)動開1.頭系統(tǒng)架圖1.1V4L2本就是Linux的重要應(yīng)用場合,所以如何合理高效的管理系統(tǒng)道是專門為Linux設(shè)計(jì)的一個子系統(tǒng)的第二個版本。V4L2有一段歷史了。早在1998的用于其他多的開發(fā),如音頻等但是該架構(gòu)目前只能用于Linux操作系統(tǒng)上。整個V4L2圖1.1V4L2也正是由于這個組建的存在,才讓可以在用戶空間使用的一套編程接口API去控序相互獨(dú)立,但是共同到V4L2子系統(tǒng)下,以便和用戶空間應(yīng)用程序進(jìn)行通信。(4).底層硬件:就是實(shí)際的頭等物理硬件(1).接口( captureinterface):這種應(yīng)用的設(shè)備可以是或者頭.V4L2的最初設(shè)計(jì)就是應(yīng)用于這種功能的.(2).輸出接口( outputinterface):可以驅(qū)動計(jì)算機(jī)的圖像設(shè)備--(3).直接傳輸接口( overlayinterface):它的主要工作是把從設(shè)備過來的信號直接輸出到輸出設(shè)備之上,而不用經(jīng)過系統(tǒng)的CPU.(4).間隔消隱信號接口(VBIinterface):它可以使應(yīng)用可以傳輸消隱期的(5).收音機(jī)接口(radiointerface):可用來處理從AM或FM設(shè)備接收來的音頻2.頭驅(qū)動使由于本項(xiàng)目采用的是基于ZC3XX系列的USB頭,所以需要在內(nèi)核里面添加該相應(yīng)的驅(qū)動程序,只需要自己在內(nèi)核使能即可!按照如下步驟可以使能USB頭。(1).在內(nèi)核源代碼頂層執(zhí)行makeconfig(2).DeviceDrivers>(,只要是添加驅(qū)動都是要進(jìn)入這個選項(xiàng)Multimediadevices>(顯然頭屬于多范疇[*]captureadapters>(捕獲也即是頭 V4LUSBdevices>(采用的是USB頭 GSPCA s>(萬能頭驅(qū)動 Drive(使用makeuImageARCH=arm 到開發(fā)板并啟動,掛載NFS文件系統(tǒng)進(jìn)入下一階段的測試。3.頭驅(qū)動測初步測#usb1-1:newfullspeedUSBdeviceusings3c2410-ohciandaddress4usb1-1:NewUSBdevicefound,idVendor=0ac8,idProduct=301busb1-1:NewUSBdevicestrings:Mfr=1,Product=2,SerialNumber=0usb1-1:Product:PCCamerausb1-1:Manufacturer:Vimicrousb1-1:configuration#1chosenfrom1choicegspca:probing0ac8:301bzc3xx:probe2wrovvga0x0000zc3xx:probesensor->0011zc3xx:FindSensorHV7131R(c)gspca:probeok由上面的提示信息知道,驅(qū)動使能成功,再通過ls命令查看dev 即ls/dev有:表明的USB頭在開發(fā)板的系統(tǒng)里創(chuàng)建的對應(yīng)設(shè)備文件是/dev/0,當(dāng)然讀者要根據(jù)自身實(shí)際情況判斷對應(yīng)的設(shè)備文件是什么,有可能是3,4等。使用提供的amera.c文件交編譯出發(fā)板運(yùn)行測試應(yīng)程序在譯之前要記得修文件里打開設(shè)備文件也就是前說的/dev/0,根據(jù)記得設(shè)備文件修改open函數(shù)如傳遞你open數(shù)的參是你對應(yīng)的際設(shè)備件那么打開會有法預(yù)知結(jié)果有能失敗可能打個文件導(dǎo)抓取的是空等情況。arm-linux-gcc-gcamera.c-o得到的camera就是可執(zhí)行文件,將他到開發(fā)板的文件系統(tǒng)的根 口控制臺執(zhí)行./camera命令,TQ2440有如下提示:#./cameraDriverName:zc3xxCardName:PCCameraBusinfo:usb-s3c24xx-1zc3xx:probe2wrovvga0x0000CameraDone.#同時在 V4L2獲取驅(qū)動信息-VIDIOC_QUERYCAP;在此之后可以獲取的信息,不僅僅是本程序中后面的獲取設(shè)置圖像格式,還可以獲取頭所支持的圖像格式等信息。開始圖像-VIDIOC_STREAMON;在此之后需要使用select函數(shù)等待輸出緩沖有可以參考以下資料進(jìn)行學(xué)習(xí):Sprint3移動主系統(tǒng)設(shè)計(jì)與開Ffmpegffmpeg是一個開源免費(fèi)跨平臺的和音頻流方案,它提供了錄制、轉(zhuǎn)換以及流化音的完整解決方案。移植ffmpeg的目的主要是為了使motion能支持將捕獲到的流轉(zhuǎn)換成avi格式的文件進(jìn)行。因此,僅需要移植ffmpeg中如下兩個庫,而且Motionffmpeg上下文結(jié)構(gòu)和音幀等功能。resources/Sprint3/tarxzfffmpeg-ffmpeg-0.5.1源碼。使用命令:./configure--enable-memalign-hack--disable-debug--prefix=/NFS/_install--arch=arm--cross-prefix=arm-linuxenable-shared,Makefile。其中--prefix成的庫和執(zhí)行程序的安裝,這里將該路徑設(shè)置為ffmpeg源碼下的_install使用命令:make,編譯源碼,使用命令:makeinstall,將生成庫和頭文件安 cp/NFS/_install/lib/libavcodec.so*/NFS/rootfs/lib/cp/NFS/_install/lib/libavformat.so*/NFS/rootfs/lib/cp/NFS/_install/lib/libavutil.so*/NFS/rootfs/lib/Motion將 tarxzfmotion- ./configure--prefix=${PWD}/_install --host=arm-linux--without-mysql--without-pgsql\--with-生成Makefile。紅色部分是ffmpeg的安裝 錄的功能!這里的安裝 在motion源代碼 定的./_install下。拷貝./_install/bin/motion到開發(fā)板根文件系統(tǒng)的/usr/sbin下。例如,開發(fā)板根文件系統(tǒng)位于/NFS/rootfs/下,則可使用如下命令進(jìn)行拷貝:cp./_install/bin/motion/NFS/rootfs/usr/sbin/。libjpeg在開發(fā)板根文件系 中創(chuàng)建 ,因?yàn)槟琺otion的時候,在安裝(_install)etc/motion-dist.conf個文件是motion運(yùn)行的時候所依賴的配置文件,利用該文件作為基礎(chǔ),針對的開發(fā)板做一定的修改,這里列出了主要關(guān)心和修改的配置參數(shù)2每秒最大捕獲幀數(shù)??紤]到設(shè)備該值時觸發(fā)motion3網(wǎng)中應(yīng)用,因此為獲得更好的實(shí)時限制僅本地可連接機(jī)。取消該限制僅本地可通過網(wǎng)頁進(jìn)行控消ffmpeg_cap_newonffmpeg_cap_motionoffffmpeg__codecmpeg4locate將該文件到開發(fā)板文件系統(tǒng)的etc 出的參考值修改相關(guān)的配置參數(shù),保存以后,使用如下命令開啟motion:motion-c[0]Processingthread0-configfile[0]Unknownconfigoption[0]Unknownconfigoption[0]Unknownconfigoption[0]Unknownconfigoption[0]Unknownconfigoption[0]Motion3.2.12[0]Motiongoingtodaemon關(guān)于sql由于暫時沒有用到,所以有關(guān)sql的錯誤和警告先不予理會通過samba觀察 頭前移動會出來已經(jīng)將移動物體表示出來了表明的motion移植成功了而且存在avi文件,也說明的ffmpegsprintSprint4web服務(wù)器開一.BOA服務(wù)器移BoaWeb60KBWebBoaforkBoaCGICGIfork,Boa安全。:,是目前領(lǐng)域比較流行的web服務(wù)器,智web進(jìn)入boa源代碼的src 件以及一些源代碼和Makefile文件;CC=gcc,將其改成CCarm-linux-gccCPPgcc–Earm-linux-gccEBoa本身代碼是存在些許bug的,要對這些bug進(jìn)行修復(fù)。之所以這里能直接給出//time_offset=TIMEZONE_OFFSET(t);time_offset=0;util.c:100:1:error:pasting"t"and"->"doesnotgiveavalidpreprocessingboa.c210229boa運(yùn)行的時候會出現(xiàn)DIE的現(xiàn)象,#ifif(passwdbuf==NULL){} /*testforfailed-but-return-was-successful* /list-if(setuid(0)!=-1)DIE("ickyLinuxkernel} 下即可作為哪個用戶組運(yùn)行,即它擁有該用戶組的權(quán)限,一般都是作為哪個用戶組運(yùn)行,即它擁有該用戶組的權(quán)限,一般都是HTML文檔的主,非常重要,boa畢竟是為網(wǎng)頁服務(wù)的,所以務(wù)器的根路徑開始。這里拷貝提供的web到開發(fā)板的文系統(tǒng)根即可,因此這里設(shè)置為/web/HTTPmime.types文件位置。如果沒有以/開始,則表示從服務(wù)器的mime.types文件,此時需要用MIMEmime.types樣。如果用mime.types指明CGI的虛擬路徑對應(yīng)的實(shí)際路徑一般所有CGI都web到開發(fā)板文件系統(tǒng)根,之后啟動boaPCIPCGI于瀏覽器端的用戶輸入而觸發(fā),提供與客戶端HTML頁面的接口。它能讓網(wǎng)絡(luò)用戶和運(yùn)行服務(wù)器系統(tǒng)所在主機(jī)的應(yīng)用程序,進(jìn)一步控制相關(guān)的硬件,并把結(jié)果格式化輸出為CGI和JAVAWeb不同,利用JAVA開發(fā)的頁或者web程序是通過網(wǎng)絡(luò)將java的應(yīng)用程序傳輸?shù)娇蛻魴C(jī),然后客戶機(jī)再運(yùn)行相應(yīng)的Java程序,但是CGI則是在服務(wù)器上運(yùn)CGI(HTML。要想在設(shè)備上運(yùn)行CGI程序,就必須有CGI的庫,而且CGI程序的編譯也需要包包進(jìn)行CGI的移植。具體一點(diǎn)的說,應(yīng)該是CGIC這個主要是針對C語言編寫的CGI程序的庫,CGI還支持JAVA以及Python等語言,使用到的庫也不一樣,這里主要講C語CGICCGICCGICLinux,UnixCGICtar-xzf進(jìn)入cgic205源碼 ,修改Makefile。找到CC=gcc,將其改成CC=arm-linux-gcc,AR=ararRANLIBranlibranlib。找到gcccgictest.o-ocgictest.cgi${LIBS},將其改成$(CC)$(CFLAGS)cgictest.oocgictest.cgi${LIBSgcccapture.o-ocapture${LIBS},將其改成$(CC)$(CFLAGS)capture.o-ocapture${LIBS},并保存退出。將編譯好的cgic庫文件(libcgic.a)和測試文件capture和cgic.html以及cgictest.cgi分別到開發(fā)板文件系統(tǒng)的/lib和/下要支持CGI程序被外部瀏覽器,首先要讓web服務(wù)器支持CGI且針對CGI程序的路徑做好相應(yīng)的配置這里要針對BOA服務(wù)器給出CGI的虛擬路徑對應(yīng)的物理路徑。通boa.confScriptAliasScriptAlias/cam//表明瀏覽器地址欄輸入的/cam對應(yīng)的實(shí)際上是開發(fā)板文件系統(tǒng)的/運(yùn)行boa程序,在PC的瀏覽器輸入你的開發(fā)板Ip地址/cam/cgictest.cgi,回車就會boacgicCGIC程序代碼分#include<stdio.h>#include<stdlib.h>#include<sys/types.h>#include<fcntl.h>#include<unistd.h>#include<sys/ioctl.h>#include<sys/stat.h>#include<sys/mman.h>#include<cgic.h>/*主函數(shù)不能是main*/intcgiMain(){intfd,led_control,led_state;char*data;fprintf(cgiOut,fprintf(cgiOut,"<TITLE>LEDCGI</TITLE></HEAD>\n");fprintf(cgiOut,"<BODY>");fprintf(cgiOut,"<H1>ControlLedOk!</H1>");fprintf(cgiOut,"</BODY>\n");fprintf(cgiOut,"</HTML>\n");data=fd=/*根據(jù)瀏覽器的輸入控制相應(yīng)的eLED*//*關(guān)閉LED*/return}<metahttp-equiv="Content-Type"content="text/html; <title>web<h1align="center">WEB<formaction="/cam/led.cgi" <p 請輸入需要控制的led<inputtype="text" <p 請輸入控制led動作<inputtype="text" <palign="center"><inputtype="submit" <inputtype="reset" 其中<form和</form標(biāo)識著單的開和結(jié)。acion="/cam/ed.cgi指明用處理表單提交的據(jù)的CGI程序?yàn)?cm/ 的led.gi而通過前的boa置知cam/實(shí)際上是指這個 ,所以的le.ci程序要存在開板的//目錄下。<inpt>示輸入單中的容默為tt屬性,但指定了ype為txt以就是text性,而后面還定了tye為subit表示提交性,name"led_cotrol"示的是輸表單的素名稱為led_conrol,理一個元素是led_sate,就是和C語言交互數(shù)據(jù)變。type="ubmit"示輸類為提交。以當(dāng)按下表內(nèi)的按鈕,就會點(diǎn)擊結(jié)提交給ld.cgi個程序處了。C語言程序如何獲到瀏覽器提交的據(jù)呢?是通過dta=geenv("QURY_TRING")這語句,里的就獲取環(huán)境變量的意思,QUERY_STRING實(shí)際測將led.cgi放到/ 錄,啟動boa,在瀏覽器地址欄輸入開發(fā)板IP地址有下圖效果:LED編譯CGI程序的時候要用如下令arm-linux-gcc-LCGIClcgic-ICGIC路徑C言源文件-ocgi頭文件的路徑,這里的庫文件和頭文件都是在原來解壓CGIC源代碼得到的原 注意在C語言程序中打開設(shè)備自己的LED對應(yīng)的設(shè)備文件名TQ2440led,leds0,LED。C言編寫CGI程序的時候不main函數(shù)作為主函數(shù)main函數(shù)在CGIC只要有標(biāo)準(zhǔn)輸入輸出的語言都可以編寫CGI程序,但是要注意標(biāo)準(zhǔn)CGI程序的頭部MIME“Content-Typetext/html\n\nHTML源代碼給web服務(wù)器。而任何MIME頭信息后必須有兩個空行,這就是為什么要有\(zhòng)n\n的原CGI基于前面所述的C語言編寫CGI程序的知識,可以很快編寫出顯示的CGI程已。HTML顯示是通過img一幅到指定位置,基本格式如下:<imgsrc="divcss5-logo-201305.gif"width="165"height="60"#include<stdio.h>#include<stdlib.h>#include<sys/types.h>#include<fcntl.h>#include<unistd.h>#include<sys/ioctl.h>#include<sys/stat.h>#include<sys/mman.h>#include<cgic.h>/*主函數(shù)不能是main*/intcgiMain(){fprintf(cgiOut,fprintf(cgiOut,"<TITLE>LEDCGI</TITLE></HEAD>\n");fprintf(cgiOut,"<BODY>");fprintf(cgiOut,"<H1>ControlLedOk!</H1>");fprintf(cgiOut,"</BODY>\n");fprintf(cgiOut,"</HTML>\n");return}在fprintf(cgiOut,"<H1>ControlLedOk!</H1>");后面加上img語句,表明要的路徑以及在瀏覽器中的顯示位置和大小,加入如下語句:fprintf(cgiOut,"<imgsrc=\"/sd/%s\"width=\"165\"height=\"60\"/>",雙引號要使用轉(zhuǎn)義字符,才能正確輸入到cgiOut,才能在HTML文件中保留必要的的路徑要針對BOA服務(wù)器來寫,之前把根下的/web設(shè)置成了BOA的主,所以后面的HTML文件的是/web/的相對,而不能是開發(fā)板文件系統(tǒng)的絕對路徑。所以在HTML文件里的/cam/實(shí)際上是開發(fā)板的//;是存放在/mnt/sd下的,但是不能直接/mnt/sd,只能/web及其子,所以要在/web下新建一個軟,到/mnt/sd,軟就相當(dāng)于windows下的快捷方式;進(jìn)入/web以后用ln-s/mnt/sdsd命令即可創(chuàng)建/web下的一個軟sd,所以路徑寫成了/sd編譯CGI程序要加上必要的L選項(xiàng)指定庫文件路徑,和I選項(xiàng)指定頭文件路徑。將編譯好的CGI程序image.cgi放到開發(fā)板文件系統(tǒng)的/,修改/web index.html文件。這里主要是修改“查看”菜單,修改內(nèi)容如下:<a "讓他索引到一個超,也就是image.cgi,這樣在點(diǎn)擊查看的時候就可以執(zhí),前面的努力已經(jīng)可以顯示了,但是界面不太美觀希望整個系統(tǒng)的頭部和,<metahttp-equiv="Content-Type"content="text/html; <style BODY{background-color:{padding:0.3em0.1embackground-color:DeepSkyBlueclear:font-size:text-align:text-align:}p.headerfont-size:400%;padding:20px;}p.titlefont-size:120%;padding:2px;width:width:}{background-color:DodgerBluepadding:0.2em1.2em0.2embackground-color:DeepSkyBlueborder-right:1pxborder-right:1pxsolidtext-align:center;font-size:153%;}li{font-size:88%;:hover{background-color:DarkMagenta<center><tableborder="0"<td<p

""<a<tr<hr <a " <a " <a <a " <a <a " <a " <a "LED:index.html <td <hr <imgsrc="/resource/connect.jpg"alt= width="480" <hr 但是這個部分占據(jù)的瀏覽器頁面位置就是想要顯示的位置,所以要在CGI程有了公有的頭部和尾部HTML文件以后,就是要在之前顯示的cgi程序中想辦法將示出來,通過實(shí)現(xiàn)printf_file函數(shù)來實(shí)現(xiàn)將某個HTML文件的內(nèi)容輸出到cgiOut,然后分別在顯示的前面調(diào)用該函數(shù)顯示公有頭部HTML,在顯示的后面調(diào)用該函數(shù)顯示公有尾部即可。Printf_file#defineMAXBUFvoidprintf_file(FILE*dst,char*{ FILE* char src_fp= while(NULL!= }int{ fprintf(cgiOut,"<td fprintf(cgiOut,"<hr fprintf(cgiOut,"<imgsrc=\"/sd/%s\"width=\"165\"height=\"120\"/>","01- fprintf(cgiOut,"<hr return} 雖然前面的工作已經(jīng)可以讓顯示一幅在瀏覽器上但是希望在一個頁面內(nèi)同時顯示多幅且具有跳轉(zhuǎn)功能,從而進(jìn)一步顯示整個下的所有,而且要刪除控led將文件名加入待顯示列重復(fù)步驟2直到完下的所有文jpgintlist_pic(constchar*path,constchar{//遍歷 DIRstructdirentinti=//1.打 dir= while((ptr= //3. if(0==cmp_sfc(ptr- //4. //4.如果 return}這里擬采用每一頁顯示16張的形式布局,每一行4張,共4行,所以要主要換行,這現(xiàn)在CGI程序的tr和td的使用。還計(jì)算出了所有的數(shù)以及總voidshow_pic(intstart,intend,int{ int int fprintf(cgiOut,"<td fprintf(cgiOut,"<table if if fprintf(cgiOut,"<pclass=\"little\">--第%d%d</p>",start/16+1,total%16?total/16+1:total/16); }實(shí)現(xiàn)下拉voidshow_select_form(int{ inti, pgn= if(total% fprintf(cgiOut, fprintf(cgiOut,"<td fprintf(cgiOut, fprintf(cgiOut, fprintf(cgiOut,"<select for(i=0;i<pgn; fprintf(cgiOut,"<optionvalue=\"opt%d\">%d</option>",i, fprintf(cgiOut, fprintf(cgiOut,"頁 fprintf(cgiOut,"<inputtype=\"submit\"name=\"gopage\" fprintf(cgiOut, fprintf(cgiOut, fprintf(cgiOut, } if(cgiFormSubmitClicked("gopage")==cgiFormSuccess) inti, char char optlist=(char**)malloc(sizeof(char*)* for(i=0;i<total;i++) sprintf(tmp,"opt%d", optlist[i]= cgiFormSelectSingle("selectpage",optlist,total,&sel, start=sel* end=start+ end=total<end?total: int{int start= end= // // if(cgiFormSubmitClicked("gopage")==cgiFormSuccess) inti, char char optlist=(char**)malloc(sizeof(char*)* for(i=0;i<total;i++) sprintf(tmp,"opt%d", optlist[i]= cgiFormSelectSingle("selectpage",optlist,total,&sel, start=sel* end=start+ end=total<end?total: //fprintf(cgiOut,"<p>s=%d,e=%d</p>",start, //顯 //顯 return}CGI在HTML頁面中嵌入多可以通過embed實(shí)現(xiàn),具體的可以查閱HTML嵌入多媒體相關(guān)知識點(diǎn)。這里給出顯示的代碼,至于其他布局,諸如加網(wǎng)頁頭部以及底部,voidshow_movie(intnr,int inti,j= if(nr>total- fprintf(cgiOut,

溫馨提示

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

最新文檔

評論

0/150

提交評論