В порт прилетает массив, как принять и разобрать на переменные
- Войдите на сайт для отправки комментариев
Сб, 05/03/2022 - 01:00
Добрый день! Написал прогу в андройд студио. Она по таймеру отправляет данные акселерометра (от -100 до 100 по двум осям). Отправка осуществляется массивом
byte[] bytesToSend = { (byte)plane_y, (byte)plane_x }; myThreadConnected.write(bytesToSend);
Сейчас не могу разобраться со стороной приема. Скетч сейчас такой. В мониторе порта выходит по две строчки с нужными числами. Как мне их правильно принимать и разложить в переменные, x и y например? (если я не ошибаюсь, то писать просто в int неверно). С массивом что-то не выходит.
#include <SoftwareSerial.h> SoftwareSerial mySerial(10, 11); // RX, TX int inbyte; void setup() { Serial.begin(9600); // Старт порта на скорости mySerial.begin(9600); // Старт виртуального порта } void loop() { if (mySerial.available()) { inbyte = mySerial.read(); Serial.write(inbyte); Serial.println(inbyte, DEC); }; }
Приходит два байта. Читаем их по очереди в int8_t plane_x и int8_t plane_y
а синхронизируешь последовательность чем? как будешь отличать байты? нужно придумать протокол или взять готовый, к примеру в протоколе YAESU идет байт кода команды и далее два байта данные
В том и дело, что в этом пока не преуспел. У меня собственно летят координаты, поэтому я отправил два числа. Вот например Андройд не смешивает же, я в мониторе порта стабильно вижу две строчки.
Начитался много об этом в тырнете, но пока не разобрался. О парсинга порта, спецсимволах, чтение структуры и тп. Есть еще обда проблема, я указал, что все гуд, но разбираюсь еще.. Отрицательные числа вместо -1,-2,-3, превращаются в 243,244 и тп
Отрицательные числа вместо -1,-2,-3, превращаются в 243,244 и тп
тогда переменная должна быть не byte а int8_t
дадада, действует уффф пошли минуса)))
осталось в переменные распихать)))
дадада, действует уффф пошли минуса)))
осталось в переменные распихать)))
нужна преамбула, хотя бы один байт с нулевым значением к примеру, как начало блока данных
понял, пока до преамбулы не добрался, пробую такой способ. Явно удается определить, что символов два приходит, а дальше не идет( пытаюсь x вывести. Реально таким способом? Может ошибок наляпал..
Нереально. Softserial, delay... Ядерная смесь.