Программное управление VISA
На этой странице представлены все доступные функции программного управления VISA в Engee.
Чтобы работать с функциями программного управления VISA в Engee, следуйте инструкциям, указанным в статье. После выполните:
Далее необходимо создать объект VISA, который будет использоваться для взаимодействия с измерительными приборами:
|
Методы VISA
#
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_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.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