//Logo Image
作者:巫佳哲(2008-12-06);推薦:徐業良(2008-12-06)

KS_2410MMC讀寫功能及抓取系統時間

KS_2410支援MMC記憶卡讀寫功能與RTC(Real Time Clock),圖1KS_2410上之MMC卡座。本文介紹如何使用C語言撰寫應用程式來讀取與寫入MMC記憶卡功能及抓取KS_2410系統時間之應用程式。

1. KS_2410上之MMC卡座

在執行以下範例前,請先將MMC利用mount指令掛載至『/dds/mmc』資料夾(掛載MMC卡方式請參考【KS_2410基本硬體裝置設定與使用】第6節)。再檢查KS_2410系統時間是否正確(KS_2410系統時間檢查方式請參考【KS_2410基本硬體裝置設定與使用】第8節)。最後在MMC中建立『example』資料夾及在其資料夾中建立檔名為「ex_01.txt」的空白文字檔案。表1為相關檔案與資料夾之路徑。

1. 本文所使用到的檔案路徑表

檔案名稱

檔案路徑

MMC

/dds/mmc

example』資料夾

/dds/mmc/example

ex_01.txt」檔案

/dds/mmc/example/ex_01.txt

範例一:將KS_2410系統時間記錄在MMC記憶卡中

範例一的目的是將系統目前的時間(例:2008/12/1 13:20)紀錄在MMC卡中的「ex_01.txt」檔案。首先執行「mmc_example_01」範例程式,執行時會在終端機上顯示如圖2的畫面,代表程式執行完畢。接下來開啟MMC中的「ex_01.txt」檔案,會看見其檔案內容如圖3所示,為執行程式時的時間。若再次執行「mmc_example_01」範例程式時,「ex_01.txt」的檔案內容會繼續往下紀錄程式執行的時間,並不會清除原先的舊資料。

2. 範例一“mmc_example_01程式執行畫面

3. ex_01.txt」檔案內容

4為此範例程式「mmc_example_01」之程式碼。第3~5行為引用程式庫;第8~16行為變數型態宣告,包含MMC掛載路徑存放(mmc_path)、檔案所在資料夾位置(txt_path)、檔案名稱(txtname)及時間變數(tp, prt)等,其中時間變數的格式請參考<time.h>內容;第21~28行為取得系統時間並且分別存入時間變數之中;第33~35為開啟「ex_01.txt」檔案並寫入“buf”字串,最後關閉檔案。

4. 範例一“mmc_example_01程式碼

重要副函式說明說明如下:

Ÿ  21tp=time(NULL)呼叫<time.h>中的time副函式,用來取得目前系統時間並存入變數結構為“time_t”“tp”變數(在第15行宣告)。

Ÿ  22ptr=localtime(&tp)呼叫<time.h>中的localtime副函式,用來將tptime_t結構中的時間資訊轉換成真實世界所使用的時間日期表示,並存入變數結構為“struct tm”“ptr”變數(在第16行宣告)。

Ÿ  33mmc_fp=fopen(path_buff, "a+")呼叫<stdio.h>中的fopen副函式,使用"a+"匯流型態來開啟檔案路徑為“path_buf”的檔案並將其檔案指標存入“fp_mmc”(在第14行宣告),各匯流型態說明如表1

Ÿ  34fputs(buf, fp_mmc)呼叫<stdio.h>中的fputs副函式,用來將字串(buf)寫入檔案指標為“fp_mmc”所代表的檔案。

Ÿ  35fclose(fp_mmc)呼叫<stdio.h>中的fclose副函式,用來關閉檔案指標為“fp_mmc”所代表的檔案。

2. “fopen相關型態說明

型態

說明

r

開啟唯讀檔,檔案游標由檔頭開始,且檔案必須存在。

r+

開啟可讀寫檔,檔案游標由檔頭開始,且檔案必須存在。

w

開啟唯寫檔,會覆蓋其檔案內容,若檔案不存在時系統會自動建立。

w+

開啟可讀寫檔,會覆蓋其檔案內容,若檔案不存在時系統會自動建立。

a

開啟唯寫檔,檔案游標由檔尾開始,若檔案不存在時系統會自動建立。

a+

開啟可讀寫檔,檔案游標由檔尾開始,若檔案不存在時系統會自動建立。

範例二:讀取MMC

範例二的目的是讀取範例一所建立的「ex_01.txt」檔案內容並顯示於終端機畫面上。首先執行「mmc_example_02」範例程式,執行結果如圖5所示,反黑處為讀取到的「ex_01.txt」檔案內容。

6為此範例程式“mmc_example_02”之程式碼。第3~5行為引用程式庫;第8~12行為變數宣告,包含MMC掛載路徑存放(mmc_path)、檔案所在資料夾位置(txt_path)、檔案名稱(txtname)等;第17~24為開啟「ex_01.txt」檔案,再讀取檔案資料及顯示於終端機上並檢查檔案游標是否已移動到檔尾,當檔案游標移動到檔尾時,則關閉檔案。

重要副函式說明如下:

Ÿ  19feof(fp_mmc)呼叫<stdio.h>中的feof副函式,用來偵測“fp_mmc”檔案的檔案游標是否已移動到檔尾,若已移動到檔尾則回傳非零值,其他狀況回傳0

Ÿ  21fgetc(fp_mmc)呼叫<stdio.h>中的fgetc副函式,用來讀取“fp_mmc”檔案中的字元並回傳讀取到的字元。

5. 範例二“mmc_example_02程式執行畫面

4. 範例二“mmc_example_02程式碼