• БЛОГ
  • УЧЕБНИКИ
    • Электронные версии УМК по робототехнике
    • ОСНОВЫ РОБОТОТЕХНИКИ 5-6 КЛАСС
  • КВЕСТЫ
  • ПРОЕКТЫ
    • Подпроект 1
    • Подпроект 2
    • Подпроект 3
  • ЗАНЯТИЯ
  • НАПИСАТЬ АДМИНУ
  • ТУРНИРЫ
    • Junior Skills
    • Шагающие роботы
    • WRO-2016
    • Танковый биатлон
    • Кубок Губернатора
  • РАСПИСАНИЕ
  • Главная
    /
  • Решаем задачи
    /
  • /

(RobotC)

Разберем пример сбора показаний с датчика на примере сенсора освещенности. Используем программу на языке RobotC для регистрации данных и сохранения  их в файл для дальнейшего использования.

Текст программы:

# pragma config ( Sensor , S1 , Light , sensorLightInactive )
const string FILENAME = " lightreadings .dat "; // имя файла для хранения показаний
const int NUMSAMPLES = 97;
const int SAMPLEINTERVAL = 15; // интервал в минутах

task main () {                    // основная задача программы
TFileIOResult nIOResult ;    // переменная для контроля ошибок при работе с файлом
TFileHandle LIGHTFILE ;    // дескриптор файла
int FileSize = 2* NUMSAMPLES ;  // установка размера файла
int i,j;

OpenWrite ( LIGHTFILE , nIOResult , FILENAME , FileSize ); // открытие файла для записи
for (i=1;i <= NUMSAMPLES ;i ++) {
WriteShort ( LIGHTFILE , nIOResult , SensorValue [ Light ]);  // запись в файл 1 значения
for (j =0;j< SAMPLEINTERVAL && i!= NUMSAMPLES ;j++) {
wait10Msec (6000); // ожидание истечения 1 минуты
}
}
Close ( LIGHTFILE , nIOResult ); // закрытие файла
}

 

Первая строка автоматически генерируется средой программирования.

 

(NXT-G)

Та же задача может быть решена средствами языка NXT-G. Простая запись данных с датчика в файл выглядит компактно.

Это первый вариант, который приходит в голову. Казалось бы, все просто. Данные с датчика поступают в числовом формате, в файл можно записать число, сделав его типизированным (установив тип внутренних данных - числовой). Но возможна проблема - ошибка при открытии файла для записи данных. Эти ошибки часто возникают независимо от того, на каком языке написана программа. В RobotC этот вопрос контролируется при помощи исключительных ситуаций, но в NXT-G тоже предусмотрена возможность проверки корректного открытия файла. Добавим в начало программы эту проверку на случай ошибки ввода-вывода операционной системы. Не забудьте закрыть файл в конце программы, иначе может возникнуть очередная ошибка и часть данных будет утеряна. Полученная в итоге программа может иметь следующий вид.

 

Во многих языках программирования при записи нескольких измерений подряд требуется вручную установить разграничители. Удобнее всего в этом случае перевести числовые данные в строку текста и добавить к каждому измерению знак-разделить (запятую или пробел). Таким образом, Вы всегда сможете, независимо от среды программирования, прочитать данные из файла. В NXT-G этого делать не требуется, но если Вы планируете впоследствии открывать файл в другой среде программирования, обратите внимание на такую возможность записи.

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

    Добавить отзыв/Оставить заявку
         
    Заполните обязательное поле
    Введите код с картинки
    Необходимо согласие на обработку персональных данных
    Повторная отправка формы через:
    • БЛОГ
    • УЧЕБНИКИ
    • КВЕСТЫ
    • ПРОЕКТЫ
    • ЗАНЯТИЯ
    • НАПИСАТЬ АДМИНУ
    • ТУРНИРЫ
    • РАСПИСАНИЕ
    ×Убрать копирайт

    Сайт создан на 1C-UMI

    Работает на UMI.CMS

    Поделиться с друзьями: