Engee documentation

VISA Software Management

This page contains all the available VISA software management functions in Engee.

To work with VISA software management functions in Engee, follow the instructions given in article. After that, perform:

using Main.EngeeDeviceManager.Devices.VISA

Next, you need to create a VISA object that will be used to interact with measuring devices.:

visa = VISA.Visa()

Methods 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