Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

LabView - учеб. пособия / LabVIEW Руководство пользователя

.pdf
Скачиваний:
909
Добавлен:
03.03.2016
Размер:
4.63 Mб
Скачать

Вы можете также читать любую звуковую информацию, поступающую через устройство.

Настройка выходного звукового устройства на получение звуковых данных от других звуковых ВП. Вы можете управлять уровнем звука, проходящим через устройство, проигрывать или приостанавливать звук, а также удалять звук из вашей системы.

251

14. Файловый ввод/вывод

Операции файлового ввода/вывода передают данные в файлы и из файлов. Используйте ВП и функции с палитры File I/O для управления всеми аспектами файлового ввода/вывода, включая следующие:

Открытие и закрытие файлов с данными.

Чтение и запись файлов с данными.

Чтение и запись файлов с данными в формате электронных таблиц.

Перемещение и переименование файлов и директорий.

Изменение характеристик файлов.

Создание, модификация и чтение конфигурационного файла.

Используйте высокоуровневые ВП для выполнения общих операций ввода/вывода. Используйте низкоуровневые ВП и функции для каждой отдельной операцией ввода/вывода.

Более подробно…

Более подробно относительно операций файлового ввода/вывода см. справочную систему LabVIEW Help.

Основы файлового ввода/вывода

Типичные операции файлового ввода/вывода включают следующий процесс.

1.Создайте или откройте файл. Укажите, где находится существующий файл, или где Вы хотите создать новый файл, задавая путь или взаимодействуя с диалоговым окном, чтобы указать его место расположения. После открытия файл представляется своим ссылочным номером (refnum). Более подробно о ссылоч-

ных номерах см. в разделе Ссылки на объекты или приложения в Главе 4 Построение лицевой панели.

2.Читайте данные из файла или записывайте в него.

252

3. Закройте файл.

Большинство ВП и функций с палитры File I/O выполняют только один шаг файловой операции ввода/вывода. Однако, некоторые высокоуровневые ВП, созданные для общих операций файлового ввода/вывода, выполняют все три шага. Хотя эти ВП не всегда так же эффективны, как и низкоуровневые функции, ими легче пользоваться.

Выбор формата файлового ввода/вывода

Использование ВП файлового ввода/вывода зависит от формата файлов. Вы можете читать или записывать данные в файлы в трех форматах – текстовый (text), двоичный (binary) и протокол данных (datalog). Тип нужного вам формата зависит от данных, которые Вы измеряете или создаете, и от приложения, которые будет использовать эти данные.

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

Если Вы хотите сделать ваши данные доступными для других приложений, таких как Microsoft Excel, используйте текстовые файлы, поскольку они являются самыми употребительными и легко переносимыми.

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

Если Вы хотите из LabVIEW манипулировать сложными записями данных или различными типами данных, используйте файлы протоколов данных, поскольку они дают наилучший способ хранения данных, если Вы намерены осуществлять доступ к данным только из LabVIEW и вам приходится хранить сложные структуры данных.

Когда использовать текстовые файлы

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

253

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

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

Храните данные в текстовом формате, когда Вы хотите получить доступ к ним из других приложений, таких как текстовый редактор или электронные таблицы. Чтобы сохранить данные в текстовом формате, используйте строковые функции для преобразования всех данных в текстовые строки. Текстовые файлы могут содержать информацию о данных различного типа.

Текстовые файлы обычно занимают больше места, чем двоичные файлы и файлы протокола данных, если исходные данные не являются текстовыми, как, например, данные графиков или диаграммы, поскольку ASCII представление числовых данных обычно более расточительно по сравнению с исходным числовым представлением. Например, Вы можете сохранить число -123.4567 в четырех байтах как число однократной точности с плавающей точкой. Однако его ASCII представление займет 9 байтов, по одному на каждый символ.

Кроме того, имеются трудности произвольного доступа к числовым данным в текстовых файлах. Хотя каждый символ в строке занимает в точности 1 байт, количество знакомест для представления числа в текстовом виде обычно не является фиксированным. Чтобы найти девятое число в текстовом файле, потребуется вначале прочитать и преобразовать предыдущие восемь чисел.

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

254

Примеры использования файлового ввода/вывода с текстовыми файлами можно найти в библиотеках examples\file\smplfile.llb и examples\file\sprdsht.llb.

Когда использовать двоичные файлы

Сохранение двоичных данных, таких как целые числа, предполагает использование фиксированного числа байтов для каждого числа. Например, сохранение любого числа от 0 до 4 миллиардов (к примеру1, 1000 или 1000000) в двоичном формате займет по 4 байта на одно число.

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

Двоичные файлы являются самыми эффективными, поскольку они занимают наименьшее дисковое пространство и поскольку не требуется конвертировать данные в текстовый формат и обратно при каждой операции сохранения или извлечения данных. Двоичный файл позволяет представлять в каждом байте дискового пространства 256 значений. Часто двоичные файлы содержат побайтный образ данных в том виде, как они хранятся в памяти, за исключением случаев чисел расширенной точности (extended) и комплексных чисел (complex). Когда файл содержит побайтный образ представления данных в памяти, чтение из него происходит максимально быстро, поскольку не требуются никакие преобразования. Более подробно о хранении данных в LabVIEW см. в заметках к приложению

(Application Notes) LabVIEW Data Storage.

"Примечание. Текстовые и двоичные файлы известны также как файлы

спотоком байтов (byte stream files). Это означает, что они хранят данные в виде последовательности символов или байтов.

Примеры чтения и записи массивов значений удвоенной точности с плавающей точкой в двоичный файл можно найти в ВП Read

255

Binary File и Write Binary File из библиотеки examples\file\smplfile.llb.

Когда использовать файлы протоколов данных

Используйте файлы протоколов данных (datalog files) для доступа и манипуляции с данными только из LabVIEW и для быстрого и легкого сохранения сложных структур данных.

Файлы протокола данных хранят данные в виде последовательности одинаково структурированных записей (record), подобно электронным таблицам, где каждая строка представляет собой запись. Все записи в файле протокола данных должны иметь одинаковый тип данных, ассоциированный с этим файлом. LabVIEW записывает каждую запись файла как кластер, содержащий сохраняемые данные. Однако компоненты записи протокола данных могут иметь произвольный тип, определяемый при создании этого файла.

Например, Вы можете создать протокол данных, типом записи которого является кластер из строки и числа. Следовательно, каждая запись протокола данных есть кластер из строки и числа. Однако, первой записью может быть (“abc”, 1), в то время как второй записью может быть (“xyz”, 7).

Использование файлов протокола данных требует мало манипуляций, что делает запись и чтение намного быстрее. Это также упрощает извлечение данных, поскольку Вы можете читать необходимые блоки данных без просмотра всех предыдущих в этом файле. Произвольный доступ в фалах протокола данных осуществляется быстро и легко, поскольку все, что Вам нужно для доступа к записи, – это ее номер. При создании файла протокола данных LabVIEW последовательно назначает всем записям уникальные номера.

Вы можете получить доступ к файлу протокола данных и с лицевой панели и с блок-диаграммы. Более подробно о доступе к файлам протокола данных с лицевой панели см. в разделе Регистрация данных лицевой панели настоящей Главы.

LabVIEW сохраняет запись в файле протокола данных каждый раз, когда связанный с ним ВП запускается. Нельзя перезаписывать запись после того, как LabVIEW запишет ее в файл протокола дан-

256

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

Примеры чтения и записи файлов протокола данных можно найти в библиотеке examples\file\datalog.llb.

Использование ВП высокоуровневого файлового ввода/вывода

Используйте ВП высокоуровневого файлового ввода/вывода для выполнения общих операций ввода/вывода, таких как запись или чтение следующих типов данных:

Символы в текстовых файлах.

Строки из текстовых файлов.

Одно- и двумерные массивы чисел одинарной точности в текстовых файлах электронных таблиц.

Одно- и двумерные массивы чисел одинарной точности или 16битных целых чисел со знаком в двоичных файлах.

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

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

На Figure 14-1 показано, как использовать высокоуровневый ВП Write To Spreadsheet File для записи чисел в файл электронной таблицы приложения Microsoft Excel. Когда запускается этот ВП,

257

LabVIEW спросит Вас, записывать данные в существующий файл или нужно создать новый.

Figure 14-1. Использование высокоуровневого ВП для записи в файл электронной таблицы

Используйте ВП с подпалитры Binary Files для записи и чтения файлов в двоичном формате. Данные могут иметь тип целых чисел или чисел однократной точности с плавающей точкой.

Использование ВП и функций низкого уровня и с подпалитры Advanced File I/O

Используйте ВП и функции низкого уровня, а также ВП и функции с подпалитры Advanced File I/O для индивидуального управления каждой операцией файлового ввода/вывода.

Используйте основные низкоуровневые функции для создания или открытия файла, записи данных в файл или чтения из него и для закрытия файла. Остальные низкоуровневые функции используйте для выполнения следующих задач:

Создание директорий.

Перемещение, копирование или удаление файлов.

Просмотр содержимого директории.

Изменение характеристик файла.

Манипуляция с путем к файлу.

Путь к файлу, показанный слева, является в LabVIEW типом данных, который определяет место размещения файла на диске. Путь включает устройство (том), на котором находится файл, перечень директорий, между верхним уровняем файловой системы и фай-

258

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

та управления File Path Control и индикатора File Path Indicator. Бо-

лее подробно о них см. в разделе Элементы управления и индика-

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

На Figure 14-2 показано, как использовать низкоуровневые ВП и функции для записи чисел в файл электронной таблицы приложения Microsoft Excel. Когда Вы запустите этот ВП, ВП

Open\Create\Replace откроет файл numbers.xls. Функция Write File запишет строку чисел в этот файл. Функция Close закроет этот файл. Если Вы не закроете файл, данные для него остаются в памяти и файл остается недоступным для других приложений или других пользователей.

Figure 14-2. Использование низкоуровневого ВП для записи в файл электронной таблицы

Сравните ВП на Figure 14-2 с ВП на Figure 14-1, который решает ту же задачу. На Figure 14-2 для преобразования массива чисел в символьную строку использована функция Array To Spreadsheet String. На Figure 14-1 ВП Write To Spreadsheet File открывает файл,

конвертирует массив чисел в символьную строку, записывает данные и закрывает файл.

Пример использования ВП и функций для низкоуровневого файлового ввода/вывода представлен в ВП Write Datalog File Example из библиотеки examples\file\datalog.llb.

259

Дисковый поток

Вы также можете использовать ВП и функции низкоуровневого файлового ввода/вывода для создания дискового потока (disk streaming), который позволяет сэкономить ресурсы памяти. Дисковый поток – это технология файлового ввода/вывода, при которой файлы остаются открытыми на протяжении нескольких операций записи, например, внутри цикла. Хотя высокоуровневые операции записи проще в использовании, но они открывают и закрывают файл при каждом своем выполнении. Ваши ВП могут стать более эффективными, если Вы избавитесь от частого открытия и закрытия одних и тех же файлов.

Дисковый поток уменьшает количество раз, когда функция взаимодействует с операционной системой для открытия и закрытия файла. Чтобы создать типичную операцию в стиле дискового потока, поместите ВП Open/Create/Replace File перед циклом, а функцию Close File после цикла. Внутри цикла можно производить многократное непрерывное записывание в файл без его открытия и закрытия.

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

Создание текстовых файлов и файлов электронных таблиц

Чтобы записать данные в текстовый файл (text file), Вы должны конвертировать ваши данные в символьную строку. Чтобы записать данные в файл электронной таблицы (spreadsheet file), Вы должны представить символьную строку в формате строки электронной таблицы, которая представляет собой обычную символьную строку с разделителями типа символов табуляции. Более подробно о форматировании символьных строк см. в разделе Форматирование строк в Главе 10 Группировка данных с использованием строк, массивов и кластеров.

Запись текста в текстовый файл не требует форматирования, поскольку большинство текстовых редакторов могут читать неформа-

260