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 IQ (generasi ke-2) 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#

  • IQ Brain (generasi ke-2) mendukung kartu SD hingga ukuran 32GB.

  • Kartu SD harus diformat sebagai FAT32.

    • Kartu SD dengan kapasitas lebih dari 32GB biasanya diformat sebagai exFAT, yang tidak kompatibel dengan IQ Brain (generasi ke-2).

  • 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 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 IQ (generasi ke-2) Brain.

  • appendfile — Menambahkan data dari buffer yang disediakan pengguna ke akhir file yang sudah ada di kartu SD IQ (generasi ke-2) Brain.

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

  • size — Mengembalikan ukuran file yang tersimpan di kartu SD IQ (generasi ke-2) Brain.

  • exists — Mengembalikan apakah file dengan nama yang ditentukan ada di kartu SD IQ (generasi ke-2) Brain.

File .bmp dan .png yang tersimpan di kartu SD dapat ditampilkan di layar IQ (generasi ke-2) 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 IQ Brain (generasi ke-2).

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 IQ Brain (generasi ke-2).

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 IQ Brain (generasi ke-2).

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 IQ (generasi ke-2) 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 IQ Brain (generasi ke-2).

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 IQ Brain (generasi ke-2).

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);
}