(RobotC)
Рассмотрим задачу построения графика (в нашем случае - гистограммы) по данным от датчика. Возьмем на разбор классический пример - датчик освещенности. Пусть ранее снятые данные хранятся в файле lightreadings .dat. Приведем пример программы извлечения хранимых данных и выведения на экран контроллера визуальной информации.
Код программы:
# pragma config ( Sensor , S1 , Light , sensorLightInactive )
const string FILENAME = " lightreadings .dat "; // имя файла
const int NUMSAMPLES = 97; // количество значений в файле
task main () { // основная задача
TFileIOResult nIOResult ; // переменная, используемая для контроля ошибок
TFileHandle LIGHTFILE ; // дескриптор файла
int FileSize = 2* NUMSAMPLES ; // определение размера файла
int i,n;
OpenRead ( LIGHTFILE , nIOResult , FILENAME , FileSize ); // открытие файла для чтения
for (i=1;i <= NUMSAMPLES ;i ++) {
ReadShort ( LIGHTFILE , nIOResult ,n); // считывание одного значения
nxtDrawLine (i ,0,i,n); // прорисовка линии на экране
}
Close ( LIGHTFILE , nIOResult ); // закрытие файла
wait10Msec (1000); // задержка по времени для просмотра результата работы программы
}
Первая строка программы генерируется средой программирования. Размер файла определяется исходя из типа элементов. В данном случае это целые числа (int), следовательно, каждое значение занимает 2 байта. Умножив количество значений на 2, получаем искомый объем файла в байтах.
(NXT-G)
Программа извлечения данных из файла на языке NXT-G выглядит более громоздко, поэтому конструкция переключателя была переведена в режим вкладок.
Вторая вкладка содержит вывод ошибки при некорректном открытии файла.