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

RI_SDK_CreateModelComponent

Информация

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

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

RI_SDK_CreateModelComponent(group, deviceName, modelName, descriptor,  errorTex):errorCode

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

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

Доступные модели:

  1. i2c адаптеры: cp2112, ch341
  2. ШИМ:: pca9685
  3. сервоприводы: mg90s, a0090, mg996, Corona DS929MG, Corona SB-9039, Corona DS843MG, Corona DS238MG
  4. сервоприводы вращения: mg996r
  5. светодиоды: ky016
  6. датчик тока, напряжения и мощности: ina219

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

ПараметрТип для Shared objectТип для Golang gRPCОписание
groupchar[] (тип C)stringТип компонента ("executor", "connector", "sensor")
deviceNamechar[] (тип C)stringУстройство компонента ("i2c", "pwm", "servodrive", "servodrive_rotate", "led", "voltage_sensor")
modelNamechar[] (тип C)stringМодель компонента ("ch341", "cp2112", "pca9685", " mg90s" ,"a0090" ,"mg996" ,"corona_ds929mg" ,"corona_sb9039" ,"corona_ds843mg" ,"corona_ds238mg", "mg996r", "ky016", "ina219")
descriptor*int (тип C)int64Указатель на компонент, который будет создан
errorTextchar[1000] (тип C)stringТекст ошибки (передается как параметр, если происходит ошибка метод записывает в этот параметр текст ошибки)
errorCodeint (тип C)int64Код ошибки

Примеры

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

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

# Создание компонента i2c адаптера модели ch341
errCode = lib.RI_SDK_CreateModelComponent("connector".encode(), "i2c_adapter".encode(), "ch341".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_CreateModelComponent.argtypes = [c_char_p, 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 адаптера модели ch341
errCode = lib.RI_SDK_CreateModelComponent("connector".encode(), "i2c_adapter".encode(), "ch341".encode(), descriptor, errTextC)
if errCode != 0:
print(errCode, errTextC.raw.decode())
sys.exit(2)

print("descriptor: ", descriptor.value)

print("Success")

main()