Перейти к основному содержимому

RI_SDK_exec_RServoDrive_CustomDeviceInit

Информация

RI_SDK - библиотека Robo Intellect Software Development Kit
exec - название группы устройств исполнителей
RServoDrive - название устройства сервопривода вращения
CustomDeviceInit - название метода инициализации собственного компонента сервопривода вращения

Сигнатура функции

RI_SDK_exec_RServoDrive_CustomDeviceInit(descriptor, minPulseClockwise, maxPulseClockwise, minPulseCounterClockwise, maxPulseCounterClockwise, errorText):errorCode

Описание метода

Инициализация собственного компонента.

Инициализирует собственный компонент сервопривода вращения. Альтернатива функции RI_SDK_exec_RServoDrive_ExtendToModel.

Устанавливает значения минимального и максимального импульса для поворота по часовой и против часовой стрелки (мкс). Эти значение устанавливаются для сервопривода вращения с дескриптором descriptor.

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

Параметры и возвращаемые значения

ПараметрТип для Shared objectТип для Golang gRPCОписание
descriptorint (тип C)int64Дескриптор компонента сервопривода, который будет инициализирован
minPulseClockwiseint (тип C)int64Минимальное значение импульса (микросекунды) для поворота по часовой
maxPulseClockwiseint (тип C)int64Максимальное значение импульса (микросекунды) для поворота по часовой
minPulseCounterClockwiseint (тип C)int64Минимальное значение импульса (микросекунды) для поворота против часовой
maxPulseCounterClockwiseint (тип C)int64Максимальное значение импульса (микросекунды) для поворота против часовой
errorTextchar[1000] (тип C)stringТекст ошибки (передается как параметр, если происходит ошибка метод записывает в этот параметр текст ошибки)
errorCodeint (тип C)int64Код ошибки

Примеры

Пример №1 - Инициализация собственного компонента сервопривода вращения

В данном примере осуществляется инициализация собственного компонента сервопривода. Устанавливаются следующие значения:
Минимальное значение импульса для поворота по часовой - 400 микросекунд Максимальное значение импульса для поворота по часовой - 1420 микросекунд Минимальное значение импульса для поворота против часовой - 1540 микросекунд Максимальное значение импульса для поворота против часовой - 2560 микросекунд

# Инициализация собственной модели сервопривод вращения
# Минимальное значение импульса для поворота по часовой - 400 микросекунд
# Максимальное значение импульса для поворота по часовой - 1420 микросекунд
# Минимальное значение импульса для поворота против часовой - 1540 микросекунд
# Максимальное значение импульса для поворота против часовой - 2560 микросекунд
errCode = lib.RI_SDK_exec_RServoDrive_CustomDeviceInit(rservo, 400, 1420, 1540, 2560, errTextC)
if errCode != 0:
print(errCode, errTextC.raw.decode())
sys.exit(2)
Полный текст примера

from ctypes.util import find_library
import platform
import sys
from ctypes import *

# Подключаем внешнюю библиотеку для работы с SDK
platform = platform.system()
if platform == "Windows":
libName = "librisdk.dll"
if platform == "Linux":
libName = "librisdk.so"

pathLib = find_library(libName)
lib = cdll.LoadLibrary(pathLib)


# Указываем типы аргументов для функций библиотеки RI_SDK
lib.RI_SDK_InitSDK.argtypes = [c_int, c_char_p]
lib.RI_SDK_CreateDeviceComponent.argtypes = [c_char_p, c_char_p, POINTER(c_int), c_char_p]
lib.RI_SDK_exec_RServoDrive_CustomDeviceInit.argtypes = [c_int, c_int, c_int, c_int, c_int, c_char_p]

def main():
errTextC = create_string_buffer(1000) # Текст ошибки. C type: char*
rservo = c_int()

# Инициализация библиотеки RI SDK с уровнем логирования 3
errCode = lib.RI_SDK_InitSDK(3, errTextC)
if errCode != 0:
print(errCode, errTextC.raw.decode())
sys.exit(2)

# Создание компонента сервопривода вращения
errCode = lib.RI_SDK_CreateDeviceComponent("executor".encode(), "servodrive_rotate".encode(), rservo, errTextC)
if errCode != 0:
print(errCode, errTextC.raw.decode())
sys.exit(2)

print("rservo: ", rservo.value)

# Инициализация собственной модели сервопривод вращения
# Минимальное значение импульса для поворота по часовой - 400 микросекунд
# Максимальное значение импульса для поворота по часовой - 1420 микросекунд
# Минимальное значение импульса для поворота против часовой - 1540 микросекунд
# Максимальное значение импульса для поворота против часовой - 2560 микросекунд
errCode = lib.RI_SDK_exec_RServoDrive_CustomDeviceInit(rservo, 400, 1420, 1540, 2560, errTextC)
if errCode != 0:
print(errCode, errTextC.raw.decode())
sys.exit(2)

print("Success")

main()