ДО курс по робототехнике

3 апреля 2013 г.

NXT-G: как сохранить данные после завершения программы

Мало кто знает, но среда NXT-G позволяет работать с файлами на NXT блоке. Вы можете создавать, изменять данные в файлах, затем получать к ним доступ, ну и в конец – удалять файлы. Осуществляются все файловые операции через стандартный блок Файлового Доступа (File Access Block).

Используя этот блок, вы можете сохранять данные из программ, исполняемых роботом, на ваш NXT блок.
Специфика работы с файлами такова, что после записи данных в файл, вы должны использовать другой блок Файлового Доступа для того, чтобы закрыть файл перед тем, как вы сможете читать или удалять его.

После того как файл создан на файловой системе блока NXT, они будут храниться здесь как после завершения работы программы, записавшей данные в файл, так и даже после выключения питания. Таким образом, блок Файлового Доступа позволяет передавать данные между несколькими программами или же сохранить промежуточные результаты работы программы во время ее остановки, так чтобы использовать их при следующем запуске.

Запись в существующий файл будет добавлять данные в конец файла, т.е. она не будет очищать данные сохраненные в этом файле ранее. Для того чтобы перезаписать файл, в первую очередь используйте блок Файлового Доступа, чтобы удалить этот файл. Затем, используйте еще один блок, чтобы записать новый файл с тем же самым именем.


Используя каналы данных (data wires) можно манипулировать следующими входными и выходными параметрами:
НазваниеНазначение
FilenameИмя файла. Максимум 15 символов.
Initial File SizeМожно задать предполагаемый размер файла. Полезно в случаях, когда файл заполняется постепенно в ходе программы – тогда не будут проявляться проблемы, вызванные автоматическим изменением размера.
TextСтрока для записи в файл.
NumberЧисло для записи в файл.
ErrorВозвращает True, если возникла проблема. Например, при записи – файл достиг своего максимального размера; при чтении – при попытке чтения из конца файла; при удалении – файл не существует.
Text OutСтрока, возвращаемая после чтения из файла
Number OutЧисло, возвращаемое после чтения из файла

Важно также помнить, что флеш-память, на которой сохраняются файлы, имеет ограниченный ресурс по количеству циклов чтения-записи. Но тем не менее, не бойтесь использовать блок Файлового Доступа, просто делайте это с умом. Ресурс флеш-памяти достаточно большой, чтобы записывать-читать несколько созданных файлов 2-3 раза в неделю. Но дважды подумайте, прежде чем генерировать огромные объемы файлов лишь для того, чтобы записать все значения сенсора расстояния, когда робот выбирается из лабиринта.

Поскольку в NXT-G нет, официальной поддержки массивов, часто можно встретить использование файлов в качестве эмуляции массивов.
При записи значения в определенный элемент массива, на самом деле, выполняется запись этого значения в файл, имя которого содержит индекс нужного элемента.


При извлечении же значения определенного элемента массива, происходит чтение содержимого файла, также содержащего индекс элемента в имени.

Комментариев нет:

Отправить комментарий