Kartu SD#

Perkenalan#

Kelas sdcard diturunkan dari kelas dasar brain dan menyediakan akses ke file yang disimpan pada kartu SD yang dapat dilepas yang dimasukkan ke dalam EXP Brain.

Dengan menggunakan kartu SD, robot Anda dapat memuat data seperti gambar, membaca dan menulis file, serta menyimpan informasi untuk digunakan di kemudian hari atau ditransfer ke komputer.

Access#

Brain.SDcard

Notes#

  • EXP Brain mendukung kartu SD hingga ukuran 32GB.

  • Kartu SD harus diformat sebagai FAT32.

    • Kartu SD dengan kapasitas lebih besar dari 32GB biasanya diformat sebagai exFAT, yang tidak kompatibel dengan EXP Brain.

  • Semua file harus ditempatkan di direktori utama kartu SD agar dapat diakses.

  • Kartu SD harus dimasukkan ke dalam Brain sebelum operasi file dapat dilakukan.

  • Nama file dan jalur bersifat peka huruf besar-kecil.

Example#

/* This constructor is required when using VS Code.
A Brain is generated automatically at the start of
VEXcode projects. */

// Create the EXP Brain
brain Brain = brain();

// Add more text and display file size
if (Brain.SDcard.exists("Text.txt")) {
  // Get the size of the file
  int fileSize = Brain.SDcard.size("Text.txt");

  // Make a buffer to hold the file data
  uint8_t buffer[fileSize];

  // Load the file from the SD card into the buffer
  Brain.SDcard.loadfile("Text.txt", buffer, sizeof(buffer));

  // Display the file contents on the screen
  Brain.Screen.print("%s", buffer);
}

Fungsi Keanggotaan#

Kelas sdcard mencakup fungsi anggota berikut:

  • loadfile — Memuat isi file dari kartu SD ke dalam buffer memori yang disediakan pengguna.

  • savefile — Menyimpan data dari buffer yang disediakan pengguna ke file di kartu SD EXP Brain.

  • appendfile — Menambahkan data dari buffer yang disediakan pengguna ke akhir file yang sudah ada di kartu SD EXP Brain.

  • isInserted — Mengembalikan apakah kartu SD dimasukkan ke dalam Brain.

  • size — Mengembalikan ukuran file yang tersimpan di kartu SD EXP Brain.

  • exists — Mengembalikan apakah file dengan nama yang ditentukan ada di kartu SD EXP Brain.

File .bmp dan .png yang tersimpan di kartu SD dapat ditampilkan di layar EXP Brain menggunakan drawImageFromFile, yang diakses melalui Brain.Screen.

Sebelum memanggil fungsi anggota sdcard apa pun, sebuah instance brain harus dibuat, seperti yang ditunjukkan di bawah ini:

// Create the Brain
brain Brain = brain();

loadfile#

Memuat isi file dari kartu SD ke dalam buffer memori yang disediakan pengguna.

Available Functions
int32_t loadfile(
  const char* name,
  uint8_t* buffer,
  int32_t len );

Parameters

Parameter

Jenis

Keterangan

name

const char*

Nama file yang akan dimuat dari kartu SD. Nama file harus menyertakan ekstensi file.

buffer

uint8_t*

Pointer ke buffer tempat data file akan disimpan.

len

int32_t

Jumlah maksimum byte yang akan dibaca dari file, biasanya diatur sama dengan ukuran buffer.

Return Values

Mengembalikan nilai int32_t yang mewakili jumlah byte yang berhasil dibaca dari file:

  • Nilai positif menunjukkan berapa banyak byte yang dimuat ke dalam buffer.

  • 0 menunjukkan bahwa tidak ada data yang dibaca.

Notes
  • Jika ukuran file lebih besar dari len, hanya len byte pertama yang dibaca.

  • Buffer harus cukup besar untuk menampung data yang diminta.

  • Fungsi ini membaca byte mentah dan tidak menambahkan terminator null.

Examples
// Check for SD card and show a file's text
if (Brain.SDcard.isInserted()) {
  // Create a message to save to the SD card
  uint8_t message[] = "Hello from VEX!";

  // Save the message into "Text.txt"
  Brain.SDcard.savefile("Text.txt", message, sizeof(message));

  // Get the size of the file
  int fileSize = Brain.SDcard.size("Text.txt");

  // Make a buffer to hold the file data
  uint8_t buffer[fileSize];

  // Load the file from the SD card into the buffer
  Brain.SDcard.loadfile("Text.txt", buffer, sizeof(buffer));

  // Display the file contents on the screen
  Brain.Screen.print("%s", buffer);
} else {
  Brain.Screen.print("Insert SD card");
}

savefile#

Menyimpan data dari buffer yang disediakan pengguna ke file di kartu SD EXP Brain.

Available Functions
int32_t savefile(
  const char* name,
  uint8_t* buffer,
  int32_t len );

Parameters

Parameter

Jenis

Keterangan

name

const char*

Nama file yang akan disimpan sebagai string. Nama file harus menyertakan ekstensi file.

buffer

uint8_t*

Pointer ke buffer memori yang berisi data yang akan ditulis ke file.

len

int32_t

Jumlah byte yang akan ditulis dari buffer ke file.

Return Values

Mengembalikan nilai int32_t yang mewakili jumlah byte yang berhasil ditulis ke file:

  • Nilai positif menunjukkan berapa banyak byte yang berhasil dihemat.

  • 0 menunjukkan bahwa tidak ada data yang ditulis.

Notes
  • Jika ukuran file lebih besar dari len, hanya len byte pertama yang dibaca.

  • Jika file dengan nama yang sama sudah ada, file tersebut akan ditimpa.

  • Fungsi ini tidak mengalokasikan memori; buffer harus dibuat dan dikelola oleh pengguna.

  • Fungsi tersebut menulis byte mentah dan tidak menambahkan terminator null.

Examples
// Check for SD card and show a file's text
if (Brain.SDcard.isInserted()) {
  // Create a message to save to the SD card
  uint8_t message[] = "Hello from VEX!";

  // Save the message into "Text.txt"
  Brain.SDcard.savefile("Text.txt", message, sizeof(message));

  // Get the size of the file
  int fileSize = Brain.SDcard.size("Text.txt");

  // Make a buffer to hold the file data
  uint8_t buffer[fileSize];

  // Load the file from the SD card into the buffer
  Brain.SDcard.loadfile("Text.txt", buffer, sizeof(buffer));

  // Display the file contents on the screen
  Brain.Screen.print("%s", buffer);
} else {
  Brain.Screen.print("Insert SD card");
}

appendfile#

Menambahkan data dari buffer yang disediakan pengguna ke akhir file yang sudah ada di kartu SD EXP Brain.

Available Functions
int32_t appendfile(
  const char* name,
  uint8_t* buffer,
  int32_t len );

Parameters

Parameter

Jenis

Keterangan

name

const char*

Nama file tempat data akan ditambahkan ke kartu SD. Nama file harus menyertakan ekstensi file.

buffer

uint8_t*

Pointer ke buffer memori yang berisi data yang akan ditambahkan ke file.

len

int32_t

Jumlah byte yang akan ditambahkan dari buffer ke file.

Return Values

Mengembalikan nilai int32_t yang mewakili jumlah byte yang berhasil ditambahkan ke file:

  • Nilai positif menunjukkan berapa banyak byte yang ditambahkan.

  • 0 menunjukkan bahwa tidak ada data yang ditambahkan.

Notes
  • Jika ukuran file lebih besar dari len, hanya len byte pertama yang dibaca.

  • File tersebut harus sudah ada di kartu SD; fungsi ini tidak membuat file baru.

  • Fungsi ini tidak mengalokasikan memori; buffer harus dibuat dan dikelola oleh pengguna.

  • Fungsi ini menambahkan byte mentah dan tidak menambahkan terminator null.

Examples
// Create a message to save to a new file
uint8_t message[] = "Hello";

// Save only the characters, not the null terminator
Brain.SDcard.savefile("Message.txt", message, sizeof(message) - 1);

// Load the file
int fileSize = Brain.SDcard.size("Message.txt");
uint8_t buffer[fileSize + 1];
Brain.SDcard.loadfile("Message.txt", buffer, fileSize);

// Add null terminator so it can be printed safely
buffer[fileSize] = 0;
Brain.Screen.print("%s\n", buffer);

// Create more text to append to the same file
uint8_t moreText[] = " World!";

// Append only the characters, not the null terminator
Brain.SDcard.appendfile("Message.txt", moreText, sizeof(moreText) - 1);

// Load the updated file
fileSize = Brain.SDcard.size("Message.txt");
uint8_t buffer2[fileSize + 1];
Brain.SDcard.loadfile("Message.txt", buffer2, fileSize);

// Add null terminator
buffer2[fileSize] = 0;
Brain.Screen.newLine();
Brain.Screen.print("%s", buffer2);

isInserted#

Mengembalikan nilai yang menunjukkan apakah kartu SD saat ini terpasang di EXP Brain.

Available Functions
bool isInserted();

Parameters

Fungsi ini tidak menerima parameter apa pun.

Return Values

Mengembalikan nilai Boolean yang menunjukkan apakah kartu SD terpasang atau tidak:

  • true — Kartu SD dimasukkan ke dalam EXP Brain.

  • false — Tidak ada kartu SD yang terpasang.

Notes
  • Fungsi ini hanya memeriksa keberadaan kartu SD; fungsi ini tidak memverifikasi apakah kartu tersebut sudah diformat atau dapat dibaca.

Examples
// Check for SD card and show a file's text
if (Brain.SDcard.isInserted()) {
  // Create a message to save to the SD card
  uint8_t message[] = "Hello from VEX!";

  // Save the message into "Text.txt"
  Brain.SDcard.savefile("Text.txt", message, sizeof(message));

  // Get the size of the file
  int fileSize = Brain.SDcard.size("Text.txt");

  // Make a buffer to hold the file data
  uint8_t buffer[fileSize];

  // Load the file from the SD card into the buffer
  Brain.SDcard.loadfile("Text.txt", buffer, sizeof(buffer));

  // Display the file contents on the screen
  Brain.Screen.print("%s", buffer);
} else {
  Brain.Screen.print("Insert SD card");
  }

size#

Mengembalikan ukuran file yang tersimpan di kartu SD EXP Brain.

Available Functions
int32_t size(
  const char* name );

Parameters

Parameter

Jenis

Keterangan

name

const char*

Nama file di kartu SD. Nama file harus menyertakan ekstensi file.

Return Values

Mengembalikan nilai int32_t yang mewakili ukuran file dalam byte:

  • Nilai positif menunjukkan ukuran file dalam byte.

  • 0 menunjukkan file kosong atau file tidak dapat ditemukan.

Notes
  • Ukuran yang dikembalikan dapat digunakan untuk mengalokasikan buffer sebelum memanggil loadfile.

Examples
// Check for SD card and show a file's text
if (Brain.SDcard.isInserted()) {
  // Create a message to save to the SD card
  uint8_t message[] = "Hello from VEX!";

  // Save the message into "Text.txt"
  Brain.SDcard.savefile("Text.txt", message, sizeof(message));

  // Get the size of the file
  int fileSize = Brain.SDcard.size("Text.txt");

  // Make a buffer to hold the file data
  uint8_t buffer[fileSize];

  // Load the file from the SD card into the buffer
  Brain.SDcard.loadfile("Text.txt", buffer, sizeof(buffer));

  // Display the file contents on the screen
  Brain.Screen.print("%s", buffer);
} else {
  Brain.Screen.print("Insert SD card");
}

exists#

Mengembalikan nilai boolean yang menunjukkan apakah file dengan nama yang ditentukan ada di kartu SD EXP Brain.

Available Functions
bool exists(
  const char* name );

Parameters

Parameter

Jenis

Keterangan

name

const char*

Nama file yang akan diperiksa di kartu SD. Nama file harus menyertakan ekstensi file.

Return Values

Mengembalikan nilai Boolean yang menunjukkan apakah file tersebut ada atau tidak:

  • true — File dengan nama yang ditentukan ada di kartu SD.

  • false — Tidak ada berkas dengan nama yang ditentukan.

Examples
// Add more text and display file size
if (Brain.SDcard.exists("Text.txt")) {
  // Get the size of the file
  int fileSize = Brain.SDcard.size("Text.txt");

  // Make a buffer to hold the file data
  uint8_t buffer[fileSize];

  // Load the file from the SD card into the buffer
  Brain.SDcard.loadfile("Text.txt", buffer, sizeof(buffer));

  // Display the file contents on the screen
  Brain.Screen.print("%s", buffer);
}