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

RI_SDK_executor_State

Информация

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

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

RI_SDK_executor_State(descriptor, state, errorText):errorCode

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

Чтение состояния исполнителя.

Записывает в параметр state константу состояния исполнительного устройства с дескриптором равным descriptor

Коды состояния:

  1. 0 - Компонент ожидает вызова действий
  2. 1 - Компонент выполняет действие
  3. 2 - Компонент выполняет простое свечение (только для светодиода)
  4. 3 - Компонент выполняет мигание (только для светодиода)
  5. 4 - Компонент выполняет мерцание (только для светодиода)

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

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

Примеры

Пример №1 - Получение состояния компонента группы исполнителей

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

# Получение состояния исполнительного устройства
errCode = lib.RI_SDK_executor_State(descriptor, state, errTextC)
if errCode != 0:
print(errCode, errTextC.raw.decode())
sys.exit(2)

print("state: ", state.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]
lib.RI_SDK_executor_State.argtypes = [c_int, POINTER(c_int), c_char_p]

def main():
errTextC = create_string_buffer(1000) # Текст ошибки. C type: char*
descriptor = c_int()
state = 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("executor".encode(), descriptor, errTextC)
if errCode != 0:
print(errCode, errTextC.raw.decode())
sys.exit(2)

print("descriptor: ", descriptor.value)

# Получение состояния исполнительного устройства
errCode = lib.RI_SDK_executor_State(descriptor, state, errTextC)
if errCode != 0:
print(errCode, errTextC.raw.decode())
sys.exit(2)

print("state: ", state.value)

print("Success")

main()