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

RI_SDK_CreateGroupComponent

Информация

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

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

RI_SDK_CreateGroupComponent(group, descriptor, errorText):errorCode

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

Функция создает базовый компонент, который является абстракцией первого уровня над всеми остальными компонентами. Этот компонент не имеет своих собственных методов. Его можно расширить до компонента уровня группы.

Доступны следующие группы компонентов:

  1. executor - исполнительный устройства (сервопривод, светодиод)
  2. connector - устройства для связывания других устройств (i2c адаптер, ШИМ модулятор)
  3. sensor - датчики (Датчик напряжения и силы тока)

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

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

Примеры

Пример №1 - Создание компонента группы коннекторов

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

# Создание компонента группы коннекторов
errCode = lib.RI_SDK_CreateGroupComponent("connector".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_CreateGroupComponent.argtypes = [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)

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

print("descriptor: ", descriptor.value)

print("Success")

main()