Sử dụng hàm khi định dạng thẻ theo FAT16.

Một phần của tài liệu Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458 (Trang 65 - 69)

Trạng thái sẵn sàng

6.6.5Sử dụng hàm khi định dạng thẻ theo FAT16.

Có 13 hàm mà người dùng có thể sử dụng để quản lý file và thao tác với thẻ. Bảng sau cung cấp 1 cách tổng quan về các hàm.

Tên hàm Ý nghĩa

FSInit Là hàm khởi tạo thẻ, nạp vào MBR (thông tin về phân vùng), nạp vào sector khởi và cập nhật những thông sô hợp lệ cho nó

FSfclose Hàm này cập nhật thông tin file, ngừng lại việc ghi tới entry và giải phóng RAM. Hàm này cũng cập nhật thông tin về mốc thời gian cho file.

FSfoef Hàm phát hiện nếu việc kết thúc của 1 file đã được hoàn thành FSfopen

Nếu file đã tồn tại, FSfopen có thể mở nó để ghi thêm vào từ điểm kêt thúc ơ lần mở trước, xóa nó và tạo một file mới cùng tên để ghi vào hoặc đơn giản chỉ là để đọc file. Nếu file không tồn tại, FSfopen có thể tạo ra nó.

FSfopenpgm Hàm mở một file trên SD card kết hợp với FSFILE structure (stream). Hàm sử dụng đối số đã định nghĩa trong ROM. Hàm cần thiết cho kiến trúc PIC18.

FSfread

Hàm sẽ đọc thông tin từ một file mở tới một bộ đệm. Số byte ghi có thể được định nghĩa bằng các tham số. Nếu FSfread được gọi liên tiếp trên cùng 1 file giống nhau thì quá trình đọc sẽ tiếp tục từ điểm dừng ở lần đọc trước. Hàm này trả lại giá trị của dữ liệu đã đọc.

FSfwrite

Hàm đọc thông tin từ bộ đệm tới 1 file mở. Thuật toán sử dụng là đọc một sector từ vùng dữ liệu trên thẻ tới SRAM. Việc ghi các block với khối dữ liệu lớn, sẽ mất thời gian hơn ta ghi những block giống nhau nhưng block nhỏ. FSremove Hàm tìm kiếm các file cơ sở với tên hợp lệ cho nó. Nếu tìm thấy thì đề mục

thư mục gốc được xóa mặt nạ và đề mục FAT được tẩy. FSremovepgm

Xóa file được xác định bằng tên cho trước. Nếu file đã được mở với FSfopen, nó phải xóa file đó trước và gọi lai FSremovepgm. Tên file phải được định nghĩa ở trong ROM. Chức năng này chỉ cần thiết với PIC18.

FSrewind Hàm thiết lập lại vị trí bắt đầu của file

SetClockVars Hàm được sử dụng trong mode đồng hồ đã đước sử dụng có thiết lập thời gian hiện tại. Ngày giờ sẽ được áp dụng cho file mà đã tạo hoặc sử chữa.

FSmkdir Thao tác với thư mục, hám sẽ tạo một thư muc con trong thư mục hiện thời. FSchdir Thao tác với thư mục, hàm sẽ thay đổi thư mục làm việc hiện thời thành 1 thư

mục được định danh bởi người dùng

FSrmdir Thao tác với thư mục, hàm sẽ xóa thư mục được chỉ định bởi người dùng FSgetcwd Thao tac với thư mục, hàm sẽ trả lại giá trị tên của thư mục đang làm việc hiện

tại tới người dùng

thuộc tính được đặt bởi người dùng. Với mỗi file được chỉ định, tên kích cỡ file, ngày giờ tạo, thuộc tính trong cấu trúc SearchRec sẽ được cập nhật với thông tin file chính xác.

FindFirstpgm Giống với hàm FindFirst, hàm chỉ cần thiết đối với PIC18

FindNext Hàm định vị trí tiếp theo trong thư mục hiện tại sau khi đã gọi các hàm FindFirst hoặc FindFirstpgm

FSformat

Hàm sẽ xóa toàn bộ bảng thư mục gốc và bảng phân bố dữ liệu. Khi người dùng gọi hàm này nó sẽ tạo ra một boot sector mới dựa trên những thông tin lấy từ MBR

FSfprintf Hàm sẽ ghi 1 chuỗi lên file. Ví dụ: Khởi tạo FAT16 và tạo một file.

Đinh dạng MMC với hàm FSinit sau đó gọi hàm FSfopen để tạo 1 file mới, tiếp đến FSfopenpgm được gọi, đây là hàm giống với FSfopen tuy nhiên nó cho phép những thông số ROM. Hàm này thực hiện hành động mở 1 file đã tồn tại trong chế độ đọc. Quá trình tiếp tục với việc đọc 10byte dữ liệu từ file, rồi lại ghi 15 byte tới 1 file mới rồi đóng cả 2 file. Kết thúc công việc là xóa file cũ, để thực hiện được việc xóa file thì phải đảm bảo file đã đươc đóng bằng hàm FSfclose. Đoạn code sau mô tả các công việc trên.

/////////////////////////////////////////////// #include <FSIO.h>

#define bfrsize 5 void main(void){

FSFILE *pOldFile, pNewFile; char myData[20];

char bfr [6];

int bytesRead, bytesWritten; char newFile[] = “newfile.txt”; char writeArg = “w”; (adsbygoogle = window.adsbygoogle || []).push({});

// khoi tao thu vien FAT16, chuan SPI va cac chan co lien quan

// tao 1 file moi

pNewFile = FSfopen (newFile, writeArg); // mo 1 file da ton tai va doc

pOldFile = FSfopenpgm (“myfile.txt”, “r”); if ( pOldFile == NULL )

return 1;

// doc 10 byte du lieu tu file.

bytesRead = FSfread((void*)myData,10,1,pOldFile); bytesRead = FSfread((void *)bfr,1,bfrSize, pOldFile); // ghi 15 byte len file

bytesWritten = FSfwrite((void *) myData, 10, 1,pNewFile); bytesWritten = FSfwrite((void *)bfr,1, bfrSize, pNewFile); // dong tat ca cac file

FSfclose( pOldFile ); FSfclose (pNewFile); //xoa file cu FSremovepgm (“myfile.txt”); } ///////////////////////////////////////////////////////// =====================================================

Một phần của tài liệu Thu thập dữ liệu nhiệt độ môi trường trên cở sở dùng vi điều khiển PIC18F458 (Trang 65 - 69)