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

RI_SDK_sensor_VoltageSensor_ExtendToModel

Информация

RI_SDK - библиотека Robo Intellect Software Development Kit
sensor - название группы устройств датчиков
VoltageSensor - название устройства датчика тока, напряжения и мощности
ExtendToModel - название метода расширения компонента датчика тока, напряжения и мощности до конкретной модели

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

RI_SDK_sensor_VoltageSensor_ExtendToModel(base, modelName, descriptor, errorText):errorCode

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

Расширение датчика тока, напряжения и мощности до конкретной модели.

Расширяет компонент датчика тока, напряжения и мощности с дескриптором base. Записывает в параметр descriptor дескриптор нового компонента (компонент конкретной модели датчика тока, напряжения и мощности)

Доступные модели сервопривода: ina219

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

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

Примеры

Пример №1 - Расширение компонента датчика тока, напряжения и мощности до модели ina219

В данном примере осуществляется расширение датчика тока, напряжения и мощности с дескриптором, записанным в переменную voltageSensor и вывод дескриптора нового компонента устройства сервопривода модели ina219, который получится в результате расширения.

# Расширение компонента датчика тока, напряжения и мощности до модели ina219
errCode = lib.RI_SDK_sensor_VoltageSensor_ExtendToModel(voltageSensor, "ina219".encode(), descriptor, 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_CreateDeviceComponent.argtypes = [c_char_p, c_char_p, POINTER(c_int), c_char_p]
lib.RI_SDK_sensor_VoltageSensor_ExtendToModel.argtypes = [c_int, c_char_p, POINTER(c_int), c_char_p]

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

print("voltage_sensor: ", voltageSensor.value)

# Расширение компонента датчика тока, напряжения и мощности до модели ina219
errCode = lib.RI_SDK_sensor_VoltageSensor_ExtendToModel(voltageSensor, "ina219".encode(), descriptor, errTextC)
if errCode != 0:
print(errCode, errTextC.raw.decode())
sys.exit(2)

print("descriptor: ", descriptor.value)

print("Success")

main()