版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
嵌入式系統(tǒng)原理與應(yīng)用電子與電氣工程學(xué)院第三章文件I/O編程教師:程蔚正大氣象厚德載物MinnanUniversityofScienceandTechnology文件I/O編程CONTENTS01.系統(tǒng)調(diào)用---文件訪問02.標(biāo)準(zhǔn)I/O---文件訪問03.S5P6818文件操作實(shí)例正大氣象厚德載物MinnanUniversityofScienceandTechnology01PARTONE系統(tǒng)調(diào)用---文件訪問正大氣象厚德載物MinnanUniversityofScienceandTechnology任務(wù)實(shí)現(xiàn):在廣告屏上顯示“中華人民共和國(guó)成立75周年”宣傳圖Linux中文件編程可以使用兩種方法:Linux系統(tǒng)調(diào)用:依賴于Linux系統(tǒng)C語言庫(kù)函數(shù):與操作系統(tǒng)是獨(dú)立的,在任何操作系統(tǒng)下,使用C語言庫(kù)函數(shù)操作文件的方法都是相同的。文件編程在數(shù)字世界中,文件不僅是數(shù)據(jù)的載體,更是信息安全的前線,掌握文件操作就像是通往打開數(shù)字寶庫(kù)的鑰匙,而Linux下一切皆文件,文件操作尤其重要。
系統(tǒng)調(diào)用---創(chuàng)建文件(creat)filename:要?jiǎng)?chuàng)建的文件名(包含路徑,缺省為當(dāng)前路徑)mode:創(chuàng)建模式,常見創(chuàng)建模式有S_IRUSR 可讀4S_IWUSR 可寫2S_IXUSR 可執(zhí)行1S_IRWXU 可讀可寫可執(zhí)行7intcreat(constchar*filename, mode_tmode)系統(tǒng)調(diào)用---access功能:判斷文件是否可以進(jìn)行某種操作(讀,寫,存在等)pathname:文件名稱mode:要判斷的訪問權(quán)限??梢匀∫韵轮祷蛘呤撬麄兊慕M合。R_OK:文件可讀,W_OK:文件可寫,X_OK:文件可執(zhí)行,F(xiàn)_OK:文件存在。返回值:當(dāng)測(cè)試成功時(shí),函數(shù)返回0,否則如果一個(gè)條件不符時(shí),返回-1。intaccess(constchar*pathname,intmode)系統(tǒng)調(diào)用---打開文件(open)pathname:要打開的文件名(包含路徑,缺省為當(dāng)前路徑)flags:打開標(biāo)志mode:被打開文件的權(quán)限返回值:成功為文件描述符,失敗為-1intopen(constchar*pathname,intflags)intopen(constchar*pathname,intflags,mode_tmode)系統(tǒng)調(diào)用---關(guān)閉文件(close)fd:文件描述符返回值:成功為0,失敗為-1intclose(intfd)操作3.1:open_count.c操作3.2:access_creat.c系統(tǒng)調(diào)用---read功能:從文件描述符fd所指定的文件中讀取length個(gè)字節(jié)到buf所指向的緩沖區(qū)中。fd:文件描述符buf:讀出數(shù)據(jù)的緩沖區(qū)length:讀出的字節(jié)數(shù)返回值:成功為實(shí)際讀取的字節(jié)數(shù),到達(dá)文件結(jié)尾為0,失敗為-1。intread(intfd,constvoid*buf,size_tlength)系統(tǒng)調(diào)用---write功能:把length個(gè)字節(jié)從buf指向的緩沖區(qū)中寫到文件描述符fd所指向的文件中,返回值為實(shí)際寫入的字節(jié)數(shù)。fd:文件描述符buf:寫入數(shù)據(jù)的緩沖區(qū)length:寫入數(shù)據(jù)的字節(jié)數(shù)返回值:成功已寫的字節(jié)數(shù),失敗為-1intwrite(intfd,constvoid*buf,size_tlength)操作3.3:my_copy.c系統(tǒng)調(diào)用---lseek功能:將文件讀寫指針相對(duì)whence移動(dòng)offset個(gè)字節(jié)。fd:文件描述符offset:偏移量,負(fù)(向前移),正(向后移)whence:相對(duì)位置SEEK_SET:當(dāng)前位置為文件的開頭 SEEK_CUR:當(dāng)前位置為文件指針的位置 SEEK_END:當(dāng)前位置為文件的結(jié)尾返回值:成功為文件的當(dāng)前位移,失敗為-1intlseek(intfd,offset_toffset,intwhence)操作3.4:read_wav.c1、open、close、read、write、creat、lseek、access2、作業(yè)3、思政:在數(shù)字世界中,文件不僅是數(shù)據(jù)的載體,更是信息安全的前線,掌握文件操作就像是通往打開數(shù)字寶庫(kù)的鑰匙。
總結(jié)與作業(yè)THANKYOU!02PARTTWO標(biāo)準(zhǔn)I/O---文件訪問正大氣象厚德載物MinnanUniversityofScienceandTechnology標(biāo)準(zhǔn)I/O---打開文件(fopen)path:要打開的文件名(包含路徑,缺省為當(dāng)前路徑)mode:文件打開的狀態(tài)返回值:成功為文件指針,失敗為NULLFILE*fopen(constchar*path,constchar*mode)標(biāo)準(zhǔn)I/O---關(guān)閉文件(fclose)stream:已打開的文件指針返回值:成功為0,失敗為EOFintfclose(FILE*stream)標(biāo)準(zhǔn)I/O---錯(cuò)誤處理s:在標(biāo)準(zhǔn)錯(cuò)誤流上輸出的信息返回值:無voidperror(constchar*s);errnum:錯(cuò)誤碼返回值:錯(cuò)誤碼對(duì)應(yīng)的錯(cuò)誤信息char*strerror(interrnum);標(biāo)準(zhǔn)I/O---文件定位stream:需要定位的文件指針offset:相對(duì)于基準(zhǔn)值的偏移量whence:基準(zhǔn)值,SEEK_SET:文件起始位置SEEK_CUR:文件當(dāng)前讀寫位置SEEK_END:文件結(jié)束位置返回值:成功為0,失敗為EOF。intfseek(FILE*stream,longoffset,intwhence);標(biāo)準(zhǔn)I/O---文件定位stream:需要定位的文件指針返回值:成功為當(dāng)前讀寫位置,失敗為EOF。longftell(FILE*stream);標(biāo)準(zhǔn)I/O(指定大小進(jìn)行讀寫)---文件讀ptr:存放讀入記錄的緩沖區(qū)size:讀取的記錄大小nmemb:讀取的記錄數(shù)stream:要讀取的文件流返回值:成功為返回實(shí)際讀取到的nmemb數(shù)目
失敗為EOF。size_tfread(void*ptr,size_tsize,size_tnmemb,FILE*stream)標(biāo)準(zhǔn)I/O(指定大小進(jìn)行讀寫)---文件寫ptr:存放寫入記錄的緩沖區(qū)size:寫入的記錄大小nmemb:寫入的記錄數(shù)stream:要寫入的文件流返回值:成功為返回實(shí)際寫入的nmemb數(shù)目
失敗為EOF。size_tfwrite(void*ptr,size_tsize,size_tnmemb,FILE*stream)操作3.5:fread_fwrite.c標(biāo)準(zhǔn)I/O(按字符(字節(jié))輸入/輸出)---文件讀寫stream:要輸入的文件流返回值:成功為下一個(gè)字節(jié)
失敗為EOF。intgetc(FILE*stream)intfgetc(FILE*stream)intgetchar(void)標(biāo)準(zhǔn)I/O(按字符(字節(jié))輸入/輸出)---文件讀寫c:需要寫的內(nèi)容stream:要寫入的文件流返回值:成功為字符
失敗為EOF。intputc(intc,FILE*stream)intfputc(intc,FILE*stream)intputchar(intc)操作3.6:fgetc_fputc.c標(biāo)準(zhǔn)I/O(按行輸入/輸出)---文件讀寫s:要輸出的字符串stream:對(duì)應(yīng)的文件流返回值:成功為s;失敗為NULL。intputs(constchar*s)intfputs(constchar*s,FILE*stream)操作3.7:fgets_fputs.cchar*gets(char*s)charfgets(char*s,intsize,FILE*stream)s:要輸入的字符串size:輸入的字符串長(zhǎng)度stream:對(duì)應(yīng)的文件流返回值:成功為s,失敗為NULL。1、fopen、fclose、fread、fwrite、fseek、fgetc/fputc、fgets/fputs2、作業(yè)3、思政:
總結(jié)與作業(yè)THANKYOU!03PARTTHERE正大氣象厚德載物MinnanUniversityofScienceandTechnologyS5P6818文件操作實(shí)例S5P6818顯示圖片---原理在Linux中,一切皆文件,LCD顯示屏對(duì)應(yīng)的設(shè)備文件為/dev/fb0。如果想讓LCD顯示屏顯示顏色,就是把顏色寫入到LCD顯示屏對(duì)應(yīng)的設(shè)備文件中,查看LCD設(shè)備文件相關(guān)信息。[root@GEC6818/IOT]#ls-l/dev/fb0crw-rw----1rootroot29,0Jan11970/dev/fb0顏色基于RGB模型,即紅、綠、藍(lán),其范圍是[0,255],每種顏色分量都占一個(gè)字節(jié)。LCD顯示屏顯示接收的顏色信息是aRGB,a為透明度,一般為0,總共4個(gè)字節(jié),正好是int類型數(shù)據(jù)。如果要顯示紅色,可以定義一個(gè)變量等于0x00ff0000,綠色為0x0000ff00,藍(lán)色為0x000000ff。10寸LCD顯示屏的大小為1024*600,7寸LCD顯示屏的大小為800*480,寫入順序是從左到右,從上到下。圖片的格式有很多,比如bmp、png、gif、jpg等。bmp格式圖片包含54字節(jié)的bmp格式的文件頭和像素值,其像素值以BGR形式排列,每一個(gè)像素占有3字節(jié)。S5P6818顯示圖片操作3.8:bmp.c編譯運(yùn)行結(jié)果[root@GEC6818/IOT]#rxbmp[root@GEC6818/IOT]#
chmod777bmp[root@GEC6818/IOT]#./bmpcw@dell:/mnt/hgfs/share/day1_io$arm-none-linux-gnueabi-gccbmp.c-obmpS5P6818獲取坐標(biāo)值操作3.9:ts.c編譯運(yùn)行結(jié)果cw@dell:/mnt/hgfs/share/day1_io$
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年版:融資租賃合同
- 2024年某商業(yè)大廈消防系統(tǒng)工程承包合同版B版
- 2025專利實(shí)施許可合同2
- 2025產(chǎn)品代加工合同范文
- 研發(fā)中心土地租賃合同鄉(xiāng)鎮(zhèn)
- 2025不動(dòng)產(chǎn)贈(zèng)與合同
- 食品加工廠設(shè)備維護(hù)
- 醫(yī)療器械銷售代表招聘協(xié)議
- 精密儀器批次管理辦法
- 河北省邢臺(tái)市2024屆高三上學(xué)期期末考試數(shù)學(xué)試題(解析版)
- 2014光伏發(fā)電站功率控制能力檢測(cè)技術(shù)規(guī)程
- 第15課 有創(chuàng)意的書(說課稿)2022-2023學(xué)年美術(shù)四年級(jí)上冊(cè) 人教版
- 2023年上海交通大學(xué)827材料科學(xué)基礎(chǔ)試題
- 信訪面試資料
- 焊接工藝評(píng)定轉(zhuǎn)化表
- 《報(bào)告文學(xué)研究》(07562)自考考試復(fù)習(xí)題庫(kù)(含答案)
- 拼多多運(yùn)營(yíng)合作合同范本
- 小學(xué)英語-module10 unit2 eat vegetables every day教學(xué)設(shè)計(jì)學(xué)情分析教材分析課后反思
- Unit3Timeschange!Period1Startingout教案-高中英語外研版選擇性
- 全國(guó)大學(xué)英語四、六級(jí)考試缺考申請(qǐng)表
- 美國(guó)特朗普-課件
評(píng)論
0/150
提交評(píng)論