Используйте коллбэки для коммуникации VISA

Можно улучшить степень и гибкость инструментального приложения управления при помощи событий и коллбэков. Событие имеет место после того, как условие соблюдают и может привести к одному или нескольким коллбэкам.

В то время как MATLAB® соединяется с инструментом, можно использовать события, чтобы отобразить сообщение, данные об отображении, анализировать данные, и так далее. Можно управлять коллбэками через configureCallback и функции обратного вызова. Функциями обратного вызова являются функции MATLAB, которые вы пишете, чтобы удовлетворить вашим определенным потребностям приложения.

Используйте События и коллбэки

Этот пример использует функцию обратного вызова mycallback читать из инструмента, когда терминатор строки доступен, чтобы быть считанным. Событие сгенерировано когда Terminator значение свойства читается. Задайте тип события и функцию обратного вызова, которая будет выполняться с помощью configureCallback функция. Задайте функцию обратного вызова как указатель на функцию.

function mycallback(src,evt)
   data = readline(src)
   disp(evt)
end
g = visadev("GPIB0::1::0::INSTR");
configureCallback(g,"terminator",@mycallback)
writeline(g,"*IDN?")

Получившееся отображение от mycallback показан ниже.

data = 

    "TEKTRONIX,TDS 210,0,CF:91.1CT FV:v1.16 TDS2CM:CMV:v1.04"

  DataAvailableInfo with properties:

    BytesAvailableFcnCount: 1
                   AbsTime: 1-Apr-2021 14:54:16

Закончите сеанс VISA-GPIB.

clear g

Event Types and Callback Properties

В следующей таблице перечислены visadev свойства и функции сопоставлены с коллбэками.

Свойство или функцияЦель
configureCallbackУстановите функцию обратного вызова и инициируйте условие для коммуникации
BytesAvailableFcnФункция обратного вызова, инициированная байтами доступное событие
BytesAvailableFcnCountКоличество байтов данных, чтобы инициировать коллбэк
BytesAvailableFcnModeБайты доступный триггерный режим коллбэка
ErrorOccurredFcnФункция обратного вызова инициирована ошибочным событием
UserDataСвойство общего назначения для пользовательских данных

Для получения дополнительной информации о конфигурировании этих свойств и функций, см. visadev Свойства.

Доступные для байтов режимы события

Доступное для байтов событие сразу сгенерировано после конкретного количества байтов доступны во входном буфере, или заданный символ терминатора строки читается, как определено BytesAvailableFcnMode свойство.

  • Если BytesAvailableFcnMode byte, доступное для байтов событие выполняет функцию обратного вызова, заданную для BytesAvailableFcn свойство каждый раз количество байтов задано BytesAvailableFcnCount хранится во входном буфере.

  • Если BytesAvailableFcnMode terminator, доступное для байтов событие выполняет функцию обратного вызова, заданную для BytesAvailableFcn свойство каждый раз символ задано Terminator свойство читается.

Ошибочное событие

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

Используйте События и коллбэки, чтобы отобразить информацию о событии

Этот пример расширяет Запись и Чтение Двоичных Данных при помощи пользовательской функции обратного вызова mycallback отобразить событийную информацию к командной строке, когда доступное для байтов событие имеет место во время бинарной операции чтения.

  1. Создайте функцию обратного вызова mycallback и сохраните его как.m файл в директории, в которой вы работаете.

    function mycallback(src,evt)
       disp(evt)
    end
  2. Создайте объект VISA-GPIB g сопоставленный с National Instruments ™® Контроллер GPIB с первичным адресом 1 и вторичным адресом 0.

    g = visadev("GPIB0::1::0::INSTR");
  3. Сконфигурируйте значение тайм-аута к двум минутам с учетом медленной передачи данных.

    g.Timeout = 120;

    Сконфигурируйте g выполнить функцию обратного вызова mycallback каждый раз 5 000 байтов хранятся во входном буфере.

    configureCallback(g,"byte",5000,@mycallback)
  4. Сконфигурируйте осциллограф, чтобы передать отображение на экране как битовый массив.

    writeline(g,"HARDCOPY:PORT GPIB")
    writeline(g,"HARDCOPY:FORMAT BMP")
    writeline(g,"HARDCOPY START")

    mycallback называется каждый раз, когда 5 000 байтов хранятся во входном буфере. Получившиеся отображения следующие.

      DataAvailableInfo with properties:
    
        BytesAvailableFcnCount: 5000
                       AbsTime: 1-Apr-2021 15:06:11
    
      DataAvailableInfo with properties:
    
        BytesAvailableFcnCount: 5000
                       AbsTime: 1-Apr-2021 15:06:16
    
      DataAvailableInfo with properties:
    
        BytesAvailableFcnCount: 5000
                       AbsTime: 1-Apr-2021 15:06:21
  5. После того, как все данные отправляются во входной буфер, передайте данные рабочему пространству MATLAB как 8-битные целые числа без знака.

    out = read(g,g.NumBytesAvailable,"uint8");
  6. Используйте clear отключать инструмент от объекта VISA-GPIB g и очистить его от рабочего пространства MATLAB, когда вы закончите работающего с ним.

    clear g

Смотрите также

Похожие темы