Документация
Виртуальная инструментальная архитектура стандарта (VISA) является стандартом, заданным Keysight™ (раньше Agilent Technologies ® ) и National Instruments ™ ® для связи с инструментами независимо от интерфейса. Стандарт VISA был раньше выпущен Системным Союзом VXIplug&play и теперь обеспечен IVI Основами.
Instrument Control Toolbox™ поддерживает TCP/IP (использующий VXI11 и HiSLIP), Сокет TCP/IP, USB, GPIB, Последовательный, VXI и интерфейсы PXI с помощью стандарта VISA. Коммуникация устанавливается через инструментальный объект VISA, который вы создаете в MATLAB ® рабочая область. Например, объект VISA-GPIB позволяет вам использовать стандарт VISA, чтобы связаться с инструментом, который обладает интерфейсом GPIB.
Для полных технических требований VISA, обеспеченных IVI Основами, см. IVI Технических требований.
Поддерживаемые платформы и минимальные требования драйвера
VISA поддерживается на этих платформах:
- macOS (только ВИЗА NI и R&S VISA)
- Windows ® 10
Это минимальные версии драйвера VISA, которые вы должны иметь:
- Версия 18.1.24715.0 Библиотек Keysight IO (Эксперт по Связи Keysight 2019)
- Версия 19.5 ВИЗЫ NI National Instruments ™
- Rohde & Schwarz R&S Версия 5.12 VISA
Tektronix ® TekVISA не поддерживается для visadev интерфейс.
Интерфейсы, используемые с VISA
Для многих Заявлений на получение визы можно связаться с инструментом без детального знания того, как интерфейс работает.
- Начало работы с Интерфейсом TCP/IP для VXI-11 и HiSLIP
- Начало работы с Интерфейсом Сокета TCP/IP
- Начало работы с интерфейсом USB
- Начало работы с интерфейсом GPIB
- Начало работы с интерфейсом последовательного порта
- Начало работы с VXI и интерфейсами PXI
Соединитесь с и сконфигурируйте ресурс VISA
См. список ресурсов VISA, доступных, чтобы соединиться с использованием visadevlist . Эта функция предоставляет список имен ресурса и псевдонимов. Можно также найти имя ресурса устройства или псевдоним из программного обеспечения управления поставщика VISA. Для получения дополнительной информации об имени ресурса VISA, смотрите ResourceName .
Чтобы соединиться с ресурсом VISA, задайте его имя ресурса или использование псевдонима visadev .
После того, как вы свяжете со своим инструментом или устройством, можно сконфигурировать его свойства. Для полного списка visadev свойства и информация о том, как сконфигурировать их, см. visadev Свойства.
Другая функциональность
Используйте следующие функции, чтобы связаться с visadev объект.
| read | Считайте данные из ресурса VISA |
| readline | Прочитайте строку данных о строке ASCII из ресурса VISA |
| readbinblock | Считайте один binblock данных из ресурса VISA |
| write | Запишите данные к ресурсу VISA |
| writeline | Запишите линию данных о ASCII к ресурсу VISA |
| writebinblock | Запишите один binblock данных к ресурсу VISA |
| writeread | Запишите команду в ресурс VISA и считайте ответ |
| configureTerminator | Установите терминатор строки для связи строки ASCII с ресурсом VISA |
| configureCallback | Установите функцию обратного вызова и инициируйте условие для связи с ресурсом VISA |
| flush | Очистите буферы для связи с ресурсом VISA |
| visastatus | Проверяйте состояние ресурса VISA |
| visatrigger | Отправьте триггерное сообщение в GPIB или инструменты VXI |
| setDTR | Установите последовательный контакт DTR |
| setRTS | Установите последовательный контакт RTS |
| getpinstatus | Получите последовательное состояние контакта |
Смотрите также
Похожие темы
- Начало работы с Интерфейсом TCP/IP для VXI-11 и HiSLIP
- Начало работы с Интерфейсом Сокета TCP/IP
- Начало работы с интерфейсом USB
- Начало работы с интерфейсом GPIB
- Начало работы с интерфейсом последовательного порта
- Начало работы с VXI и интерфейсами PXI
- Запишите и данные о ASCII чтения Используя VISA
- Запишите и двоичные данные чтения Используя VISA
Внешние веб-сайты
VISA (программная архитектура)
VISA, Virtual Instrument Software Architecture — широко используемый стандартизированный [1] интерфейс ввода/вывода в области тестирования и измерений для управления приборами с персонального компьютера. Поддерживает интерфейсы IEEE-488 (GPIB), VXI, RS-232, а также USB для измерительных устройств [2] . Имплементация VISA (например, NI VISA) представляет собой библиотеку функций для языков C, Visual Basic и G, которые унифицируют доступ ко все измерительным устройствам, независимо от используемого протокола и аппаратуры (например, независимо от модели GPIB-адаптера).
Интерфейс VISA предполагает общение с прибором вида «запрос-ответ» [3] . Компьютер отправляет специфичную для конкретного прибора команду-запрос (например, требование выполнить измерение физической величины) и ждёт ответа (например, отчёт о состоянии или результаты измерений) от прибора. Интерфейс также поддерживает специфичные для шины особенности, например, при работе с GPIB общение может также быть инициировано прибором с помощью прерывания, а для RS-232 можно конфигурировать битрейт, количество битов в кадре данных и т. д.
VISA был разработан компанией National Instruments в середине 1990-х для автоматизации измерений с помощью так называемых «виртуальных приборов» (VI). Используется в основном в таких программных продуктах компании, как LabVIEW, LabWindows и Measurement Studio. Несмотря на то, что интерфейс VISA стандартизирован, наиболее часто используется проприетарная реализация от National Instruments. Эта библиотека может быть бесплатно скачана с сайта компании после регистрации, есть версии для Linux, Mac OS, Windows. В комплект с библиотекой включены также несколько программных инструментов, например, NI Spy — программа для протоколирования обращений к библиотеке NI VISA.
PyVISA
PyVISA — это обёртка для библиотеки NI VISA, предоставляющая интерфейс для языка программирования Python. Авторы библиотеки Torsten Bronger, Ахен, Германия и Gregor Thalhammer, Иннсбрук, Австрия; издана по свободной лицензии MIT. Библиотека позволяет использовать всё удобство и гибкость высокоуровневого языка программирования Python для быстрой разработки систем сбора и обработки данных с измерительного оборудования в научной лаборатории.
PyVISA предоставляет высокоуровневые функции для опроса приборов и работы с массивами данных.
Пример использования
Ниже приведён пример использования PyVISA для получения спектра и измерения мощности лазерного излучения, приходящего в оптический спектроанализатор Agilent 86142.
Прежде всего, нужно импортировать библиотеку PyVISA (в коде именуется visa). Для каждого инструмента создаётся класс instrument, в котором есть методы для чтения/отправки данных (read, write, ask, ask_for_values…).
import visa visa.get_instrument_list() # Просмотр всех доступных инструментов OSA = visa.instrument("GPIB::02::INSTR")
Опрос и идентификация прибора с использованием стандартной команды SCPI «*IDN?»
OSA.ask("*IDN?") # Вернёт модель прибора с адресом GPIB::02 OSA.timeout = 40 # Ответ от прибора ожидается до 40 секунд
Получение текущего спектра в виде массива в переменную trace:
OSA.write("CALC1:AVER:STAT ON") # Включаем усреднение измерений OSA.write("CALC1:AVER:COUN 9") # Усреднение производится по 9-ти спектрам OSA.ask("INIT; *OPC?") # Запускаем измерение и ждём его окончания, после чего прибор вернёт "+1" trace = OSA.ask_for_values("TRACE? TRA") # Получаем спектр в переменную trace
Установка маркера мощности на спектр и опрос его значения:
OSA.write("CALC:MAKR1:MAX") # Устанавливаем маркер на пик в спектре power = OSA.ask("CALC:MARK1:Y?") # Считываем значение мощности лазера wl = OSA.ask("CALC:MARK1:X?") # Считываем длину волны лазера
См. также
Примечания
- ↑VISA Specification, IVI Foundation.
- ↑USB Test & Measurement Class Specification, USB Implementers Forum Inc..
- ↑ Следует отметить, что интерфейс VISA основан на передаче команд и не работает с устройствами сбора данных (АЦП), работающими по протоколу DAQ и производным от него, так как DAQ предполагает единовременное конфигурирование АЦП и затем непрерывную передачу потока с результатами измерений в компьютерную программу.
Ссылки
- Страница загрузки NI VISA (англ.)
- Сайт проекта PyVISA (англ.)
- Руководство по PyVISA (англ.)
- Ввод/Вывод
- Автоматизация
Wikimedia Foundation . 2010 .
Ni visa что это
Это руководство можно считать начальной точкой по изучению NI-VISA для обмена данными с устройством USB. Оно не предназначено для изучения архитектуры USB как таковой или протоколов USB, используемых для коммуникаций. После знакомства с этим руководством Вы сможете установить устройство USB и использовать NI-VISA для обмена данными с ним, если Вы понимаете используемый протокол этого устройства.
[USB и VISA: общая информация]
VISA это высокоуровневый программный интерфейс (API), предназначенное для коммуникаций через инструментальные шины. VISA не зависит ни от платформы, ни от шины, ни от рабочего окружения. Другими словами, используется одно и то же API, независимо от того, создана ли программа для обмена данными между устройством USB и системой LabVIEW на Windows 7, или же с устройством GPIB и приложением, работающим на Mac OS X.
USB это шина обмена, работа которой основана на сообщениях. Это означает, что компьютер PC и устройство USB обмениваются друг с другом через шину командами и данными, передаваемые либо в текстовом формате, либо как двоичные данные. Каждое устройство USB имеет свой набор команд. Вы можете использовать функции чтения (Read) и записи (Write) NI-VISA API, чтобы отправить эти команды в прибор и прочитать ответ на них. Список команд можно устройства USB Вашего прибора можно получить у его производителя.
NI-VISA поддерживает обмен по шине USB начиная с версии NI-VISA 3.0. Поддерживаются 2 класса ресурсов VISA: USB INSTR и USB RAW.
Устройства USB, которые удовлетворяют протоколу USB Test and Measurement Class (USBTMC), используют класс ресурсов USB INSTR. Выпускаются лицензированные устройства, и коробки поддерживающие протокол USBTMC [2]. Для коммуникации с таким устройством не требуется специальное конфигурирование, можно сразу переходить к изучению обмена с устройством (см. ниже «Использование NI-VISA для обмена с устройством USB»).
Инструментальными устройствами USB RAW считаются любые приборы с интерфейсом USB, которые не удовлетворяют протоколу USBTMC. Если Вы используете устройство USB RAW, то для настройки обмена с ним см. инструкции в разделе «Конфигурирование NI-VISA для управления устройством USB RAW». Обратитесь к производителю Вашего прибора, чтобы получить подробную информацию по используемому коммуникационному протоколу Вашего устройства USB.
Информацию по NI-VISA API см. в NI-VISA Help и руководство пользователя NI-VISA [3]. Эта информация предоставляется вместе с устанавливаемым пакетом VISA, и также доступна на сайте National Instruments.
Примечание: NI-VISA Help доступен в утилите NI-MAX через меню Help -> Installed Products -> MAX Help for NI-VISA.
[Конфигурирование NI-VISA для управления устройством USB RAW]
Посмотрите 3-минутное видео, демонстрирующее быстрый старт по управлению устройством через USB [4].
В этой секции описываются шаги по конфигурированию доступа к устройству USB RAW для управления через NI-VISA 5.0 на компьютере с операционной системой Windows. Если Вы используете USBTMC-совместимое устройство, просто подключите Ваше устройство и сразу перейдите к третьему шагу во врезке «Проверка связи с устройством с помощью утилиты NI-VISA Interactive Control».
Начиная с этого момента подразумевается, что пакет NI-VISA уже установлен на Вашем компьютере, и Ваше устройство USB еще не подключено. Кроме того, на компьютере не должен быть установлен драйвер для Вашего устройства USB. Весь процесс установки будет заключаться из 3 шагов: создание INF-файла с помощью Driver Development Wizard, установка INF-файла для устройства USB, проверка связи с устройством с помощью утилиты NI-VISA Interactive Control.
В целях демонстрации в качестве примера устройства USB будет использовать Creative Webcam, устанавливаемой на Windows 7. Из-за того, что это руководство предназначен для объяснения конфигурирования обычного стандартного устройства USB, подробности специфического обмена данными с камерой Creative Webcam на рассматриваются.
Для использования NI-VISA сначала нужно указать Windows использовать NI-VISA в качестве драйвера по умолчанию для Вашего устройства USB. В среде Windows можно это сделать с помощью INF-файла (информационный файл подключаемого устройства). NI-VISA 3.0 и более новые версии имеют в своем составе Мастер Драйвера (NI-VISA Driver Wizard), предназначенный для создания INF-файла для Вашего устройства USB.
Чтобы открыть NI-VISA Driver Wizard, запустите его через ярлычок «Driver Wizard» (Start -> All Programs -> National Instruments -> VISA -> Driver Wizard). Рис. 1 показывает открытое окно диалога Мастера Драйвера.

Рис. 1. Начальное окно NI-VISA Driver Wizard, где выбирается тип шины подключения устройства.
Вы можете использовать этот Мастер для создания INF-файла устройства шины PXI/PCI или для устройства USB. Выберите шину USB и кликните по кнопке Next. Откроется окно выбора устройства USB, что показано на рис. 2.

Рис. 2. Окно NI-VISA Driver Wizard USB Device Selection.
На этом шаге Вы должны заранее знать идентификаторы VID (Vendor ID) и PID (Product ID) вашего устройства USB, через которое подключается управляемый прибор. Это два числа 16-битных числа, предоставленных в шестнадцатеричном виде как 4 текстовых символа каждое, они идентифицируют Ваше устройство USB и служит адресом устройства в системе при организации связи с ним. Оба эти идентификаторы предоставляются поставщиком (производителем устройства). Если Вы не знаете идентификаторы VID и PID, то можете узнать их с помощью Диспетчера Устройств Windows (см. ниже «Как узнать VID и PID устройства USB»).
Примечание: если Вы в момент подключения устройства получили сообщение операционной системы об обнаруженном новом устройстве, то отклоните её приглашение о запуске мастера установки нового устройства (Found New Hardware Wizard).
В окне выбора устройства (рис. 2) выберите устройство по известному vendor ID и product ID. Идентификаторы устройств будут отображаться в списке Device List. После того, как кликнули на выбранном устройстве, Вы должны увидеть в других полях окна информацию об устройстве. Проверьте корректность этой информации. Если Вы не увидели нужного устройства в списке Device List, попробуйте обновить список кнопкой Refresh, и если это все равно не сработало, то выберите вариант Other. предполагающий прямой ввод идентификаторов в полях «USB Manufacturer ID (Vendor ID)» и «USB Model Code (Product ID)». Ниже показаны окна диалога, отображаемые при выборе варианта Other после клика на кнопке Next.
Первое окно предложит Вам подключить к компьютеру устройство USB (рис. 4): «Рекомендуется подключить устройство USB перед запуском Driver Wizard, чтобы обеспечить совместимость с VISA. Вы хотите установить драйвер для не подключенного устройства?».

Рис. 4. Приглашение подключить устройство USB.
Кликните Yes, отобразится окно для ввода информации о не подключенном устройстве USB (рис. 5). Введите информацию об устройстве в 4 полях этого диалога.

Рис. 5. NI-VISA Driver Wizard USB — Device Information Window.
Кликните Next, отобразится окно генерации выходных файлов, как это показано на рис. 6.

Рис. 6. NI-VISA Driver Wizard Output Files Generation Window.
Поле ввода USB Instrument Prefix это просто описатель-префикс, который Вы будете использовать для идентификации файлов, используемых для этого устройства, здесь можно указать любой префикс, какой хотите. Введите USB instrument prefix, выберите желаемый каталог, куда будут сохранены файлы, и кликните Next. Отобразится окно опций установки (см. рис. 7).

Рис. 7. NI-VISA Driver Wizard Installation Options.
Выбранный по умолчанию вариант подразумевает установку сгенерированных файлов на Вашем компьютере. Обычно следует выбрать этот вариант (предпоследний вариант просто сохраняет файлы, а последний вариант не производит никаких действий, просто завершает работу мастера). После выбора варианта кликните Finish для выхода из Мастера Драйвера. Созданный INF-файл будет находиться в директории, которую Вы указали.
[Как узнать VID и PID устройства USB]
Подключите свое устройство USB к компьютеру. Откройте Менеджер Устройств (Device Manager) из Панели Управления (Control Panel), и найдите свое устройство USB в списке. Если устройство не опознано, то обычно оно может находиться в папке «Контроллеры USB» (Other Devices), у него может быть желтый маркер с восклицательным знаком, показывающий, что для системы это пока что неизвестное устройство (у которого не установлен корректный драйвер). Двойным кликом на устройстве откройте его свойства. Выберите закладку Details, чтобы отобразился список свойств, и выберите в выпадающем списке Property атрибут «Hardware Ids» (идентификаторы аппаратуры). Отобразится строка символов наподобие показанной на рис. 3. 4 символа после префикса «VID_» и «PID_» покажут vendor ID и product ID соответственно. Запишите на листочке эти символы, закройте Device Manager и отключите устройство от компьютера.

Рис. 3. Как можно найти VID и PID устройства USB с помощью Менеджера Устройств Windows.
Для устройства Creative Webcam значения vendor ID и product ID будут 0x041E и 0x4036 соответственно. Имейте в виду, что значения vendor ID и product ID будут различаться для Вашего устройства в зависимости от его производителя и модели.
Установка INF-файлов отличается в зависимости от версии Windows. Из-за этих различий между Windows 2000/XP и Windows Vista/7 мастер драйвера NI-VISA создаст два INF-файла для каждой из этих двух групп операционных систем. В начале INF-файла будут даны инструкции по установке драйвер. INF-файлы это обычные текстовые файлы ASCII, поэтому их можно просто просмотреть или даже отредактировать обычным текстовым редактором, таким как Notepad (Блокнот). Подробную информацию о том, как следует установить Ваш INF-файл, прочитайте в заголовке этого файла. Это руководство подразумевает, что Вы используете Windows 7.
1. Чтобы установить INF-файлы на Windows 7, убедитесь, что Вы работаете с правами учетной записи Администратора (Administrator).
2. Пока Вам нужно отключить устройство USB, чтобы драйверы правильно были с ним ассоциированы при установке.
3. Сделайте копию INF-файла в папку INF. На Windows 7 это папка обычно находится в каталоге C:\WINDOWS\INF. Имейте в виду, что эта папка может быть скрыта от просмотра в Проводнике (hidden), поэтому используйте продвинутый менеджер файлов наподобие Total Commander для получения доступа к ней. Либо Вам нужно поменять опции, чтобы иметь возможность видеть скрытые элементы каталога. Для этого в Проводнике выберите в меню Tools -> Folder Options -> View -> Advanced Settings, и выберите Show hidden files, folders, and drives.
4. Выполните правый клик на INF-файле в каталоге C:\WINDOWS\INF и кликните Install (Установить). Это действие создаст PNF-файл для Вашего устройства. Теперь Вы готовы установить устройство USB.
5. Подключите устройство USB. Windows должна обнаружить Ваше устройство USB, при этом автоматически откроется окно Add New Hardware Wizard. После некоторого времени периода установки Windows должна сообщить об успешной установке устройства.
Замечание: в некоторых случаях у Windows может быть драйвер по умолчанию, уже привязанный к Вашему устройству USB. В этом случае Windows сначала установит именно этот драйвер (например, если Ваше устройство относится к классу устройств USB HID). Когда Вы подключили устройство USB, и Windows установила для него драйвер по умолчанию, откройте Менеджер Устройств (Device Manager) ярлычок его находится в Панели Управления (Control Panel). В Менеджере Устройств разверните категорию дерева, относящуюся к Вашему устройству, например Устройства HID (Human Interface Devices).
Кликните правой кнопкой на Вашем устройстве USB, и в контекстном меню выберите Update Driver Software (Обновить драйверы. ).
На первом экране выберите «Browse my computer for driver software» (диалог для выбора каталога, где находится драйвер, в нашем случае это папка, где находится сгенерированный INF-файл). На втором экране кликните Let me pick from a list of drivers on my computer (разрешить выбор драйвера на моем компьютере). Третий экран показан на рис. 8, кликните Have Disk. выберите путь до папки C:\WINDOWS\INF, и кликните OK. Убедитесь в окне рис. 8, что выбрали устройство, и кликните Next. Windows может выдать предупреждение о том, что драйвер не проверен цифровой подписью, выберите «Install the driver anyways» (все равно установить драйвер).

Рис. 8. Выбор драйвера для устройства USB.
1. Откройте утилиту Measurement & Automation Explorer (NI-MAX). Выберите в меню Tools -> Refresh для гарантии, что Ваше устройство USB появится в списке. Устройство должно быть перечислено в разделе Devices and Interfaces, как это показано на рис. 9. Теперь Ваше устройство USB установлено и сконфигурировано для использования совместно с NI-VISA.
После того, как выбрано USB устройство, можно отобразить его информацию путем клика на закладку USB в нижней части окна. Вы можете просмотреть такую информацию о Вашем устройстве, как идентификатор производителя (manufacturer ID), код модели (model code) и серийный номер (serial number).

Рис. 9. Устройство USB, показанное в утилите NI MAX.
2. Для коммуникации с Вашим устройством через VISA, используйте VISA instrument descriptor для этого устройства. Дескриптор устройства USB INSTR имеет формат:
USB[board]:: manufacturer ID:: model code:: serial number[:: USB interface number]::INSTR
Дескриптор устройства USB RAW имеет формат:
USB[board]:: manufacturer ID:: model code:: serial number[:: USB interface number]::RAW
По спецификации USBTMC все устройства должны иметь серийный номер. У некоторых устройств USB RAW может не быть серийного номера. Если серийного номера нет, то NI-VISA автоматически присвоит специфический серийный номер для устройства, как показано на рис. 9. Формат такого серийного номера NI-VISA-#, где # это автоматически сгенерированное число.
У некоторых устройств USB есть несколько интерфейсов. Это подобно плате (устройству) PCI, которая обрабатывает несколько функций. Если Ваше устройство USB поддерживает только один интерфейс (самый частый случай) не нужно добавлять номер интерфейса USB.
Creative Webcam в этом примере использует класс RAW и пару идентификаторов VID/PID 0x041E/0x4036. Для Creative Webcam тогда получится следующий дескриптор:
USB0::0x041E::0x12C0::NI-VISA-20002::RAW
Для проверки коммуникации откройте утилиту NI-MAX. Выберите Tools -> NI-VISA -> VISA Interactive Control. Должно открыться окно приблизительно как показано на рис. 10.

Рис. 10. VISA Interactive Control.
3. Утилита VISA Interactive Control (VISAIC) предназначена для простого обмена с любым ресурсом VISA. После того, как устройство USB сконфигурировано для использования VISA, оно должно быть перечислено в ветке USB. Выполните двойной клик на устройстве окна 10, чтобы открыть сессию VISA с устройством. Откроется окно, показанное на рис. 11.

Рис. 11. Открытая сессия VISA Interactive Control.
Когда Вы открыли в утилите VISAIC сессию VISA, автоматически выберется секция Configuration и закладка USB Settings. Чтобы прочитать свойства устройства, выберите закладку View Attributes. Это отобразит список атрибутов устройства, включая информацию наподобие Resource Name.
Для получения информации по использованию VISAIC см. [5], для информации по NI-VISA API см. NI-VISA Help и руководство [3]. Для получения списка допустимых команд для Вашего устройства обратитесь за информацией к его производителю.
[Использование NI-VISA для обмена с устройством USB]
В этой секции объясняется, как осуществить коммуникацию с Вашим устройством USB, используя NI-VISA 3.0 и более свежую версию. Как уже упоминалось, в контексте API NI-VISA существует 2 класса устройств USB, отличающихся по методу доступа к USB-устройству.
Класс USB INSTR (USBTMC). Устройства, удовлетворяющие спецификации USB Test and Measurement Class (USBTMC), используют класс NI-VISA USB INSTR. Эти устройства осуществляют коммуникацию в стиле IEEE-488.2. Для этих устройств Вы можете просто вызывать функции VISA Open, VISA Close, VISA Read и VISA Write точно так же, как если бы Вы общались с приборами GPIB.
На рис. 12 показан виртуальный инструмент (VI) системы LabVIEW, который обменивается данными с устройством USBTMC. В этом примере открывается сессия VISA к устройству USB. Команда записывается в устройство, и от устройства читается его обратно пришедший ответ. В этом примере посылается специальная команда для опроса ID устройства. Для получения полного списка команд обратитесь к производителю устройства. После того, как все коммуникации завершены, сессия VISA закрывается.

Рис. 12. Блок-схема примера работы с устройством USB USBTMC в среде LabVIEW.
Класс USB RAW. В этом случае обмен несколько сложнее, потому что каждое устройство USB может использовать свой собственный протокол обмена данными. Подробности реализации протокола узнавайте у производителя Вашего устройства.
Шина USB реализует обмен по каналам 4 типов (канал называется pipe, или конечная точка, endpoint, EP): конечная точка управления (control EP), конечная точка буфера (bulk EP), конечная точка прерывания (interrupt EP) и изохронная конечная точка (isochronous EP). Передача через каждый тип EP переносит разный вид информации. Кроме того, может существовать любое количество конечных точек любого типа (кроме control EP). Можно представить себе EP как коммуникационное подключение (сетевой сокет). Кроме того, EP могут работать в двух направлениях передачи: EP IN передают данные из устройства USB в хост USB (компьютер PC), и EP OUT передают данные в обратном направлении — из хоста USB к устройству USB (направления IN и OUT обозначаются по отношению к хосту USB). Подробнее про устройство архитектуры USB см. [9].
NI-VISA поддерживает 3 типа канала USB: control, bulk и interrupt. Когда NI-VISA определяет Ваше устройство USB, она автоматически сканирует его для поиска EP с самым малым доступным номером для каждого типа EP.
Когда библиотека VISA определила EP с самым малым доступным номером, она назначает это значение соответствующему атрибуту VISA. EP типа bulk IN и EP bulk OUT сохраняются соответственно в атрибутах VI_ATTR_USB_BULK_IN_PIPE и VI_ATTR_USB_BULK_OUT_PIPE. EP interrupt IN и сохраняется в атрибуте VI_ATTR_USB_INTR_IN_PIPE. Значение -1 показывает, что устройство USB не поддерживает этот тип канала (EP). Для канала управления (control pipe) поддерживается только EP номер 0. Если Вы используете API языка C, то используйте функцию viSetAttribute чтобы поменять конечные точки. В среде LabVIEW используйте запись свойства узла VISA (Write VISA Property node).
NI-VISA включает 4 функции для передачи данных через каналы USB. Перед тем, как Вы сможете осуществить обмен с использованием этих функций, Вам нужно настроить коммуникационный протокол с помощью атрибутов VISA USB. В следующем списке показано применение этих функций.
• Используйте VISA USB Control In и VISA USB Control Out для передачи данных через канал управления (control pipe или control EP).
• Для передачи данных через bulk pipe используйте VISA Read и VISA Write.
Если Вы используете LabVIEW, то VISA включает дополнительную функцию для использования interrupt pipe: VISA Get USB Interrupt Data. На API языка C можно выполнить это путем доступа к атрибутам VI_ATTR_USB_RECV_INTR_SIZE и VI_ATTR_USB_RECV_INTR_DATA объекта события VI_EVENT_USB_INTR. Для дополнительной информации о событиях VISA см. NI-VISA Help и документацию [3].
[USB на операционных системах Linux® и Mac]
Linux. NI-VISA при поддержке USB полагается на функции ядра Linux. Эта функция называется usbfs (USB Device Filesystem [6]), и на более старых ядрах Linux это называлось usbdevfs. Чтобы NI-VISA могла поддерживать устройства USB, эта функция должна присутствовать и должна быть смонтирована (наподобие виртуальной файловой системы). Это поддерживается большинством популярных дистрибутивов Linux, таких как Red Hat, SuSE и Mandrake. Вы можете использовать команду mount, чтобы отобразить смонтированные в настоящий момент файловые системы, поддерживающие эту функцию.
Также пользователь VISA должен иметь права записи в файл, представляющий устройство USB. Такой файл обычно находится в подкаталоге папки /proc/bus/usb. Если эти условия не соблюдаются, то устройство USB недоступно для VISA (устройство нельзя найти через функцию viFindRsrc, и вызов viOpen завершится с ошибкой). По умолчанию доступ на запись к устройствам USB имеет пользователь root, но другим пользователям такой доступ не разрешен.
Есть несколько вариантов, как предоставить не-root пользователю доступ к устройству USB.
• Использовать пакет hotplug. Этот пакет по умолчанию устанавливается на большинстве дистрибутивов, включая Red Hat, SuSE и Mandrake. Пакет hotplug позволяет пользователю запускать скрипты для определенного устройства USB, основываясь на таких его характеристиках, как Vendor ID (VID) и Product ID (PID). Если пакет hotplug существует, то инсталлятор NI-VISA по умолчанию установит скрипты для предоставления пользователям доступа на запись во все устройства USBTMC, и рабочее окружения для устройств USB RAW. Чтобы добавить разрешения на запись определенного устройства USB RAW, запустите предоставленный скрипт:
< VXIPNPPATH>/linux/NIvisa/USB/AddUsbRawPermissions.sh
Для дополнительной информации по пакету hotplug см. [7].
• usbfs (ранее эта файловая система была известна как usbdevfs) может быть смонтирована с опцией devmode=0666 . Это дает всем пользователям доступ на чтение и запись всех устройств USB.
• Пользователь root может добавить права на запись в файл, который представляет устройство USB, которое обычно находится в пределах подкаталога /proc/bus/usb. К сожалению, эти разрешения теряются, когда устройство отключается. Таким образом, использовать этот способ представления доступа не рекомендуется.
Mac OS X. Пока другие драйверы в системе не претендуют на устройство USB, Вы можете использовать NI-VISA для доступа к нему. Никакая специальная настройка не требуется.
[Ссылки]
1. USB Instrument Control Tutorial site:ni.com.
2. GPIB, последовательный интерфейс и Ethernet site:ni.com.
3. NI-VISA™ User Manual site:ni.com.
4. Getting Started with Instrument Control using USB site:ni.com.
5. VISA Interactive Control (VISAIC) site:ni.com.
6. USB Device Filesystem site:linux-usb.org.
7. Linux Hotplugging site:linux-hotplug.sourceforge.net.
8. NI-VISA: примеры программирования генераторов SDG/АКИП.
9. USB in a NutShell — путеводитель по стандарту USB (начало).
Ni visa что это
Библиотека NI-VISA .NET содержит классы, которые предоставляют интерфейс .NET к NI-VISA [2]. Эта библиотека совместима со стандартом VISA Implementation Specification for .NET (VPP-4.3.6), разработанным организацией IVI Foundation. Она заменяет библиотеку VisaNS компании National Instruments, которая была реализована до того, как IVI Foundation стандартизовала .NET API для VISA. NI-VISA это реализация индустриального стандарта Virtual Instrumentation Software Architecture (VISA) от компании National Instruments. Спецификации VISA и VISA .NET вместе определяют стандартный, целостный API для коммуникации с инструментами (приборами) и другими устройствами в рабочем окружении .NET. NI-VISA .NET поддерживает несколько технологий шин и интерфейсов подключения, включая TCP/IP, USB, GPIB, Serial и PCI/PXI. Классы, предоставленные библиотекой NI-VISA .NET, реализуют интерфейсы и используют типы, которые определены в библиотеке IVI VISA .NET (Ivi.Visa), предоставленной IVI Foundation. Подробнее про библиотеку IVI VISA .NET см. спецификацию VPP-4.3.6 [3].
[Выбор Instrument Control API]
В типовом приложении National Instruments рекомендует использовать инструментальный драйвер, специфичный для Вашего инструмента (прибора), если таковой драйвер имеется. Используйте библиотеку NI-VISA .NET только если такого драйвера нет, или если нужно получить доступ к дополнительным функциям, не реализованным в специальном драйвере прибора.
[Совместная работа NI-VISA .NET и драйвера NI-VISA]
Пространство имен (namespace) NationalInstruments.Visa включает классы .NET, предоставляющие богатый, объектно-ориентированный интерфейс к драйверу NI-VISA. Объект сессии VISA это фундаментальная концепция в спецификации VISA API. Сессия VISA идентифицирует ресурс. Есть несколько типов ресурсов, включая instrument resources, socket resources и interface resources. В библиотеке классов NI-VISA .NET классы, которые произведены от класса Session , называются классами «Session-derived», они инкапсулируют в себе объекты сессии VISA (что такое ресурс, сессия, см. [2]).
Методы Session-derived классов выполняют разные операции, такие как например чтение или запись данных из/в объект сессии VISA. Методы классов NI-VISA .NET отображаются на операции NI-VISA API на языке C (NI-VISA C API). Свойства Session-derived классов конфигурируют объект сессии VISA, отображаясь на атрибуты в NI-VISA C API.
Session-derived классы имеют члены событий .NET (event members). Вы можете регистрировать делегата с событием .NET, чтобы принять оповещение, когда произошло событие. Методы и свойства Session-derived класса выполняют проверку ошибок (error checking) и трансляцию кодов ошибок драйвера NI-VISA в типы исключений .NET (exception types).
Таким образом, классы NI-VISA .NET фактически являются обертками над вызовами функций драйвера NI-VISA.
[Использование Session-Derived классов]
Классы GpibSession , PxiSession , SerialSession , TcpipSession , TcpipSocket , UsbSession и VxiSession являются первичными (главными) в пространстве имен библиотеки NI-VISA .NET (NationalInstruments.Visa namespace). Эти Session-derived классы, которые также называются в этом документе как «leaf»-классы, косвенно унаследованы (derive indirectly) от класса Session. Эти классы предоставляют доступ к основному функционалу VISA. Каждый Session-derived класс представляет тип ресурса VISA. Каждый Session-derived класс предоставляет только те методы (methods), свойства (properties) и события (events), которые допустимы именно для этого Session-derived класса. GpibInterface , PxiBackplane , PxiMemory , UsbRaw , VxiBackplane и VxiMemory это дополнительные Session-derived leaf-классы для продвинутых приложений.
Чтобы обмениваться данными с ресурсом VISA в обычном приложении или библиотеке .NET, создайте экземпляр (instance) определенного Session-derived класса, который соответствует ресурсу. Установите свойства у этого экземпляра, чтобы сконфигурировать ресурс. Вызовите методы экземпляра для того, чтобы прочитать данные из ресурса или записать данные в него. Вы должны вызвать Dispose, чтобы освободить ресурс, когда доступ к нему больше не нужен.
Некоторые типы приложений или библиотек, такие как драйверы инструмента (instrument drivers), должны обращаться к ресурсам специальным способом, не зависящем от интерфейса подключения (interface-independent). NI-VISA .NET включает дополнительные классы, которые Вы можете использовать для получения доступа к ресурсам VISA таким интерфейсно-независимым способом. Например, чтобы создать объект, Вы можете использовать использовать для обмена с инструментом интерфейс GPIB или Serial, для этого вызовите Open и сделайте приведение типа возвращенного значения (cast) к типу MessageBasedSession .
[Операции ввода/вывода (I/O Operations)]
Основной набор операций, которые Вы производите с Session-derived объектом, это операции ввода/вывода (input/output, I/O). Операции, которые Вы используете для ресурсов, основанных на сообщениях (message-based resources) отличаются от методов, которые Вы используете на ресурсах, основанных на регистрах (register-based resources). Каждый Session-derived leaf-класс предоставляет только методы I/O, которые являются подходящими для ресурса, представляющего этот Session-derived класс.
Для обмена данными с message-based ресурсами Вы должны передать строки или массивы байт между приложением и ресурсом. В качестве примера, инструмент GPIB использует message-based ресурс. Для обмена данными с register-based ресурсом Вы должны установить регистры на ресурсе, или напрямую обратиться к памяти, которую экспортирует этот ресурс. Примером такого register-based ресурса является инструмент PXI.
[Простые Message-Based операции I/O]
Session-derived классы, представляющие message-based ресурсы, включают свойство RawIO . Оно представляет методы, которые Вы можете использовать для чтения из message-based ресурсов или записи в них. Объект RawIO предоставляет как синхронные, так и асинхронные методы чтения и записи. Синхронные методы выполнят всю операцию полностью, и выполнят возврат только по завершению запрошенной операции, т. е. заблокируют на время выполнения операции поток, вызвавший синхронный метод. Асинхронные методы, наоборот, запускают выполнение операции и немедленно делают возврат, не блокируя работу вызвавшего потока. Когда операция завершится, будет вызван делегат, который Вы предоставляете для хранения данных, пока Вы их не запросите.
Используйте ReadString для синхронного чтения строки из ресурса. Используйте Read для синхронного чтения двоичных данных из ресурса. Используйте BeginRead для запуска асинхронной операции чтения. Используйте EndReadString или EndRead для получения результата асинхронной операции чтения.
Используйте Write для синхронной записи в ресурс строки или массива двоичный данных. Используйте BeginWrite для запуска асинхронной операции записи. Используйте EndWrite , чтобы получить результат асинхронной операции записи.
[Форматированные Message-Based операции I/O]
Session-derived классы, которые представляют message-based ресурсы, включают свойство FormattedIO , предоставляющее высокоуровневые операции ввода/вывода с поддержкой форматирования. Их можно использовать для чтения из message-based ресурсов и для записи в них.
Используйте методы Write или WriteLine для синхронного форматирования и записи в ресурс текстовых сообщений. Используйте WriteBinary для отправки блоков двоичных данных. Используйте свойство BinaryEncoding , чтобы указать, как объект FormattedIO будет форматировать двоичные данные.
Используйте один из методов Read для синхронного чтения и парсинга текстовых сообщений и двоичных данных из ресурса. Различные методы Read включают функционал для чтения значений байта (byte), символа (character), числа плавающей точкой двойной точности (double), целого числа (integer) и числа с плавающей запятой (floating point). Например, ReadInt64 читает закодированное в ASCII значение Int64, и ReadDouble читает закодированное в ASCII значение Double. Используйте свойство BinaryEncoding , чтобы указать, как объект FormattedIO должен обрабатывать двоичные данные.
Используйте один из методов Printf для форматирования данных специальным образом и записи из в ресурс. Используйте один из методов Scanf для чтения форматированной строки из ресурса, и парсинга этой строки в соответствии с указанным форматом. Спецификаторы формата, предоставленные для методов Printf и Scanf, очень похожи на используемые для функций VISA viPrintf и viScanf , с некоторыми отличиями. Для дополнительной информации о методах FormattedIO и поддерживаемых спецификаторах формата см. описание IMessageBasedFormattedIO в спецификации VPP-4.3.6.
[Операции I/O, основанные на регистрах]
Session-derived классы, которые представляют основанные на регистрах (register-based) ресурсы, включают методы, которые используются для прямого чтения и записи памяти, которую экспортируют эти register-based ресурсы.
Используйте In8 , In16, In32 и In64 для чтения скалярных значений из памяти устройства. Используйте MoveIn8 , MoveIn16 , MoveIn32 и MoveIn64 для чтения массивов значений из памяти устройства.
Используйте Out8 , Out16 , Out32 и Out64 для записи скалярных значений в память устройства. Используйте MoveOut8 , MoveOut16 , MoveOut32 и MoveOut64 для записи массивов в память устройства.
[Использование обработки ошибок (Error Handling)]
Драйвер NI-VISA возвращает коды ошибок, которые показывают успех или сбой операции. Когда метод NI-VISA .NET вызывает метод или обращается к свойству, и это приводит к ошибке в драйвере NI-VISA, то класс .NET создает и возвращает исключение Ivi.Visa.NativeVisaException . Свойство ErrorCode в этом объекте исключения содержит код ошибки, который вернул драйвер NI-VISA при выполнении операции.
Различные методы MessageBasedSession для чтения и записи данных вернут Ivi.Visa.IOTimeoutException , если произойдет таймаут операции. Свойство ActualCount в этом исключении содержит количество элементов прочитанных или записанных перед тем, как произошел таймаут. Свойство ActualData в этом исключении содержит байты, прочитанные или записанные перед тем, как произошел таймаут.
Для получения списка всех кодов ошибок NI-VISA, обратитесь к теме Error Codes в системе подсказки (NI-VISA Help). Чтобы получить доступ к NI-VISA Help из меню Start, выберите Start -> Programs -> National Instruments -> VISA -> NI-VISA Help (на моем компьютере с Windows 7 путь выглядит так: Пуск -> Все программы -> National Instruments -> NI-VISA -> NI-VISA Documentation -> NI-VISA Help).
[Использование Менеджера Ресурсов]
Класс ResourceManager предоставляет функционал для нахождения, парсинга и открытия Session-derived классов по именам ресурсов. Используйте Open для создания экземпляра (instantiate) подходящего Session-derived класса в зависимости от имеющегося имени ресурса. Используйте Find , чтобы по указанному выражению для поиска (search expression) получить список доступных в домене приложения имен ресурсов. Используйте Parse , чтобы получить дополнительную информацию об имени ресурса.
Вы должны вызвать Dispose , чтобы освободить ресурс, когда к нему больше не нужен доступ. Любой Session-derived объект, инстанцированный с использованием метода Open, остается все еще действительным после освобождения (Dispose) ResourceManager.
NI-VISA .NET API похож на VisaNS API, и поддерживает большинство функций, которые предоставляет VisaNS. VisaNS это старый (legacy) .NET API для VISA, созданный National Instruments до появления стандартной спецификации. National Instruments рекомендует Вам использовать стандартный NI-VISA .NET API вместо VisaNS для любого нового разрабатываемого приложения. Поддержка VisaNS API будет удалена в будущем релизе.
Дополнительно есть возможность модифицировать приложения, которые используют VisaNS API, для использования вместо этого стандартного NI-VISA .NET API. Например, поддерживаемые Session-derived классы в новом API именованы одинаково и имеют похожие конструкторы. Однако из-за того, что новый API реализует интерфейсы, указанные спецификацией IVI, и использует некоторые типы, определенные в этой спецификации, реальные члены этих Session-derived классов отличаются от членов в VisaNS, и поэтому потребуются ручные изменения в Ваших приложениях для миграции с библиотеки VisaNS на библиотеку NI-VISA .NET. В некоторых случаях, таких как функционал форматированного ввода/вывода (formatted I/O), новый API значительно отличается от VisaNS, и может потребовать больших изменений для миграции.
Некоторые функции, поддерживаемые VisaNS API, не поддерживаются или поддерживаются по-другому в NI-VISA .NET API. Некоторые из основных различий описаны ниже.
• Операции Message-based I/O предоставляются по-другому. Простые message-based операции, такие как ReadString или Write, которые реализованы некоторыми Session-derived классами в VisaNS, теперь предоставлены свойством RawIO в интерфейсе Ivi.Visa.IMessageBasedSession, который реализуют некоторые Session-derived классы. Свойство RawIO имеет тип, который реализует интерфейс Ivi.Visa.IMessageBasedRawIO.
Подобным образом форматированные message-based операции, которые реализованы MessageBasedSessionReader и MessageBasedSessionWriter в VisaNS, теперь предоставляются свойством FormattedIO в интерфейсе Ivi.Visa.IMessageBasedSession, который реализуют некоторые Session-derived классы. Свойство FormattedIO имеет тип, который реализует интерфейс Ivi.Visa.IMessageBasedFormattedIO.
• Другие спецификаторы формата для formatted I/O. Методы форматированного ввода/вывода (formatted I/O) в VisaNS поддерживают строки формата для использования методом String.Format. Однако NI-VISA .NET поддерживает строки формата со спецификаторами формата, подобными используемым в функциях VISA viPrintf и viScanf. Для дополнительной информации по методам FormattedIO и поддерживаемым спецификаторам формата см. описание интерфейса Ivi.Visa.IMessageBasedFormattedIO в спецификации VPP-4.3.6.
• Класс ResourceManager стал освобождаемым (disposable). Класс менеджера ресурсов теперь используется по-другому. Чтобы получить экземпляр (instance) объекта ResourceManager, сконструируйте новый экземпляр с использованием public-конструктора ResourceManager(). Объект ResourceManager является освобождаемым (он одноразовый, disposable), и должен быть уничтожен, когда он больше не нужен. Обратите внимание, что Session-derived объект, полученный методом Open менеджера ресурсов, остается действительным даже после того, как объект ResourceManager был уничтожен.
• По-другому поддерживаются нестандартные типы события (VISA event types). Члены событий .NET (event members), доступные в различных Session-derived классах, могут использоваться для регистрации методов делегата (delegate methods), чтобы принимать оповещения о возникновении стандартных типов событий (standard VISA events types). Использование нестандартных типов событий с делегатом события не поддерживается, и такие события могут быть только разрешены с использованием метода EnableEvent в классе Session, которые использует механизм очереди, доступный в драйвере NI-VISA. Оповещения о таких событиях могут быть приняты с использованием метода WaitOnEvent класса Session.
• Не поддерживается .NET Remoting. API .NET Remoting считается устаревшей технологией, и не рекомендуется компанией Microsoft для использования в новых приложениях. NI-VISA .NET не предоставляет поддержку .NET Remoting. Сервер NI-VISA предоставляет способ дистанционно получить доступ к ресурсам VISA, и это может использоваться как альтернатива .NET Remoting.
• Session-derived leaf-классы изолированы. Leaf-классы, такие как GpibSession или TcpipSession, изолированы от других классов, и другие классы не могут быть произведены (derived) от них.
• Не поддерживается FirewireSession. Драйвер NI-VISA больше не поддерживает ресурсы FireWire, и как результат библиотека NI-VISA .NET не предоставляет Session-derived класс для таких ресурсов.
Для дополнительной информации по NI-VISA .NET API загрузите и распакуйте файл NINETVisa.zip, и следуйте инструкциям в файле readme.txt, чтобы посмотреть NINETVisa.chm.
[Дополнительные ресурсы]
• Documentation: National Instruments .NET Support site:ni.com
• Tutorial: C# and Visual Basic .NET Instrument Control Tutorial site:ni.com
• Product Manual: NI-VISA Programmer Reference Manual site:ni.com
• Download: NI-VISA site:ni.com
• Tutorial: C# Instrument Control site:ni.com
После установки пакета NI-VISA [4] примеры приложений можно найти в папке «C:\Users\Public\Documents\National Instruments\NI-VISA\Examples\.NET» (Пользователи -> Общие -> Общие документы -> National Instruments -> NI-VISA -> Examples -> .NET -> 17.0).
[Ссылки]
1. National Instruments VISA .NET Library site:ni.com.
2. Обзор NI-VISA.
3. VPP-4.3.6: VISA Implementation Specification for .NET site:ivifoundation.org.
4. 171213NI-VISA-170.ZIP — пакет NI-VISA версии 17.0.
5. NI-VISA: примеры программирования генераторов SVG/АКИП.
6. NI-VISA and Operating System Compatibility site:ni.com.