嵌入式系統(tǒng)原理與應用-基于Cortex-A53微處理器 課件 第3章 文件IO編程_第1頁
嵌入式系統(tǒng)原理與應用-基于Cortex-A53微處理器 課件 第3章 文件IO編程_第2頁
嵌入式系統(tǒng)原理與應用-基于Cortex-A53微處理器 課件 第3章 文件IO編程_第3頁
嵌入式系統(tǒng)原理與應用-基于Cortex-A53微處理器 課件 第3章 文件IO編程_第4頁
嵌入式系統(tǒng)原理與應用-基于Cortex-A53微處理器 課件 第3章 文件IO編程_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

嵌入式系統(tǒng)原理與應用電子與電氣工程學院第三章文件I/O編程教師:程蔚正大氣象厚德載物MinnanUniversityofScienceandTechnology文件I/O編程CONTENTS01.系統(tǒng)調用---文件訪問02.標準I/O---文件訪問03.S5P6818文件操作實例正大氣象厚德載物MinnanUniversityofScienceandTechnology01PARTONE系統(tǒng)調用---文件訪問正大氣象厚德載物MinnanUniversityofScienceandTechnology任務實現:在廣告屏上顯示“中華人民共和國成立75周年”宣傳圖Linux中文件編程可以使用兩種方法:Linux系統(tǒng)調用:依賴于Linux系統(tǒng)C語言庫函數:與操作系統(tǒng)是獨立的,在任何操作系統(tǒng)下,使用C語言庫函數操作文件的方法都是相同的。文件編程在數字世界中,文件不僅是數據的載體,更是信息安全的前線,掌握文件操作就像是通往打開數字寶庫的鑰匙,而Linux下一切皆文件,文件操作尤其重要。

系統(tǒng)調用---創(chuàng)建文件(creat)filename:要創(chuàng)建的文件名(包含路徑,缺省為當前路徑)mode:創(chuàng)建模式,常見創(chuàng)建模式有S_IRUSR 可讀4S_IWUSR 可寫2S_IXUSR 可執(zhí)行1S_IRWXU 可讀可寫可執(zhí)行7intcreat(constchar*filename, mode_tmode)系統(tǒng)調用---access功能:判斷文件是否可以進行某種操作(讀,寫,存在等)pathname:文件名稱mode:要判斷的訪問權限??梢匀∫韵轮祷蛘呤撬麄兊慕M合。R_OK:文件可讀,W_OK:文件可寫,X_OK:文件可執(zhí)行,F_OK:文件存在。返回值:當測試成功時,函數返回0,否則如果一個條件不符時,返回-1。intaccess(constchar*pathname,intmode)系統(tǒng)調用---打開文件(open)pathname:要打開的文件名(包含路徑,缺省為當前路徑)flags:打開標志mode:被打開文件的權限返回值:成功為文件描述符,失敗為-1intopen(constchar*pathname,intflags)intopen(constchar*pathname,intflags,mode_tmode)系統(tǒng)調用---關閉文件(close)fd:文件描述符返回值:成功為0,失敗為-1intclose(intfd)操作3.1:open_count.c操作3.2:access_creat.c系統(tǒng)調用---read功能:從文件描述符fd所指定的文件中讀取length個字節(jié)到buf所指向的緩沖區(qū)中。fd:文件描述符buf:讀出數據的緩沖區(qū)length:讀出的字節(jié)數返回值:成功為實際讀取的字節(jié)數,到達文件結尾為0,失敗為-1。intread(intfd,constvoid*buf,size_tlength)系統(tǒng)調用---write功能:把length個字節(jié)從buf指向的緩沖區(qū)中寫到文件描述符fd所指向的文件中,返回值為實際寫入的字節(jié)數。fd:文件描述符buf:寫入數據的緩沖區(qū)length:寫入數據的字節(jié)數返回值:成功已寫的字節(jié)數,失敗為-1intwrite(intfd,constvoid*buf,size_tlength)操作3.3:my_copy.c系統(tǒng)調用---lseek功能:將文件讀寫指針相對whence移動offset個字節(jié)。fd:文件描述符offset:偏移量,負(向前移),正(向后移)whence:相對位置SEEK_SET:當前位置為文件的開頭 SEEK_CUR:當前位置為文件指針的位置 SEEK_END:當前位置為文件的結尾返回值:成功為文件的當前位移,失敗為-1intlseek(intfd,offset_toffset,intwhence)操作3.4:read_wav.c1、open、close、read、write、creat、lseek、access2、作業(yè)3、思政:在數字世界中,文件不僅是數據的載體,更是信息安全的前線,掌握文件操作就像是通往打開數字寶庫的鑰匙。

總結與作業(yè)THANKYOU!02PARTTWO標準I/O---文件訪問正大氣象厚德載物MinnanUniversityofScienceandTechnology標準I/O---打開文件(fopen)path:要打開的文件名(包含路徑,缺省為當前路徑)mode:文件打開的狀態(tài)返回值:成功為文件指針,失敗為NULLFILE*fopen(constchar*path,constchar*mode)標準I/O---關閉文件(fclose)stream:已打開的文件指針返回值:成功為0,失敗為EOFintfclose(FILE*stream)標準I/O---錯誤處理s:在標準錯誤流上輸出的信息返回值:無voidperror(constchar*s);errnum:錯誤碼返回值:錯誤碼對應的錯誤信息char*strerror(interrnum);標準I/O---文件定位stream:需要定位的文件指針offset:相對于基準值的偏移量whence:基準值,SEEK_SET:文件起始位置SEEK_CUR:文件當前讀寫位置SEEK_END:文件結束位置返回值:成功為0,失敗為EOF。intfseek(FILE*stream,longoffset,intwhence);標準I/O---文件定位stream:需要定位的文件指針返回值:成功為當前讀寫位置,失敗為EOF。longftell(FILE*stream);標準I/O(指定大小進行讀寫)---文件讀ptr:存放讀入記錄的緩沖區(qū)size:讀取的記錄大小nmemb:讀取的記錄數stream:要讀取的文件流返回值:成功為返回實際讀取到的nmemb數目

失敗為EOF。size_tfread(void*ptr,size_tsize,size_tnmemb,FILE*stream)標準I/O(指定大小進行讀寫)---文件寫ptr:存放寫入記錄的緩沖區(qū)size:寫入的記錄大小nmemb:寫入的記錄數stream:要寫入的文件流返回值:成功為返回實際寫入的nmemb數目

失敗為EOF。size_tfwrite(void*ptr,size_tsize,size_tnmemb,FILE*stream)操作3.5:fread_fwrite.c標準I/O(按字符(字節(jié))輸入/輸出)---文件讀寫stream:要輸入的文件流返回值:成功為下一個字節(jié)

失敗為EOF。intgetc(FILE*stream)intfgetc(FILE*stream)intgetchar(void)標準I/O(按字符(字節(jié))輸入/輸出)---文件讀寫c:需要寫的內容stream:要寫入的文件流返回值:成功為字符

失敗為EOF。intputc(intc,FILE*stream)intfputc(intc,FILE*stream)intputchar(intc)操作3.6:fgetc_fputc.c標準I/O(按行輸入/輸出)---文件讀寫s:要輸出的字符串stream:對應的文件流返回值:成功為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:輸入的字符串長度stream:對應的文件流返回值:成功為s,失敗為NULL。1、fopen、fclose、fread、fwrite、fseek、fgetc/fputc、fgets/fputs2、作業(yè)3、思政:

總結與作業(yè)THANKYOU!03PARTTHERE正大氣象厚德載物MinnanUniversityofScienceandTechnologyS5P6818文件操作實例S5P6818顯示圖片---原理在Linux中,一切皆文件,LCD顯示屏對應的設備文件為/dev/fb0。如果想讓LCD顯示屏顯示顏色,就是把顏色寫入到LCD顯示屏對應的設備文件中,查看LCD設備文件相關信息。[root@GEC6818/IOT]#ls-l/dev/fb0crw-rw----1rootroot29,0Jan11970/dev/fb0顏色基于RGB模型,即紅、綠、藍,其范圍是[0,255],每種顏色分量都占一個字節(jié)。LCD顯示屏顯示接收的顏色信息是aRGB,a為透明度,一般為0,總共4個字節(jié),正好是int類型數據。如果要顯示紅色,可以定義一個變量等于0x00ff0000,綠色為0x0000ff00,藍色為0x000000ff。10寸LCD顯示屏的大小為1024*600,7寸LCD顯示屏的大小為800*480,寫入順序是從左到右,從上到下。圖片的格式有很多,比如bmp、png、gif、jpg等。bmp格式圖片包含54字節(jié)的bmp格式的文件頭和像素值,其像素值以BGR形式排列,每一個像素占有3字節(jié)。S5P6818顯示圖片操作3.8:bmp.c編譯運行結果[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獲取坐標值操作3.9:ts.c編譯運行結果cw@dell:/mnt/hgfs/share/day1_io$

溫馨提示

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

評論

0/150

提交評論