Баг FlProg или SWAP Float как пользовательский блок

На этом форуме Вы можете задать вопросы знатокам программы и автору.
Ответить
Аватара пользователя
KaScada
Лейтенант
Сообщения: 388
Зарегистрирован: 23.04.2016{, 12:33}
Репутация: 13
Контактная информация:

Баг FlProg или SWAP Float как пользовательский блок

#1

Сообщение KaScada » 08.01.2018{, 16:25}

Добрый день.
Задача изначально сделать перестановку байт в float сетевой переменной.
Стандартного решения в FlProg не нашел, или просмотрел где, подскажите.

В общем решил сделать пользовательский блок

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

float in_F = 1.12345;//Вход блока
float out_F = 0;//Выход блока
byte arr[4];

union u_tag {
   byte b[4];
   float fval;
} u;

void loop() {
  
  u.fval = in_F;

  arr[0] = u.b[0];
  arr[1] = u.b[1];
  arr[2] = u.b[2];
  arr[3] = u.b[3];

  u.b[0] = arr[2];
  u.b[1] = arr[3];
  u.b[2] = arr[0];
  u.b[3] = arr[1];

  out_F = in_F;

}

Но после компиляции в ардуино ide я получаю ошибку т.к. все переменные FlProg зачем-то переименовывает, но не везде.
Я думаю это баг, не приятный, т.к. решения не знаю теперь, если только со сдвигами играться.

получаю картину после flProg примерно такую

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

float in_F_99845782_1;
float out_F_99845782_1;
byte arr_99845782_1[4];
union u_tag {
   byte b_99845782_1[4];//Здесь переименовал мой массив b
float fval_99845782_1;
} u_99845782_1;
float _gtv1 = 123.123;
float _gtv2;
void setup()
{

}
void loop()
{

//Плата:1
in_F_99845782_1 = _gtv1;
  u_99845782_1.fval = in_F_99845782_1;

  arr_99845782_1[0] = u_99845782_1.b[0];
  arr_99845782_1[1] = u_99845782_1.b[1];
  arr_99845782_1[2] = u_99845782_1.b[2];
  arr_99845782_1[3] = u_99845782_1.b[3];

  u_99845782_1.b[0] = arr_99845782_1[2];//Здесь идёт обращение к массиву b, который FlProg забыл переименовать почему-то, и так везде. Получаем ошибку...
  u_99845782_1.b[1] = arr_99845782_1[3];
  u_99845782_1.b[2] = arr_99845782_1[0];
  u_99845782_1.b[3] = arr_99845782_1[1];

  out_F_99845782_1 = u_99845782_1.fval;
 
_gtv2 = out_F_99845782_1;

}
Может кто даст другой код или скажет как обойти эту проблему или разработчик допилит этот момент, буду благодарен.
ПО КаСкада на базе смартфона/планшета с ОС Андроид

Подробнее здесь: http://www.hmi-kascada.ru/

Аватара пользователя
Anydy
Администратор
Сообщения: 3269
Зарегистрирован: 30.12.2017{, 12:10}
Репутация: 278
Имя: Андрей

Баг FlProg или SWAP Float как пользовательский блок

#2

Сообщение Anydy » 08.01.2018{, 16:39}

Поставьте галку "использовать один раз" , в видеоуроках про это сказано.

Аватара пользователя
Rovki
Полковник
Сообщения: 4481
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 236
Откуда: Чехов
Имя: Анатолий
Контактная информация:

Баг FlProg или SWAP Float как пользовательский блок

#3

Сообщение Rovki » 08.01.2018{, 16:47}

Anydy писал(а):
08.01.2018{, 16:39}
Поставьте галку "использовать один раз" , в видеоуроках про это сказано.
Голова ! :senile:
Электронщик до мозга костей и не только

Аватара пользователя
KaScada
Лейтенант
Сообщения: 388
Зарегистрирован: 23.04.2016{, 12:33}
Репутация: 13
Контактная информация:

Баг FlProg или SWAP Float как пользовательский блок

#4

Сообщение KaScada » 08.01.2018{, 16:50}

Anydy писал(а):
08.01.2018{, 16:39}
Поставьте галку "использовать один раз" , в видеоуроках про это сказано.
Спасибо, да, работает, но дело в том что float регистров у меня не менее 4х, значит использовать swap надо столько же раз.
ПО КаСкада на базе смартфона/планшета с ОС Андроид

Подробнее здесь: http://www.hmi-kascada.ru/

Аватара пользователя
Rovki
Полковник
Сообщения: 4481
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 236
Откуда: Чехов
Имя: Анатолий
Контактная информация:

Баг FlProg или SWAP Float как пользовательский блок

#5

Сообщение Rovki » 08.01.2018{, 16:56}

Скорее всего надо будет в 1 блоке сделать 4 входа -4 выхода ...(повторить 4 раза код)
Электронщик до мозга костей и не только

Аватара пользователя
KaScada
Лейтенант
Сообщения: 388
Зарегистрирован: 23.04.2016{, 12:33}
Репутация: 13
Контактная информация:

Баг FlProg или SWAP Float как пользовательский блок

#6

Сообщение KaScada » 08.01.2018{, 17:27}

Очевидно надо этот баг по возможности починить.
ПО КаСкада на базе смартфона/планшета с ОС Андроид

Подробнее здесь: http://www.hmi-kascada.ru/

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

Баг FlProg или SWAP Float как пользовательский блок

#7

Сообщение pan » 08.01.2018{, 17:49}

тут не читали? советуют вместо byte использовать
unsigned char

Аватара пользователя
KaScada
Лейтенант
Сообщения: 388
Зарегистрирован: 23.04.2016{, 12:33}
Репутация: 13
Контактная информация:

Баг FlProg или SWAP Float как пользовательский блок

#8

Сообщение KaScada » 08.01.2018{, 17:53}

pan писал(а):
08.01.2018{, 17:49}
тут не читали? советуют вместо byte использовать
unsigned char
Нет, проблема не в этом. Я свои данные не вставляю, с byte проблем быть не может при обычном свапе.
ПО КаСкада на базе смартфона/планшета с ОС Андроид

Подробнее здесь: http://www.hmi-kascada.ru/

Ответить

Вернуться в «Спросить у знатоков»