среда, 18 декабря 2013 г.

Работа с файлами в среде программирования EV3

Точно так же, как и среда программирования LEGO Mindstorms NXT-G, среда программирования нового набора EV3 тоже поддерживает работу с файлами. Манипуляции с файлами могут понадобится в многих случаях. Например, если необходимо снять показания с сенсоров и енкодеров во время выполнения роботом задания на каком-нибудь полигоне, либо чтобы получить данные какого-то эксперимента для дальнейшего их анализа.
С помощью файлов можно организовать перенос данных с компьютера на робота, например, чтобы он нарисовал портрет Мона Лизы, или передачу данных между разными программами, например, когда одна программа сканирует предмет, а вторая потом собирает его. Иными словами, применять как запись данных в файл, так и их чтение можно во множестве устройств и механизмов.

Блок работы с файлами расположен в палитре "Дополнения"


После установки блока в программу, становятся доступными несколько режимов работы с данным блоком:


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

Вот так будет выглядеть блок в режиме "Удалить файл". Заданный файл удалиться из каталога проекта, расположенного на EV3 блоке.


Естественно в файл можно записать какие-то данные. Все данные представляются в виде строчек - один вызов блока запись в файл добавляет новую строку файл. Среда программирования EV3 преобразует типы самостоятельно, поэтому в ней больше нет блока "Из цифры в текст".


Чтение из файла может быть сделано, как для строки, так и для числа.


После работы с файлом, его крайне рекомендуется закрывать с помощью отдельной функции, предоставляемой блоком.

Имя файла, с которым работает блок задано в виде строки в верхней части блока. Оно может быть изменено, если начать набирать там другую строку.


В итоге, типовой алгоритм работы с файлом на чтение будет следующим:
  1. Считать данные из файла. Если данных много, то нужно использовать блок повторение.
  2. После чтения файла, его нужно закрыть.
Типовой алгоритм работы с файлом на запись будет следующим:

  1. Удалить предыдущую версию файла. Если этого не сделать, то последующая запись будет добавляться в конец существующего файла, т.е. старые данные будут вместе с новыми. Если файла еще нет на блоке, программа корректно обработает эту ситуацию автоматически без всяких сообщений об ошибке.
  2. Запись в файл. Если данных много, то они записываются в цикле. На каждой итерации цикла делается добавление новой строчки в файл.
  3. Закрытие файла, после выполнения последней операции записи. Если файл не закрыть, то последующее чтение из него в этой же программе будет невозможно.
Иногда возникает необходимость автоматически генерировать имя файла, например, когда в рамках одного прогона программы выполняется несколько экспериментов, и результаты каждого эксперимента должны быть сохранены в отдельный файл. Для этого нужно нажать на имя файла в верху блока и выбрать "Проводной" - это обозначает, что имя файла будет передано через канал данных.


Блок после этого изменит свой вид:


Вот пример программы, где это может использоваться: робот 6 раз запускают по разным частям полигона, где он считывает показания датчика цвета в режиме замера освещенности. Для каждого прогона робота создается свой собственный файл: test_1, test_2, test_3, ...


Следующий пример программы показывает, как можно выгрузить данные работы программы в виде CSV файла (формат с разделителем в виде ";"). Этот файл понимается программой электронных таблиц Excel - данные можно представить в виде табличек и выполнить их анализ, используя всю мощь этой популярной программы.


Нужно обратить внимание, что первой операцией в файл в случае форматированных файлов должна быть строка с названиями элементов (столбцов), которые будут записываться в дальнейшем.

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


Итак, нажимаем кнопку с символическим изображением жесткого диска компьютера:


Открывается окно с содержим внутренней памяти EV3 блока:


Нужно найти папку проекта и в ней файл по имени, которое было задано в верхней части блока:


Файл найден? Нажимаем на "Загрузить".
Открывается окно для выбора места, куда будем загружать и под каким именем.


После того, как файл загружен, он может быть найден на файловой системе и открыт. Если расширение файла при записи было задано (.csv), то файл откроется автоматически программой Excel.


Как только файл открыт, данные в нем представлены в виде нескольких столбцов. Поскольку с данных может быть много, то имеет смысл рассмотреть их, когда они представлены в графической форме в виде графика:


Такой инструмент анализа работы сенсоров и моторов нового набора EV3 является основным для авторов блога. Хочется надеяться, что он будет полезным для кого-либо еще!

4 комментария:

Related Posts Plugin for WordPress, Blogger...