Передача дробного числа в процессинг.
- Войдите на сайт для отправки комментариев
Втр, 30/04/2013 - 09:16
Подскажи как передать дробь?
Мысли пока такие, процессинг принимает только целые. В Ардуино я умножаю дробь на (пусть десятичная) 10, получаю целое значение и передаю его в процессинг, как в процессинге его пробразовать в дробь?
Может есть еще способы?
Спасибо!
Всё зависит от лени подумать. Можно передавать отдельно целую, и отдельно дробную части. Можно преобразовать число в строку и передать "как есть". А ваш вариант с умножением на 10 вообще непонятно почему вызывает вопросы, если в дуине умножили, в процессинге разделите обратно. Или есть проблемы с использованием функции float()?
Всё зависит от лени подумать. Можно передавать отдельно целую, и отдельно дробную части. Можно преобразовать число в строку и передать "как есть". А ваш вариант с умножением на 10 вообще непонятно почему вызывает вопросы, если в дуине умножили, в процессинге разделите обратно. Или есть проблемы с использованием функции float()?
Есть проблемы с float.
Вот по смотрите мой скетч процессинга. Это я взял с видеоурока. Но понимаю, что для моих целей с расчетами в дальнейшем это не пойдет. Как передать в Процессинг число именно как число с записью в float?
Спасибо!
Ваш скейтч изначально работает не с числами, а со строками, а значит вы и с дуины отправляете не число, а строку. Вы для начала определитесь что вам нужно - строки или числа.
Лучше так и оставить, строками, потому что "числами" не получится, ввиду разных размеров (возможно, представления и прочих нюансов) float на Ардуино и на компе.
Вообще, обмен бинарными, даже целыми числами сопряжен с множеством проблем (размер, big-endian/little-endian и т.п.)
Для функции serialEvent нет комментариев, разберитеть для чего нужна каждая строка в отдельности, это должно снять вопросы о том, как передать данные в другом формате. А с точки зрения понимания процесса возможно лучше вообще отказаться от данной функции в пользу структуры
Разобрался немного. Сделал вот так:
delay() - это плохо, очень вероятны непредсказуемые глюки в чтении кома.
обычно данные по com-порту передаются в формате [заголовок строки] [данные].
корявенько написал, но как то так лучше
Код на с++ для ардуино, преобразующий float (или массив float)
в последовательность символов постоянной длины.
В процессинге распарсиваем эту строку обратно во float
Работает отлично.
Придумно не мной, это часть библиотеки http://www.varesano.net/projects/hardware/FreeIMU#v0.4