Обработка ошибок
Любая функция 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 | Подключение к устройству по адресу уже существует. | Проверьте дублирование функций связывания компонентов в вашем программном коде. |
211005 | I2C адаптер еще не расширен до конкретной модели. | Необходимо использовать "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 | Неверное значение On | on - Количество тактов до перевода выхода в состояние логической «1», проверьте значение переданное в RI_SDK_sigmod_PWM_SetPortDutyCycle третьим аргументом. Если все корректно, обратитесь в тех. поддержку. |
212004 | Неверное значение Off | off - Количество тактов до перевода выхода в состояние логического «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. |