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

Обработка возможных ошибок вызовов функций RISDK

Обработка ошибок

Любая функция RISDK всегда "сообщает" о том, корректно ли она выполнилась. Для этого каждая функция возвращает целое число. Если возвращаемое значение равно 0, то функция отработала корректно. Если в ходе выполнения функция возникла ошибка, будет возвращено положительное число, являющееся номером ошибки.

Номер ошибки состоит из шести регистров (ABCDXX), и формируется по следующиему принципу:

  • A - это регистр, по которому можно понять, произошла ошибка в ядре RISDK, или в объекте компонентов;
  • B - соответствующий номер объекта ядра или номер группы компонента;
  • C - всегда равен 0 для объектов ядра, и равен номеру типа объекта компонента;
  • D - всегда равен 0 для объектов ядра, и равен номеру модели объекта компонента;
  • XX - порядковый номер ошибки.

Один из способов понять, какая произошла ошибка, это вывести в терминал значение ErrorText - последний параметр в любой функции RISDK. Представляет из себя передаваемый по ссылке массив байт, в который RISDK записывает соответствующий номеру текст ошибки.

Другой способ заключается в сверке полученного номера ошибки с реестром ошибок, где помимо описания ошибки так же приводятся рекомендации по её устранению.

Реестр ошибок

Код ошибкиОписание ошибкиРекомендуемые действия
100001Неопределенный режим инициализации.Измените уровень глубины логирования на положительное число или 0.
100002Недопустимый тип компонента.Проверьте правильность данных создаваемого компонента.
100003Параметр длины буфера больше размера буфера.Укажите параметр длины буфера равным размеру буфера.
110001Реестр компонентов не инициализирован.Выполните инициализацию RISDK (RI_SDK_InitSDK).
110002Компонент не найден в реестре.Проверьте правильность данных создаваемого компонента.
110003Дескриптор компонентов уже занят.Измените значение дескриптора.
110004Ошибка конструктора компонента.Проверьте правильность данных создаваемого компонента.
110005Реестр компонентов не пуст.Укажите признак полного очищения реестра равным true.
110006Невалидный дескриптор.Измените значение дескриптора.
120001Группа не существует.Укажите верный тип компонента ("executor", "connector" или "sensor").
120002Не удалось создать компонент уровня типа устройства.Укажите верный тип устройства ("i2c", "pwm", "servodrive", "led", "voltage_sensor" или "servodrive_rotate").
120003Не удалось создать компонент уровня модели устройства.Укажите верный тип модели компонента.
120004Не удалось сохранить компонент в реестр.Проверьте правильность данных создаваемого компонента.
120005Не удалось сохранить базовый компонент реестр.Проверьте правильность данных создаваемого компонента.
120006Не удалось сохранить компонент уровня модели устройства в реестр.Проверьте правильность данных создаваемого компонента.
120007Не удалось сохранить компонент уровня группы в реестр.Проверьте правильность данных создаваемого компонента.
120008Неизвестный тип устройства.Укажите верный тип устройства ("i2c", "pwm", "servodrive", "led", "voltage_sensor", "servodrive_rotate").
120009Неизвестный тип модели.Укажите верный тип модели компонента.
130001Ошибка связывания pwm с адаптером.Проверьте правильность введенных дескрипторов для pwm и i2c.
130002Указанный компонент не обладает функционалом связывания.Проверьте правильность введенного дескриптора для связываемого компонента.
130003Указанный компонент не поддерживает протокол связывания.Проверьте правильность введенного дескриптора ("pwm" или "i2c").
130004Ошибка связывания сервопривода с ШИМ.Проверьте правильность введенных дескрипторов сервопривода и ШИМ модулятора и порт подключения.
130005Ошибка связывания сервопривода с ШИМ на порту.Проверьте корректность введенных портов для подключения красного, зеленого и синего цветов светодиода.
130006Ошибка связывания датчика тока с i2c адаптером.Проверьте правильность введенных дескрипторов для датчика тока и i2c адаптера.
211001Адрес уже занят.Укажите другой адрес, по которому будет открыто соединение.
211002Ошибка создания соединения.Проверьте корректность адреса, по которому будет открыто соединение.
211003Ошибка закрытия соединения по адресу.Убедитесь, что существуют открытые соединения и проверьте корректность адреса, по которому будет закрыто соединение.
211004Подключение к устройству по адресу уже существует.Проверьте дублирование функций связывания компонентов в вашем программном коде.
211005I2C адаптер еще не расширен до конкретной модели.Необходимо использовать "ch341" или "cp2112" модели для i2c адаптера.
211006Ошибка при создании подключения по I2C.Проверьте корректность адреса, по которому будет открыто соединение и номер шины i2c, если вы его задавали самостоятельно.
211007Ошибка записи одного байта.Проверьте корректность введенного указателя на байт для записи.
211008Ошибка чтения первого байта.Попробуйте перезапустить программу и проверьте версию библиотеки.
211009Подключение по адресу I2C не существует.Проверьте, было ли создано соединение по указанному адресу (RI_SDK_connector_i2c_Open).
211010Ошибка чтения в пустой буфер.Укажите длину массива байт, в который будут записаны прочитанные байты, большую нуля.
211011Ошибка установки шины i2c: значение шины отрицательное.Укажите неотрицательное значение шины i2c.
211012Ошибка установки шины i2c: существуют открытые соединения.Закройте все открытые с помощью заданного i2c адаптера соединения (RI_SDK_connector_i2c_CloseAll или RI_SDK_connector_i2c_Close для каждого открытого соединения).
212001Не поддерживается такое соотношение разрешения и частоты.Проверьте корректность установленных значений разрешения и частоты.
212002Не задан контроллер соединения.Установите контроллер соединения.
212003Неверное значение Onon - Количество тактов до перевода выхода в состояние логической «1», проверьте значение переданное в RI_SDK_sigmod_PWM_SetPortDutyCycle третьим аргументом. Если все корректно, обратитесь в тех. поддержку.
212004Неверное значение Offoff - Количество тактов до перевода выхода в состояние логического «0», проверьте значение переданное в RI_SDK_sigmod_PWM_SetPortDutyCycle четвертым аргументом. Если все корректно, обратитесь в тех. поддержку.
212005Порт уже занятВыберите другой порт для подключения устройства, текущий занят.
212006Нет порта с данным индексомВыбран некорректный порт для подключения устройства, выберите другой.
212007Частота не установленаПроверьте первый аргумент, переданный в SetProperties для ШИМ, он не должен быть равен 0. Если все корректно, обратитесь в тех. поддержку.
212008Разрешение не установленоПроверьте второй аргумент, переданный в SetProperties для ШИМ, он не должен быть равен 0. Если все корректно, обратитесь в тех. поддержку.
212009Количество портов не установленоПроверьте третий аргумент, переданный в SetProperties для ШИМ, он не должен быть равен 0. Если все корректно, обратитесь в тех. поддержку.
212010Тактовая частота не установленаПроверьте четвертый аргумент, переданный в SetProperties для ШИМ, он не должен быть равен 0. Если все корректно, обратитесь в тех. поддержку.
212011Не установлено соединение с контроллеромПроверьте соединение ШИМ с контроллером и корректность создания соединения и объектов.
212012Соединение с i2c шиной не существуетПроверьте соединение с шиной и корректность конструктора объектов и их соединения.
212013Не верное значение значение импульса в доле от рабочего диапазонаПопробуйте изменить импульс, который подается на устройство, проверьте версию библиотеки и модель ШИМ, созданную программой.
212014Максимальный импульс устройства не установленПроверьте значение, переданное в SetMaxImpulse, оно не должно быть равно 0. Если все корректно, обратитесь в тех. поддержку.
212015Настройка частоты для определенного порта не поддерживается на этом устройствеИзменить частоту, которую Вы передали при настройке частоты порта или проверьте подходит ли модель устройства для данной частоты.
212016Получение частоты для определенного порта, не поддерживаемого на этом устройствеНевозможно получить частоту порта на этом устройстве.
221001Выход за пределы рабочего диапазонаИзмените передаваемый импульс для сервопривода или градус поворота.
221002Тип полученного направления вращения не определенУказано некорректное направление угла движения сервопривода, проверьте второй аргумент при вызове функций, связанных с перемещением.
221003Рабочий диапазон не может быть равен нулю или быть отрицательнымИзменить размер рабочего диапазона.
221004ШИМ-модулятор не установленПроверьте соединение с ШИМ, корректность созданных объектов и инициализации соединения.
221005Значение максимальной ширины управляющего импульса не установленоПроверьте значение максимального импульса в SetProperties и SetMaxPulse. Оно не должно быть равно 0. Если всё корректно, обратитесь в тех. поддержку.
221006Максимальная скорость не установленаПроверьте значение максимальной скорости в SetProperties и SetMaxSpeed. Оно не должно быть равно 0. Если всё корректно, обратитесь в тех. поддержку.
221007Количество шагов не может быть больше разрешенияУменьшите скважность в шагах, переданную в RI_SDK_exec_ServoDrive_TurnByDutyCycle, текущее значение некорректно для сервопривода.
221008Тип полученной команды не определенПопробуйте перезапустить программу и проверьте версию библиотеки, правильно ли проинициализирован объект и корректно ли вызвана функция. Если все в порядке, обратитесь в тех. поддержку.
221009Скорость вращения больше максимальнойУменьшите скорость вращения сервопривода.
221010Скорость вращения меньше или равна нулюУвеличьте скорость вращения сервопривода.
221011Выход за пределы рабочего диапазона вращенияПроверьте диапазоны вращения у сервоприводов,углу поворота при вызове функций.
221012Целевой угол поворота сервопривода меньше нуляПроверьте, не передается ли Вы в качестве угла порота отрицательное значение.
221013Максимальное значение ширины управляющего импульсаРабочий диапазон импульса серводрайвера превышает значение максимального импульса, уменьшите его.
222001Неправильное значение цветаДля светодиода передано некорректное значение цвета, проверьте значения цвета, передаваемые в функции светового импульса (RI_SDK_exec_RGB_LED_SinglePulse, RI_SDK_Exec_RGB_LED_FlashingWithFrequency и т. д.).
222002Не заданы контроллеры для одного из портов подключения светодиодаПроверьте наличие портов для светодиодов (переданные порты в RI_SDK_LinkLedToController).
222003Тип полученной команды не определенПроверьте корректность инициализации объекта.
211101Адрес уже занятАдрес, который Вы передали в RI_SDK_connector_i2c_Open, уже занят, смените его.
211102Ошибка создания подключенияПроверьте корректно ли инициализирован и подключен (физически) адаптер.
211103Подключение к адресу устройства уже существуетПодключение уже существует, если вы его создаете впервые, то убейте процесс и попробуйте заново.
211201Адрес уже занятАдрес, который Вы передали в RI_SDK_connector_i2c_Open, уже занят, смените его.
211202Ошибка создания подключенияПроверьте корректно ли инициализирован и подключен (физически) адаптер.
211203Подключение к адресу устройства уже существуетПодключение уже существует, если вы его создаете впервые, то убейте процесс и попробуйте заново.
212101Нет модели для модулятора PWMВ RI_SDK_sigmod_PWM_ExtendToModel передана некорректная модель, проверьте второй аргумент функции. Допустимое значение: pca9685.
221101Модель для сервопривода не существуетВ RI_SDK_exec_ServoDrive_ExtendToModel или RI_SDK_exec_RServoDrive_ExtendToModel передана некорректная модель, проверьте второй аргумент функции. Допустимые значения: mg996r, mg996, mg90s, a0090, corona_ds929mg, corona_sb9039, corona_ds843mg, corona_ds238mg.
222101Модель для светодиода не существуетВ RI_SDK_exec_RGB_LED_ExtendToModel передана некорректная модель, проверьте второй аргумент функции. Допустимое значение: ky016.