Баг FlProg или SWAP Float как пользовательский блок
Добавлено: 08.01.2018{, 16:25}
Добрый день.
Задача изначально сделать перестановку байт в float сетевой переменной.
Стандартного решения в FlProg не нашел, или просмотрел где, подскажите.
В общем решил сделать пользовательский блок
Но после компиляции в ардуино ide я получаю ошибку т.к. все переменные FlProg зачем-то переименовывает, но не везде.
Я думаю это баг, не приятный, т.к. решения не знаю теперь, если только со сдвигами играться.
получаю картину после flProg примерно такую
Может кто даст другой код или скажет как обойти эту проблему или разработчик допилит этот момент, буду благодарен.
Задача изначально сделать перестановку байт в 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;
}
Я думаю это баг, не приятный, т.к. решения не знаю теперь, если только со сдвигами играться.
получаю картину после 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;
}