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

RI_SDK_LinkLedToController

Информация

RI_SDK - библиотека Robo Intellect Software Development Kit
LinkLedToController - название метода связывания светодиода с ШИМ

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

RI_SDK_LinkLedToController(descriptor, pwm, rport , gport, bport, errorText):errorCode

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

Сообщает библиотеке, что необходимо программно связать компонент светодиода с дескриптором descriptor и ШИМ модулятором с дескриптором pwm по порту port.

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

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

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

Примеры

Пример №1 - Подключение светодиода к ШИМ

В данном примере осуществляется связывание светодиода с дескриптором, записанным в переменной led, с ШИМ с дескриптором, записанным в переменной pwm, к порам 15, 14, 13 для красного, зеленого и синего цветов соответственно

# Связывание ШИМ со светодиодом
errCode = lib.RI_SDK_LinkLedToController(led, pwm, 15, 14, 13, 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_CreateModelComponent.argtypes = [c_char_p, c_char_p, c_char_p, POINTER(c_int), c_char_p]
lib.RI_SDK_LinkLedToController.argtypes = [c_int, c_int, c_int, c_int, c_int, c_char_p]
lib.RI_SDK_DestroySDK.argtypes = [c_bool, c_char_p]

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

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


# Создание компонента ШИМ модели pca9685
errCode = lib.RI_SDK_CreateModelComponent("connector".encode(), "pwm".encode(), "pca9685".encode(), pwm, errTextC)
if errCode != 0:
print(errCode, errTextC.raw.decode())
sys.exit(2)

print("pwm: ", pwm.value)

# Создание компонента светодиода модели ky016
errCode = lib.RI_SDK_CreateModelComponent("executor".encode(), "led".encode(), "ky016".encode(), led, errTextC)
if errCode != 0:
print(errCode, errTextC.raw.decode())
sys.exit(2)

print("led: ", led.value)

# Связывание ШИМ со светодиодом
errCode = lib.RI_SDK_LinkLedToController(led, pwm, 15, 14, 13, errTextC)
if errCode != 0:
print(errCode, errTextC.raw.decode())
sys.exit(2)

# Удаление библиотеки со всеми компонентами
errCode = lib.RI_SDK_DestroySDK(True, errTextC)
if errCode != 0:
print(errCode, errTextC.raw.decode())
sys.exit(2)

print("Success")

main()