Проблемка с написанием компонента HAL

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
vvpolyakov
Кандидат
Сообщения: 58
Зарегистрирован: 15 окт 2014, 12:43
Репутация: 0
Настоящее имя: Владимир
Контактная информация:

Проблемка с написанием компонента HAL

Сообщение vvpolyakov »

Пытаюсь подключить компонент atan2 из соседней темы, как-то не выходит.
Проблема такая.
вот допустим пишу код

Код: Выделить всё

component zzz;
pin out float v;
function _;
license "GPL";
;;
FUNCTION(_) { v = 1;}
компилирую его sudo comp --install zzz.comp
подключаю его в CNC.hal как обычно loadrt zzz

открываю HAL метр, нахожу zzz.0.v и там всегда показывает 0.
Если заменяю pin out float v; на pin out float v=5; то HAL-метр показывает 5...
То есть ощущение как буд-то функция не вызывается

Куда копать? целый день бьюсь с этим
Аватара пользователя
Ворон226
Мастер
Сообщения: 1923
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: Проблемка с написанием компонента HAL

Сообщение Ворон226 »

Компонент нужно не просто загрузить в HAL:

Код: Выделить всё

loadrt  flipflop
, но и добавить

Код: Выделить всё

addf    flipflop.0   servo-thread
Подробнее в описании LCNC (например, тут - http://www.cnc-club.ru/wiki/index.php/L ... 82.D1.8C_1. )
Хочешь быть счастливым? Будь им!
Аватара пользователя
vvpolyakov
Кандидат
Сообщения: 58
Зарегистрирован: 15 окт 2014, 12:43
Репутация: 0
Настоящее имя: Владимир
Контактная информация:

Re: Проблемка с написанием компонента HAL

Сообщение vvpolyakov »

О! Спасибо ) Заработало ))
Только у меня оно заругалось на что-то там... needs FP
нарандомил вот такую строку: function _ nofp; и всё заработало )
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Проблемка с написанием компонента HAL

Сообщение Сергей Саныч »

Потоки (threads) бывают с возможностью использовать функции с плавающей запятой (точкой) и без таковой. По умолчанию servo-thread - с плавающей запятой, а base-thread - без.
Поскольку у вас компонент использует плавающую запятую, его нужно выполнять в servo-thread.
Чудес не бывает. Бывают фокусы.
Ответить

Вернуться в «LinuxCNC»