Программное управление VISA
На этой странице представлены все доступные функции программного управления VISA в Engee.
|
Чтобы работать с функциями программного управления VISA в Engee, следуйте инструкциям, указанным в статье. После выполните:
Далее необходимо создать объект VISA, который будет использоваться для взаимодействия с измерительными приборами:
|
Методы VISA
#
EngeeDeviceManager.Devices.VISA.Visa — Type
#
EngeeDeviceManager.Devices.VISA.close_instrument — Method
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)
#
EngeeDeviceManager.Devices.VISA.close_session — Method
visa.close_session()
Закрывает сессию работы с VISA.
Аргументы
Отсутствуют (метод вызывается от объекта VISA).
Примеры
visa = VISA.Visa()
visa.create_session("@py")
ports = visa.get_ports().data
port = last(ports)
visa.close_session()
#
EngeeDeviceManager.Devices.VISA.create_instrument — Method
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",
))
#
EngeeDeviceManager.Devices.VISA.create_instrument — Method
#
EngeeDeviceManager.Devices.VISA.create_session — Method
visa.create_session(backend)
Создает сессию для работы с VISA.
Аргументы
backend::String: аппаратная реализация спецификации VISA, например, "@py" или "@ni".
Примеры
visa = VISA.Visa()
visa.create_session("@py")
#
EngeeDeviceManager.Devices.VISA.flush — Method
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")
#
EngeeDeviceManager.Devices.VISA.get_ports — Method
visa.get_ports()
Получает список доступных физических портов.
Аргументы
Отсутствуют (метод вызывается от объекта VISA).
Примеры
visa = VISA.Visa()
visa.create_session("@py")
ports = visa.get_ports().data
#
EngeeDeviceManager.Devices.VISA.read — Function
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
#
EngeeDeviceManager.Devices.VISA.readbinblock — Method
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
#
EngeeDeviceManager.Devices.VISA.set_settings — Method
#
EngeeDeviceManager.Devices.VISA.visatrigger — Method
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)
#
EngeeDeviceManager.Devices.VISA.write — Function
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
#
EngeeDeviceManager.Devices.VISA.writebinblock — Method
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
#
EngeeDeviceManager.Devices.VISA.writeread — Function
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