Команды для работы с SD-картой.


Введение

12

14

16

SD_File_System Library’ является библиотекой макросов для работы в ‘Library Manager’. Эта библиотека была написана swright.  Пожалуйста, можете связаться с ним на форуме Proton PICBASIC: www.picbasic.org/forum. Эта библиотека предлагается по принципу КАК ЕСТЬ без гарантий относительно ее эффективности, работы или надежности. Вы можете использовать её на свой страх и риск.

Перечень характеристик

    Secure Digital (SD)или Multimedia Memory Card (MMC) card access
    Макросы для доступа к Secure Digital (SD) или MultiMedia Card (MMC) – SD_Init, SD_Sector, SD_Read и SD_Write. FAT16 File System
    Макросы для записи файлов на эти карты в формате FAT16 - такие файлы можно читать прямо на ПК, используя для этого кард-ридер. Команды включают в себя SD_Init_FS, SD_Check_For_File, SD_New_File, SD_Append_File, SD_Write_Byte_To_File, SD_Write_String_To_File, SD_Save_File и SD_Close_File. Также команды для чтения файлов, в том числе SD_Open_File и SD_Read_Byte_From_File. В том числе и команды управления дисками, SD_Delete_File, SD_Free_Space, SD_Disk_Size, SD_Dir и SD_Psuedo_Format.

Благодарности

Thanks go to Maverick for info on SD/MMC cards, to johngb for his Macro Generator and his excellent Library Manager and to www. for example code for SPI access of MMC cards. The SPI code for accessing SD/MMC cards is based on this last source and they have given kind permission to post a version in PDS, provided that their website is referenced.

НЕ нашли? Не то? Что вы ищете?

Вопросы установки

Вначале необходимо установить Менеджер библиотек! Затем скопировать папку «SD_File_System» в папку “Library”, которая находится в папке C:\Users\User\PDS. Затем в начальной области текста программы обслуживания SD-карточки необходимо записать строку-подключения файла подпрограммы, которая в своем названии повторяет основную программу, затем знак подчеркивания и слово lyb. А в завершении стандартное расширение для файлов бейсик-программы в Протоне, т. е. *.pbp. Например, мы имеем программу называемую Proba. pbp. Тогда в тексте программы у нас должна появится строчка:

Include "Proba_Lib. pbp"

После запуска компилятора менеджером библиотек в папке, в которой находится программа будет создан подключаемый файл Include Proba_Lib. pbp.

Команды обслуживания SD-карточек

SD_Init  команда программной инициализации SD-карточки

SD_Init_MSSP  команда аппаратной инициализации SD-карточки

SD_Sector  команда установки сектора(для работы с этим сект.)
SD_Read  команда чтения байта
SD_Write  команда записи байта

SD_Init_FS  команда программной инициализации SD-карточки отформатированной в FAT16

SD_Init_FS_MSSP  команда аппаратной инициализации SD-карточки отформатированной в FAT16

SD_Check_For_File  команда проверки наличия на карточке указанного файла
SD_New_File  создание нового файла

SD_Write_Byte_To_File  команда записи одного байта в файл
SD_Write_String_To_File  команда записи строк. переменной в файл
SD_Close_File  команда закрытия файла

SD_Save_File  команда сохранения открытого файла на карту

SD_Append_File  команда открытия файла для записи в конец файла

SD_Open_File  команда открытия файла для чтения

SD_Read_Byte_From_File  команда чтения байта из файла

SD_Delete_File  удаление указанного файла

SD_Free_Space  определение свободного места на диске

SD_Disk_Size  определение размера диска

SD_Dir  поиск файлов в корневом каталоге

SD_Psuedo_Format  псевдо форматирование



SD_Init

12

14

16

Синтаксис

[Variable =] SD_INIT


Описание

Эта команда необходима для инициализации карточки SD или MMC перед использованием команд  SD_Sector, SD_Read и SD_Write. Она похожа на эквивалент встроенной в Протон команды для Compact Flash (CF) карты - CF_Init, она может возвращать переменную, которая будет указывать на успешную инициализацию. Этот макрос вызывается только один раз после включения питания.

Операторы

    Переменная может иметь размер в бит, байт, word, или dword. Эта переменная будет содержать значение которое указывает на то что был ответ от карточки – 0,  либо ответа не было – 1.

Пример

' Записать 20 секторов в SD или MMC карточку затем считать и вывести на экран


Device 18F452

XTAL = 4

'-----------------------------------------------------------

ALL_DIGITAL = TRUE

'-----------------------------------------------------------

HSERIAL_BAUD = 4800  'Setup RS232 port

HSERIAL_RCSTA = %10010000

HSERIAL_TXSTA = %00100000

'-----------------------------------------------------------

Dim Response As Byte

Dim SD_IO As Byte

'-----------------------------------------------------------

Symbol SD_CS = PORTC.2  'SPI CS to SD CS (SD pin 1)

Symbol SD_DI = PORTC.5  'SPI DO to SD DI (SD Pin 2)

Symbol SD_CLK = PORTC.3  'SPI CLK to SD CLK (SD Pin 5)

Symbol SD_DO = PORTC.4  'SPI DI to SD DO (SD Pin 7)

'-----------------------------------------------------------

Include "My_Code_Lib. pbp"  'Создание и подключение файла библиотеки 

'-----------------------------------------------------------

GoTo Over_Sub  'Перескок через подпрограмму

'-----------------------------------------------------------

Over_Sub:

  DelayMS 200

'-----------------------------------------------------------

Main_Prog:

  HSerOut ["INSERT SD OR MMC",13]

  Repeat

  Response = SD_Init

  Until Response = 0

'-----------------------------------------------------------

Write_SD:

  SD_IO = 0 

  Sector_Number = 0  'Начальный сектор 0Repeat  'Цикл для записи в сектора

  SD_Sector Sector_Number,0  'Установка для записи в SD/MMC

  Buffer_Size = 0

  HSerOut ["WRITING SECTOR ", DEC2 Sector_Number,13]

  Repeat  'Цикл перебора байтов сектора

  SD_Write SD_IO  'Запишем один байт в SD/MMC

  Inc Buffer_Size  'Move up one byte

  Inc SD_IO  'Increment the data to write

  Until Buffer_Size = 512  'Until all bytes in Sector written

  Inc Sector_Number  'Move up to the next Sector

  Until Sector_Number = 20  'Until all Sectors are written

'-----------------------------------------------------------

Read_SD:

  Sector_Number = 0  'Start at Sector 0

  Repeat  'Loop for Sectors

  SD_Sector Sector_Number,1  'Set up SD/MMC for reading

  Buffer_Size = 1

  HSerOut ["READING SECTOR ",DEC2 Sector_Number,13]

  Repeat  'Loop for bytes in Sector

  SD_IO = SD_Read  'Read a byte from the SD/MMC

  HSerOut [HEX2 SD_IO," "]  'Display it in Hexadecimal

  If Buffer_Size // 32 = 0 Then HSerOut [13]  'Check if row finished

  Inc Buffer_Size  'Move up one byte

  Until Buffer_Size > 512  'Until all bytes are read

  HSerOut [Rep "-"\95,13]  'Draw a line under each Sector

  Inc Sector_Number  'Move up to the next Sector

  Until Sector_Number = 20  'Until all Sectors are read

  Stop


Замечание

Команда SD_Init устанавливает указанные ранее выводы МК в состояние входа либо выхода для связи с SD или MMC карточками по SPI интерфейсу. Она должна появится в программе прежде чем появятся команды SD_Sector, SD_Read или SD_Write. Эта команда в программе вызывается только один раз. Если используется файловая система FAT16, то надо использовать аналогичную команду SD_Init_FS.

Эта команда вводит задержку и ожидает успешной инициализации. Если инициализации не происходит то возвращается значение 1. Если инициализация происходит то возвращается значение 0. Возвращение «0» указывает на успешную инициализацию.


SD_Init_MSSP

12

14

16

Синтаксис

[Variable =] SD_INIT_MSSP [Frequency]


Описание

Эта команда необходима для инициализации карточки SD или MMC перед использованием команд  SD_Sector, SD_Read и SD_Write. Она похожа на эквивалент встроенной в Протон команды для Compact Flash (CF) карты - CF_Init, она может возвращать переменную, которая будет указывать на успешную инициализацию.

Этот макрос вызывается только один раз после включения питания. Команда SD_Init_MSSP используется в тех случаях когда для связи используется аппаратный  SPI (Master Synchronous Serial Port - MSSP) интерфейс. Этот макрос аналогичен  SD_Init  и также как он используется только один раз в программе.

Операторы

    Frequency может быть переменной типа байт. Она устанавливает частоту синхросигнала в SPI интерфейсе при аппаратной шине. Возможны три варианта установки частоты  SD_SPI_FOSC_04, что значит Fosc/4 (быстрая), SD_SPI_FOSC_16, Fosc/16 и SD_SPI_FOSC_64 что соответствует частоте Fosc/64 (медленная). Эта переменная является обязательной – значение по умолчанию есть SD_SPI_FOSC_04. В общем частота шины SPI не должна превышать 20MHz. Выбор по умолчанию - SD_SPI_FOSC_04 в большинстве случаев является оптимальным. Variable может иметь размер в бит, байт, word, или dword. Эта переменная будет содержать значение которое указывает на то что был ответ от карточки – 0,  либо ответа не было – 1.


Замечание

Команда SD_Init устанавливает выводы МК в состояние входа либо выхода для связи с SD или MMC карточками по SPI интерфейсу. Она должна появится в программе прежде чем появятся команды SD_Sector, SD_Read или SD_Write. Эта команда в программе вызывается только один раз. Если используется файловая система FAT16, то надо использоват аналогичную команду SD_Init_FS.

Эта команда вводит задержку и ожидает успешной инициализации. Если инициализации не происходит то возвращается значение 1. Если инициализация происходит то возвращается значение 0. Возвращение «0» указывает на успещную инсталяцию.



SD_Sector

12

14

16

Синтаксис
SD_SECTOR Sector Number, Operation


Описание

По этой команде производится настройка сектора в Secure Digital (SD) или Multimedia Card (MMC), для последующей записи туда, либо считывания оттуда командами SD_Read и SD_Write. Карточка должна быть сначала инициализация командой  SD_Init.

Операторы

    Sector Number это интересующий Вас сектор карточки SD/MMC. Он может быть константой либо переменной. Тем не менее надо помнить, что существуют сотни тысяч секторов на картах SD/MMC. Поэтому эта переменная должна быть типа dword. Operation эта переменная указывает карте SD/MMC – ‘0’ для записи, ‘1’ для чтения.


SD_Read

12

14

16

Синтаксис
Variable = SD_READ


Описание

Эта команда считывает один байт из памяти SD или MMC карты. Карточка должна быть сначала инициализирована командой SD_Init и указан сектор командой SD_Sector.

Операторы

    Variable - переменная определенная пользователем, типа байт, в которую будут сохраняться  данные, считанные с SD / MMC-карты.

SD_Write

12

14

16

Синтаксис

SD_WRITE Byte


Описание

Команда записывает один байт в Secure Digital (SD) или MultiMedia Card (MMC). Карточка должна быть сначала инициализирована командой SD_Init и указан сектор в который должна быть произведена запись SD_Sector.

Операторы

    Byte переменная типа байт, которая должна быть записана в SD/MMC.


SD_Init_FS

12

14

16

Синтаксис

[Variable =] SD_INIT_FS


Описание

Эта команда используется для инициализации памяти Secure Digital (SD) или MultiMedia Card (MMC) и дпя указания на свойства файловой системы, которые будут влиять при чтени и записи файлов и выполнения задач по управлению дисками / файлами в формате FAT16 с SD_Check_For_File, SD_New_File, SD_Write_Byte_To_File, SD_Write_String_To_File, SD_Close_File, SD_Append_File, SD_Open_File, SD_Read_Byte_From_File, SD_Delete_File, SD_Free_Space, SD_Dir и SD_Psuedo_Format. Она может вернуться в качестве переменной, указывающей на успешную инициализацию. Только вызывать этот макрос надо один раз после включения питания. Файлы, записанные с помощью этих макросов можно прочитать непосредственно в ПК с помощью устройства чтения карт.

Операторы

    Variable переменная может быть типом bit, byte, word, или dword. В этой переменной будут находтся значение указывающее на то, что инициализация прошла успешно – 0, либо на то, что прождав определенное время ничего не произошло – 1. Возвращаемая переменная не является обязательным атрибутом.


SD_Init_FS_MSSP

12

14

16

Синтаксис

[Variable =] SD_INIT_FS_MSSP [Frequency]


Описание

Эта команда используется для инициализации памяти Secure Digital (SD) или MultiMedia Card (MMC) и дпя указания на свойства файловой системы, которые будут влиять при чтени и записи файлов и выполнения задач по управлению дисками / файлами в формате FAT16 с SD_Check_For_File, SD_New_File, SD_Write_Byte_To_File, SD_Write_String_To_File, SD_Close_File, SD_Append_File, SD_Open_File, SD_Read_Byte_From_File, SD_Delete_File, SD_Free_Space, SD_Dir и SD_Psuedo_Format. Она может вернуться в качестве переменной, указывающей на успешную инициализацию. Только вызывать этот макрос надо один раз после включения питания. Файлы, записанные с помощью этих макросов можно прочитать непосредственно в ПК с помощью устройства чтения карт. Команда SD_Init_FS_MSSP используется только тогда, когда Вы задействуете аппаратный SPI. Для программного служит команда SD_Init_FS instead.

Операторы

    Frequency может быть переменной типа байт. Она устанавливает частоту синхросигнала в SPI интерфейсе при аппаратной шине. Возможны три варианта установки частоты  SD_SPI_FOSC_04, что значит Fosc/4 (быстрая), SD_SPI_FOSC_16, Fosc/16 и SD_SPI_FOSC_64 что соответствует частоте Fosc/64 (медленная). Эта переменная является обязательной – значение по умолчанию есть SD_SPI_FOSC_04. В общем частота шины SPI не должна превышать 20MHz. Выбор по умолчанию - SD_SPI_FOSC_04 в большинстве случаев является оптимальным. Variable может иметь размер в бит, байт, word, или dword. Эта переменная будет содержать значение которое указывает на то что был ответ от карточки – 0,  либо ответа не было – 1.


SD_Check_For_File

12

14

16

Синтаксис

Variable = SD_CHECK_FOR_FILE


Описание

Эта команда проверяет, существует  ли указанный файл на Secure Digital (SD) или Multimedia Card (MMC) в котором используется файловая система FAT16. Карточка должна быть сначала инициализирована командой с SD_Init_FS.

Операторы

    SD_File_Name это оператор должны быть определен  до применения команды - SD_Check_For_File. Это будет имя файла. Имя файла может быть строкой в 8 символов(максимальная длина), и только в верхнем регистре. Длинные имена файлов не поддерживаются. Смотрите пример ниже. SD_File_Ext оператор  SD_Check_For_File должен быть установлен еще до его вызова. Например - “TXT”. Максимальная длина этого оператора – 3 и только в верхнем регистре. Смотри пример ниже.
    Variable - переменная определённая пользователем, типа байт. Если файл уже существует, переменная вернется, как '0', если файл не существует, он вернется, как '1'..

SD_New_File

12

14

16

Синтаксис

[Variable =] SD_NEW_FILE


Описание
Эта команда создает новый файл на Secure Digital (SD) или MultiMedia Card (MMC) для в которых используется файловая система FAT16. Карточка должна быть сначала инициализирован командой SD_Init_FS. Когда файл был написан, он должен быть закрыт командой SD_Close_File или SD_Save_File. Для установки файла создать и изменять дату / время, смотрите также Установка файла Дата & Время Info.

Операторы

    SD_File_Name это оператор должны быть определен  до применения команды - SD_Check_For_File. Это будет имя файла. Имя файла может быть строкой в 8 символов(максимальная длина), и только в верхнем регистре. Длинные имена файлов не поддерживаются. Смотрите пример ниже. SD_File_Ext оператор  SD_Check_For_File должен быть установлен еще до его вызова. Например - “TXT”. Максимальная длина этого оператора – 3 и только в верхнем регистре. Смотри пример ниже.
    Variable - переменная определённая пользователем, типа байт. Если файл уже существует, переменная вернется, как '0', если файл не существует, он вернется, как '1'.

SD_Write_Byte_To_File

12

14

16

Синтаксис

[Variable =] SD_WRITE_BYTE_TO_FILE Byte


Описание

Команда записывает один байт в файл на Secure Digital (SD) или Multimedia Card (MMC), которые отформатированы в файловой системе FAT16. Карточка должна быть сначала инициализирована командой с SD_Init_FS и файл также должен быть открыт командой  SD_New_File или SD_Append_File. После завершения записи в файл, файл должен быть закрыт комадой SD_Close_File или SD_Save_File.

Смотрите также команду SD_Write_String_To_File если хотите записать более одного байта за раз.

Операторы

    Byte этот оператор должен быть переменной байтового типа
    Variable этот оператор может быть переменной типа байт. Возвращаемое значение должно указывать, был ли записан байт – 0 или нет - 1, что диск заполнен. В последнем случае, файл должен быть немедленно закрыт. Возвращаемая переменная не является обязательной, но её следует использовать, если вы не уверены, что диск будет иметь достаточно места для записываемого файла.

SD_Write_String_To_File

12

14

16

Синтаксис
[Variable =] SD_WRITE_STRING_TO_FILE


Описание

Команда записывает строковую переменную в файл на (SD) или (MMC) с использованием файловой системы FAT16. Карточка должна быть сначала инициализирован командой SD_Init_FS и файл должен быть открыт с SD_New_File или SD_Append_File. После завершения записи, файл должен быть закрыт командой SD_Close_File или SD_Save_File.

Смотри также SD_Write_Byte_To_File если единовременно записывается один байт.

Операторы

    SD_IO_String - этот оператор должны быть определен еще  до вызова команды SD_Write_String_to_File. Строчная переменная должна быть не длиннее 200 символов. Там нет необходимости размерности строку - это размеры в файле библиотеки.

    Variable может быть переменной типа байт, что проведет возвращаемого значения, чтобы указать, была ли записана строка – 0, что указывает на успех дествия,  и 1 что диск уже заполнен и записи не было. Когда диск заполнен, файл должен быть немедленно закрыт. Возвращаемая переменная является не обязательным параметром, но её следует использовать в тех случаях, когда вы не уверены, что диск будет иметь достаточно места для записываемого  файла.

SD_Close_File

12

14

16

Синтаксис
SD_CLOSE_FILE


Описание

Закрывает файл на SD или MMC открытый командами SD_New_File или SD_Append_File. Для установки файла изменена дата / время, смотрите также Установка файла Дата & Время информация....

В качестве альтернативы, см. команду SD_Save_File, где важно, чтобы обновить файл, чтобы сделать его безопасным, если SD / MMC карта была удалена, но там, где будет добавлена дополнительная информация в файл.

SD_Save_File

12

14

16

Синтаксис

SD_SAVE_FILE


Описание


Эта команда сохраняет открытый файл на SD или MMC открытого командами SD_New_File или SD_Append_File. После того, как эта команда завершила, SD или MMC карты можно безопасно удалить без повреждение файла. В отличие от команды SD_Close_File, однако, если карта остается внутри, тем больше данных можно записать в файл без повторного открытия ее с SD_Append_File.

Команда SD_Save_File предназначен для использования там, где происходит запись в файл в течение продолжительного периода времени, где существует опасность, что карта будет случайно удалена в течение этого времени. После блок данных записывается, SD_Save_File следует использовать. Это будет писать все недостающие данные в буфере на самой карте, а также обновлением записей в FAT и корневой каталог карты, что делает файл доступным, если карта была удалена. Однако следует отметить, что, как только более данные записываются на карту, существует возможность того, что этот файл будет поврежден, если карта будет удален, если дальнейшее SD_Save_File не выполняется. Предполагается, что данные записываются в блоки, с SD_Save_File называют сразу после каждого блока, как это возможно (смотрите пример).


SD_Append_File

12

14

16

Синтаксис

[Variable =] SD_APPEND_FILE


Описание

Эта команда открывает существующий файл на SD или MMC картах для добавления в конец файла, используя файловую систему FAT16. Карточка должна быть сначала инициализирована командой SD_Init_FS. Когда дополнительные байты будут записаны в файл он должен быть закрыт командами SD_Close_File или SD_Save_File. Для установки файла изменена дата / время, смотрите информацию по Установка Дата & Время файла.

Операторы

    SD_File_Name этот оператор должен быть определен еще до вызова SD_Append_File. Это будет имя файла. Это должна быть строка максимальной длины 8, и только в верхнем регистре. Длинные имена файлов не поддерживаются. Смотрите пример ниже.

    SD_File_Ext этот оператор должен быть определен еще до вызова SD_Append_File. Этот оператор сообщает о расширении файла, например "TXT". SD_File_Ext должна быть строка максимальной длины 3, и только в верхнем регистре. Смотрите пример ниже.

    Variable может быть переменной типа байт. Она показывает был ли открыт файл для добавления – 0, либо файл не был найден - 1. Возвращаемая переменная не является обязательным параметром.


SD_Open_File

12

14

16

Синтаксис

Variable = SD_OPEN_FILE


Описание

Эта команда открывает существующий файл на SD или MMC картах файловой системой FAT16 для чтения. Карточка должна быть сначала инициализирована командой SD_Init_FS.

Операторы

    SD_File_Name этот параметр должен быть определен ещё до использования команды SD_Open_File. Он будет связан с именем файла. Это должна быть строковая переменная максимальной длины - 8, и только в верхнем регистре. Длинные имена файлов не поддерживаются. Смотрите пример ниже.
    SD_File_Ext этот параметр должен быть определен ещё до использования команды SD_Open_File. Он будет связан с расширением  файла. Это должна быть строковая переменная максимальной длины - 3, и только в верхнем регистре. Variable - может быть переменной типа байт, word, или  DWORD, который будет содержать возвращаемое значение, указывающее на то, что файл был открыт – 0, либо он не был найден - 1.

Пример

Device = 18F4550

XTAL = 20

'----------------------------------------------------------- 

ALL_DIGITAL = TRUE

'-----------------------------------------------------------

HSERIAL_BAUD = 115200  'Setup RS232 port

HSERIAL_RCSTA = %10010000 

HSERIAL_TXSTA = %00100100

'-----------------------------------------------------------

Dim Response As Byte

Dim SD_IO As Byte

'-----------------------------------------------------------

Symbol SD_CS = PORTD.2  'SPI CS to SD CS (SD pin 1)

Symbol SD_DI = PORTD.5  'SPI DO to SD DI (SD Pin 2)

Symbol SD_CLK = PORTD.3  'SPI CLK to SD CLK (SD Pin 5)

Symbol SD_DO = PORTD.4  'SPI DI to SD DO (SD Pin 7)

'-----------------------------------------------------------

Include "SD_MMC_Read_File_Lib. pbp"  'Include managed library file

'-----------------------------------------------------------

GoTo Over_Sub  'Jump over the subroutines

'-----------------------------------------------------------

Over_Sub: 

  DelayMS 200

'-----------------------------------------------------------

Main_Prog:

  HSerOut ["INSERT SD OR MMC",13]

  Repeat

  Response = SD_Init_FS

  Until Response = 0

  HSerOut ["OPENING FILE",13]

  SD_File_Name = "TEST001"  'File Name, upper case only!

  SD_File_Ext = "TXT"  'File Ext, upper case only! 

  Response = SD_Open_File

  If Response = 1 Then

  HSerOut ["FILE NOT FOUND",13]

  Stop

  EndIf

  HSerOut ["FILE OPEN",13]

  While SD_EOF < 1

  Response = SD_Read_Byte_From_File

  If SD_EOF < 1 Then HSerOut [Response]

  Wend 

'-----------------------------------------------------------

Finish:

  HSerOut [13]

  HSerOut ["FINISHED",13]

  Stop


Замечание

Когда чтение файла была завершено, он не должн быть закрыта командой SD_Close_File. Это должно быть использовано только командами SD_New_File и SD_Append_File.

Между процессами открытия файла и завершение чтения, никаких других, кроме SD_Read_Byte_From_File команд не должн использоваться. Это может привести к повреждению файлов. Одновременное чтение и запись в файлы не представляется возможным.


SD_Read_Byte_From_File

12

14

16

Синтаксис

Variable = SD_READ_BYTE_FROM_FILE


Описание

Эта команда читает байт из существующего файла на SD или MMC картах в которых  используется файловая система FAT16. Карточка должна быть сначала инициализирована командой SD_Init_FS и открыта командой SD_Open_File.

Операторы

    Variable может быть переменной типа байт, word или DWORD, который будет содержать байт считанный из файла.

SD_Delete_File

12

14

16

Синтаксис

SD_DELETE_FILE


Описание

Эта команда Удаляет файл на SD или MMC картах в которых используется файловая систем - FAT16. Карточка должна быть сначала инициализирована командой SD_Init_FS.

Операторы

    SD_File_Name этот оператор должен быть определен еще  до вызова команды  SD_Delete_File. Он характеризует имя файла. Это должна быть строковая переменная максимальной длины - 8, и только в верхнем регистре. Длинные имена файлов не поддерживаются. Смотрите пример ниже. SD_File_Ext этот оператор должен быть определен еще  до вызова команды  SD_Delete_File. Он характеризует расширение файла. Это должна быть строковая переменная максимальной длины - 3, и только в верхнем регистре. Длинные имена файлов не поддерживаются. Смотрите пример ниже.

SD_Free_Space

12

14

16

Синтаксис
Variable = SD_FREE_SPACE


Описание

Эта команда находит свободное пространство в килобайтах на SD или MMC картах в которых  использована файловая система FAT16. Карточка должна быть сначала инициализирован командой SD_Init_FS или SD_Init_FS_MSSP.

Операторы

    Variable должна быть переменной типа dword, в которую сохраняется возвращаемое значение, которое указывает количество килобайт свободного места на диске.

Пример

Dim Free_Space As DWord

Main_Prog:

  HSerOut ["INSERT SD OR MMC",13]

  Repeat

  Response = SD_Init_FS

  Until Response = 0

  HSerOut ["CHECKING FREE SPACE",13]

  Free_Space = SD_Free_Space

  HSerOut ["FREE SPACE: ",Dec Free_Space," KB",13]

Finish:

  HSerOut ["FINISHED",13]

  Stop


Замечание

Так SD_Free_Space приходится искать через все таблицы FAT на диске, это может занять некоторое время. На тактовой частоте 20 МГц  для 64 MMC карты, она занимает около 10 секунд.


SD_Disk_Size

12

14

16

Синтаксис
Variable = SD_DISK_SIZE


Описание

Эта команда определяет размер (в килобайтах) на SD или Multimedia CardMMC картах в которых  использована файловая система FAT16. Карточка должна быть сначала инициализирована командой с SD_Init_FS или SD_Init_FS_MSSP.

Операторы

    Variable эта переменная должна быть типа DWORD, в которой будет содержаться возвращаемое значение, указывающее на размер диска в килобайтах.

Пример

Dim Disk_Size As DWord

Main_Prog:

  HSerOut ["INSERT SD OR MMC",13]

  Repeat

  Response = SD_Init_FS

  Until Response = 0

  HSerOut ["CHECKING DISK SIZE",13]

  Disk_Size = SD_Disk_Size

  HSerOut ["DISK SIZE: ",Dec Disk_Size," KB",13]

Finish:

  HSerOut ["FINISHED",13]

  Stop


SD_Dir

12

14

16

Синтаксис
[Variable =] SD_DIR [Direction]


Описание
Эта команда осуществляет поиск файлов в корневом каталоге SD или MMC картах в которых используется файловая система FAT16. Карточка должна быть сначала инициализирована командой SD_Init_FS. Вложенные папки не поддерживаются. Необязательный параметр позволяет вам искать в первый, следующий (по умолчанию) или предыдущему файлу в корневой директории. Если файл найден, его имя и расширение файла будет проходить в SD_File_Name системные переменные и SD_File_Ext.

Операторы

    Direction это параметр, указывает направление поиска. Если написать SD_First, то будет возвращен первый файл в корневом каталоге. Если написать SD_Next, то будет возвращен следующий файл в корневом каталоге. А использование SD_Dir с этим параметром неоднократно позволяет сканировать все файлы в корневом каталоге. Если используется SD_Previous, то будет возвращен предыдущий файл из корневого каталога. Если параметр не задан, используется по умолчанию SD_Next. Variable может быть переменной типа байт, что указывает на возвращаемое значение, в том случае, найден ли уже файл – 0, или нет - 1. Возвращаемая переменная не является обязательной.

Пример

Main_Prog:

  HSerOut ["INSERT SD OR MMC",13]

  Repeat

  Response = SD_Init_FS

  Until Response = 0

  HSerOut ["SEARCHING FOR FILE",13,13]

  Repeat

  Response = SD_Dir 

  If Response = 0 Then HSerOut [SD_File_Name,".",SD_File_Ext,13]

  Until Response > 0 

  HSerOut ["------------",13] 

  Repeat

  Response = SD_Dir SD_Previous

  If Response = 0 Then HSerOut [SD_File_Name,".",SD_File_Ext,13]

  Until Response > 0

  HSerOut ["------------",13] 

  Response = SD_Dir SD_First

  If Response = 0 Then HSerOut [SD_File_Name,".",SD_File_Ext,13]

Finish:

  HSerOut ["------------",13] 

  HSerOut ["FINISHED",13]

  Stop


Замечания

Если была использована команда SD_Delete_File, то в команде SD_Dir не обязательно найти следующий или предыдущий файл в корневом каталоге, когда называется. SD_Dir первую очередь следует назвать с параметром SD_First следующей использования SD_Delete_File, для сброса внутреннего файла счетчик.

SD_Psuedo_Format

12

14

16

Синтаксис
SD_PSUEDO_FORMAT


Описание

Выполняет псевдо-форматирование SD или MMC карт, используя формат FAT16. Карточка должна быть сначала инициализирован командой SD_Init_FS. Корневой каталог и таблицы FAT на диске будут удалены, но Master Boot Record и Boot Sector не переписан. SD_Psuedo_Format уничтожит любые данные, записанные на диске.

Пример

Main_Prog:

  HSerOut ["INSERT SD OR MMC",13]

  Repeat

  Response = SD_Init_FS

  Until Response = 0

  HSerOut ["PSUEDO-FORMATTING SD/MMC",13]

  SD_Psuedo_Format

Finish:

  HSerOut ["FINISHED",13]

  Stop


Установка файла даты и время информация

12

14

16


Описание

Файл создать и изменять информацию о дате и времени можно записать, установив операторов ниже до или SD_New_File (для установки даты создания / время), или SD_Close_File (для установки модифицированной даты / времени). Операторы должны быть установлены после того, как SD / MMC карта инициализируется командой SD_Init_FS или SD_Init_FS_MSSP, так как эти команды очистить эти операторы. Для нового файла, создавать написано дата / время, когда файл открывается с SD_New_File, но операторы могут быть повторно установлен перед SD_Close_File называется, чтобы другой модифицированный дату / время. Note that the create date/time only applies to files opened with SD_New_File, but the modified date/time applies to files opened with both SD_New_File and SD_Append_File.

Операторы

    SD_Day этот оператор устанавливает день месяцадолжен. Его значения могут быть между 1 и 31. SD_Month должен быть установлено  значение от 1 до 12, чтобы представлять месяц. SD_Year должен быть установлено значение между 0 и 99, чтобы представлять год (это любой год в промежутке от 2000 до 2099). SD_Hours должен быть установлено значение между 0 и 23, чтобы представлять количество часов (в 24-часовом формате). SD_Minutes должен быть установлено значение между 0 и 59, чтобы представить число минут. SD_Seconds должен быть установлено значение между 0 и 59, чтобы представить число секунд (NB время создания уделяется ближайшей миллисекунды, модифицированный время будет уделено ближайших 2-х секунд). SD_MSeconds must be set to a value between 0 and 99 to represent the number of milliseconds (N. B. only relevant for create time, not for modified time).

Example 1

  SD_Day = 17 : SD_Month = 02 : SD_Year = 06

  SD_Hours = 07 : SD_Minutes = 12 : SD_Seconds = 30 : SD_MSeconds = 40

  Response = SD_New_File

Example 2

  SD_Day = 17 : SD_Month = 02 : SD_Year = 06

  SD_Hours = 07 : SD_Minutes = 12 : SD_Seconds = 33 : SD_MSeconds = 70

  SD_Close_File

В примере 1, будет установлена  дата / время, в то время как в примере

2, модифицированный дата / время будет установлено.


Notes

Установка даты / времени данные необязательно. SD_Init_FS или SD_Init_FS_MSSP и ясно все операторы изначально; если они потом не устанавливается код пользователя, дата и время информация для файла не будет установлен и появится пустой, если файл просматривается на ПК.