Include &quot

advertisement
Команды для работы с 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.microchipc.com 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
команда
отформатированной в FAT16
SD_Init_FS_MSSP
аппаратной
инициализации
SD-карточки
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
SD_Sector Sector_Number,1
for reading
Buffer_Size = 1
HSerOut ["READING SECTOR ",DEC2 Sector_Number,13]
Repeat
in Sector
SD_IO = SD_Read
the SD/MMC
HSerOut [HEX2 SD_IO," "]
Hexadecimal
If Buffer_Size // 32 = 0 Then HSerOut [13]
finished
Inc Buffer_Size
Until Buffer_Size > 512
are read
HSerOut [Rep "-"\95,13]
under each Sector
Inc Sector_Number
next Sector
Until Sector_Number = 20
Sectors are read
Stop
'Loop for Sectors
'Set up SD/MMC
'Loop for bytes
'Read a byte from
'Display it in
'Check if row
'Move up one byte
'Until all bytes
'Draw a line
'Move up to the
'Until all
Замечание
Команда 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
Синтаксис
Variable = SD_OPEN_FILE
12
14
16
Описание
Эта команда открывает существующий файл на 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
12
SD_Dir
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 и
ясно все операторы изначально; если они потом не устанавливается код пользователя,
дата и время информация для файла не будет установлен и появится пустой, если файл
просматривается на ПК.
Download