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

RI_SDK_CreateDeviceComponent

Информация

RI_SDK - библиотека Robo Intellect Software Development Kit
CreateDeviceComponent - название метода создания компонента уровня устройства

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

RI_SDK_CreateDeviceComponent(group, deviceName, descriptor,  errorText):errorCode

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

Создает и записывает в реестр библиотеки компонент уровня устройства. Это третий уровень абстракции. Такие компоненты реализуют методы управления своими устройствами. Компонент уровня устройства можно расширить до конкретной модели соответствующего устройства.

Без этого расширения, использование методов управления устройством невозможно, так как именно модель содержит значения параметров, необходимых для управления

Доступные устройства:

  1. i2c_adapter - i2c адаптер
  2. pwm - ШИМ модулятор
  3. servodrive - сервопривод
  4. servodrive_rotate - сервопривод вращения
  5. led - светодиод
  6. voltage_sensor - датчик тока, напряжения и мощности

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

ПараметрТип для Shared objectТип для Golang gRPCОписание
groupchar[] (тип C)stringТип компонента ("executor", "connector", "sensor")
deviceNamechar[] (тип C)stringУстройство компонента ("i2c", "pwm", "servodrive", "led", "voltage_sensor", "servodrive_rotate")
descriptor*int (тип C)int64Указатель на компонент, который будет создан
errorTextchar[1000] (тип C)stringТекст ошибки (передается как параметр, если происходит ошибка метод записывает в этот параметр текст ошибки)
errorCodeint (тип C)int64Код ошибки

Примеры

Пример №1 - Создание компонента устройства i2c адаптера

В данном примере осуществляется создание компонента устройства i2c адаптера и выводится значение дескриптора, которое было присвоено компоненту при его создании.

# Создание компонента i2c адаптера
errCode = lib.RI_SDK_CreateDeviceComponent("connector".encode(), "i2c_adapter".encode(), descriptor, errTextC)
if errCode != 0:
print(errCode, errTextC.raw.decode())
sys.exit(2)

print("descriptor: ", descriptor.value)

Полный текст примера

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]

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

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

# Создание компонента i2c адаптера
errCode = lib.RI_SDK_CreateDeviceComponent("connector".encode(), "i2c_adapter".encode(), descriptor, errTextC)
if errCode != 0:
print(errCode, errTextC.raw.decode())
sys.exit(2)

print("descriptor: ", descriptor.value)

print("Success")

main()