(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 этого делать не требуется, но если Вы планируете впоследствии открывать файл в другой среде программирования, обратите внимание на такую возможность записи.
Последнее измерение записано в файл вне цикла, поскольку потребовалось изменить процедуру записи. Как Вы можете видеть, к этому измерению не добавляется разделитель.