Документация Engee

Программное управление VISA

На этой странице представлены все доступные функции программного управления VISA в Engee.

Чтобы работать с функциями программного управления VISA в Engee, следуйте инструкциям, указанным в статье. После выполните:

using Main.EngeeDeviceManager.Devices.VISA

Далее необходимо создать объект VISA, который будет использоваться для взаимодействия с измерительными приборами:

visa = VISA.Visa()

Методы VISA

visa.close_instrument(port)

Освобождает шину для прибора, подключенного через спецификацию VISA.

Аргументы

port::String: порт прибора, подключенного через спецификацию VISA. Можно получить с помощью функции visa.get_ports().

Примеры

visa = VISA.Visa()
visa.create_session("@py")
ports = visa.get_ports().data
port = last(ports)
visa.create_instrument(port)
visa.close_instrument(port)
visa.close_session()

Закрывает сессию работы с VISA.

Аргументы

Отсутствуют (метод вызывается от объекта VISA).

Примеры

visa = VISA.Visa()
visa.create_session("@py")
ports = visa.get_ports().data
port = last(ports)
visa.close_session()
visa.create_instrument(port)
visa.create_instrument(port, settings)

Создает экземпляр прибора, подключенного по указанному порту.

Аргументы

  • port::String: порт прибора, подключенного через спецификацию VISA. Можно получить с помощью функции visa.get_ports().

  • settings::PortSettings: параметры соединения. Если поле установлено в nothing, то используется значение драйвера/прибора по умолчанию.

Структура PortSettings

Base.@kwdef mutable struct PortSettings
        baud_rate::Union{Int64, Nothing} = nothing
        chunk_size::Union{Int64, Nothing} = nothing
        write_termination::Union{String, Nothing} = nothing
        read_terminator::Union{String, Nothing} = nothing
        CR::Union{String, Nothing} = nothing
        LF::Union{String, Nothing} = nothing
end

здесь:

  • baud_rate: скорость передачи через COM интерфейс.

  • chunk_size: размер блока чтения (чанк). (Некоторые serial устройства не поддерживают большие значения чанков. При возникновении проблем уменьшайте значение параметра chunk_size).

  • write_termination: символ(ы) завершения конца байтовой последовательности для записи, например "\r", \n, \r\n.

  • read_terminator: символ(ы) завершения конца байтовой последовательности для чтения, например "\n" или \r\n.

  • CR: управляющий символ возврата каретки ("\r") при потоковой записи/чтении.

  • LF: управляющий символ перевода строки ("\n") при потоковой записи/чтении.

Примеры

# Классическое создание экземпляра прибора
visa = VISA.Visa()
visa.create_session("@py")
ports = visa.get_ports().data
port = last(ports)
visa.create_instrument(port)

# Создание экземпляра с параметрами PortSettings
visa = VISA.Visa()
visa.create_session("@py")
ports = visa.get_ports().data
port = last(ports)

visa.create_instrument(port, VISA.PortSettings(
    baud_rate = 115200,
    chunk_size = 256,
    write_termination = "\r\n",
    read_terminator  = "\n",
    CR = "\r",
    LF = "\n",
))
visa.create_session(backend)

Создает сессию для работы с VISA.

Аргументы

backend::String: аппаратная реализация спецификации VISA, например, "@py" или "@ni".

Примеры

visa = VISA.Visa()
visa.create_session("@py")
visa.flush(port, flush_type)

Очищает I/O буфера прибора.

Аргументы

  • port::String: порт прибора, подключенного через спецификацию VISA. Можно получить с помощью функции visa.get_ports().

  • flush_type::String: тип очистки. Например: "flush_write_buffer" или "flush_transmit_buffer".

Примеры

visa = VISA.Visa()
visa.create_session("@py")
ports = visa.get_ports().data
port = last(ports)
visa.create_instrument(port)
visa.flush(port, "flush_write_buffer")
visa.get_ports()

Получает список доступных физических портов.

Аргументы

Отсутствуют (метод вызывается от объекта VISA).

Примеры

visa = VISA.Visa()
visa.create_session("@py")
ports = visa.get_ports().data
visa.read(port, termination)

Читает данные с прибора.

Аргументы

  • port::String: порт прибора, подключенного через спецификацию VISA. Можно получить с помощью функции visa.get_ports().

  • termination::String: символ завершения чтения, специфичный для прибора. Если не определен, то нужно оставить пустым "".

Примеры

visa = VISA.Visa()
visa.create_session("@py")
ports = visa.get_ports().data
port = last(ports)
read_result = visa.read(port, "").data
visa.readbinblock(port, size)

Читает бинарные данные с прибора.

Аргументы

  • port::String: порт прибора, подключенного через спецификацию VISA. Можно получить с помощью функции visa.get_ports().

  • size::Int64: размер буфера для считывания байт, например: 8.

Примеры

visa = VISA.Visa()
visa.create_session("@py")
ports = visa.get_ports().data
port = last(ports)
bytes = visa.readbinblock(port, 8).data
visa.visatrigger(port)

Подает команды прерывания в прибор.

Аргументы

port::String: порт прибора, подключенного через спецификацию VISA. Можно получить с помощью функции visa.get_ports().

Примеры

visa = VISA.Visa()
visa.create_session("@py")
ports = visa.get_ports().data
port = last(ports)
visa.visatrigger(port)
visa.write(port, message, termination)

Записывает сообщения в прибор.

Аргументы

  • port::String: порт прибора, подключенного через спецификацию VISA. Можно получить с помощью функции visa.get_ports(visa::Any).

  • message::String: сообщение со SCPI командой. Например: "RST;:SYSTEM:LOCK OFF" для сброса настроек.

  • termination::String: символ завершения записи, специфичный для прибора. Если не определен, то нужно оставить пустым "".

Примеры

visa = VISA.Visa()
visa.create_session("@py")
ports = visa.get_ports().data
port = last(ports)
visa.create_instrument(port)
numbytes = visa.write(port, "*RST;:SYSTEM:LOCK OFF", "").data
visa.writebinblock(port, message)

Записывает бинарные данные в прибор.

Аргументы

  • port::String: порт прибора, подключенного через спецификацию VISA. Можно получить с помощью функции visa.get_ports().

  • message::Vector{UInt8}: бинарные данные для записи. Например: [0x01, 0x00].

Примеры

visa = VISA.Visa()
visa.create_session("@py")
ports = visa.get_ports().data
port = last(ports)
numbytes = visa.writebinblock(port, [0x01, 0x00]).data
visa.writeread(port, message, delay)

Записывает в прибор и читает ответ.

Аргументы

  • port::String: порт прибора, подключенного через спецификацию VISA. Можно получить с помощью функции visa.get_ports().

  • message::String: сообщение со SCPI командой. Например: ":CHAN1:BASE:WAV?" вернет тип сигнала в первом канале.

  • delay::Float64: задержка для получения ответа с прибора (оптимальное значение 1.0, для старых приборов до 1.5). Подробнее о задержке отклика читайте в документации используемого прибора.

Примеры

visa = VISA.Visa()
visa.create_session("@py")
ports = visa.get_ports().data
port = last(ports)
writeread_result = visa.writeread(port, ":CHAN1:BASE:WAV?", 1.2).data