Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
alexnf
0 / 0 / 0
Регистрация: 25.11.2015
Сообщений: 6
#1

Потеря данных полученных в Android от Arduino по Bluetooth (appinvertor) - Программирование Android

25.11.2015, 08:40. Просмотров 627. Ответов 8
Метки нет (Все метки)

Отправляю сигналы с ардуино, с разных датчиков, в виде "имя датчика + уровень"

Пробовал вот так:
C++
1
2
Serial1.print("pp"); //pp, pl, pc, ppc, plc - имена датчиков
Serial1.println(pplevel); //pplevel-уровень сигнала датчика от 1 до 5
При соединении терминалом получаю последовательность данных
pp1
pp2 и тд

Менял буквы на цифры:
C++
1
2
3
Serial1.print(0); //00, 01, 02 - имена датчиков
Serial1.print(0); 
Serial1.println(pplevel); //pplevel-уровень сигнала датчика от 1 до 5
При соединении терминалом получаю последовательность данных
001
002 и тд

Но при получении данных в приложение, происходит их частичная потеря:
pp
p1
01
02 и тп, в общем некоторых символов не хватает, обычно первых

Вот программа:
Потеря данных полученных в Android от Arduino по Bluetooth (appinvertor)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Armagedo
25.11.2015, 15:25
  #2

Не по теме:

А чё за среда такая с паззлами? Просто интересно...

alexnf
0 / 0 / 0
Регистрация: 25.11.2015
Сообщений: 6
26.11.2015, 15:13  [ТС]     Потеря данных полученных в Android от Arduino по Bluetooth (appinvertor) #3
Вот среда:
http://ai2.appinventor.mit.edu/
А по теме мыслей нет?
Уже че только не пробовал, теряет первый символ, и очень часто...

Добавлено через 6 часов 50 минут
Вместо ReceiveTextnumberOfByte - перепробовал все Call что есть - результат тот же.

Либо не верно использую. Я видимо не совсем понимаю работу данной функции, пробовал в Label сразу выводить BytesAvailableToReceive, думал что она покажет количество полученных байт, а она показываю их количество с нарастающим итогом. Те вместо 3 3 3 3, показывает 3 6 9 12 15 - и так до 1200-1500, потом отстанавливается!

Может после каждого получения нужно что-то сбрасывать?
_Night_Scream_
75 / 74 / 8
Регистрация: 08.08.2013
Сообщений: 584
26.11.2015, 19:53     Потеря данных полученных в Android от Arduino по Bluetooth (appinvertor) #4
alexnf, жесть...
Возьмите готовый код Осипова, он все это давно написал.
alexnf
0 / 0 / 0
Регистрация: 25.11.2015
Сообщений: 6
26.11.2015, 21:53  [ТС]     Потеря данных полученных в Android от Arduino по Bluetooth (appinvertor) #5
Я полностью повторил код Осипова, единственное не делал автоматическое повторное подключение к блютуз.
Основное отличие: У него TimerInterval установлен на 1000, я оставлял "0" - при изменении на например 100 - данные читаются стабильно (получал я данные с ардуино которая их посылала в виде указанных выше 3-х цифр раз 1сек).
Это был макет, но на практике мне нужно будет получать данныее вот такого типа:
123456789,0,0,0,0,0,0,0,0,

вот так:
C++
1
2
3
4
5
6
7
8
9
 unsigned long heady;
byte message[8];
........
Serial.print(heady, DEC);  //heady - значение из 9 символов
    for (int i = 0; i < 8; i++) {
      Serial.print(",");
      Serial.print(message[i]);
    }
    Serial.println(",");
данные будут поступать непостоянно, как мне их поделить и минимизировать ошибки?
(это данные из can шины автомобиля)

Добавлено через 16 минут
В конце каждого отдельного сообщения, передается Serial.println(","); - можно это как то опознать, как окончание принятого сообщения?
_Night_Scream_
75 / 74 / 8
Регистрация: 08.08.2013
Сообщений: 584
26.11.2015, 21:57     Потеря данных полученных в Android от Arduino по Bluetooth (appinvertor) #6
alexnf, В конце каждого отдельного сообщения, передается Serial.println(","); - можно это как то опознать, как окончание принятого сообщения?

Вот это в правильном направлении думаете, только хотел спросить про символ конца пакета.
alexnf
0 / 0 / 0
Регистрация: 25.11.2015
Сообщений: 6
26.11.2015, 22:13  [ТС]     Потеря данных полученных в Android от Arduino по Bluetooth (appinvertor) #7
Найти нужно символ /n на сколько я понимаю,
а как его правильно отловить в appinvertore ?
alexnf
0 / 0 / 0
Регистрация: 25.11.2015
Сообщений: 6
27.11.2015, 13:47  [ТС]     Потеря данных полученных в Android от Arduino по Bluetooth (appinvertor) #8
Потеря данных полученных в Android от Arduino по Bluetooth (appinvertor)
Вот как то так сделал, но смущает последняя строка расчета длины сообщения, проверить пока не могу. Да и насчет начала не уверен, наверно определение начала строки с \n заменить на 1 нужно:
Потеря данных полученных в Android от Arduino по Bluetooth (appinvertor)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2015, 22:55     Потеря данных полученных в Android от Arduino по Bluetooth (appinvertor)
Еще ссылки по теме:
Android Хранение полученных данных
Android Приём данных по Bluetooth
Передача данных по Bluetooth Android
Android Передача данных через bluetooth
Получение и разбор данных по Bluetooth Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
alexnf
0 / 0 / 0
Регистрация: 25.11.2015
Сообщений: 6
28.11.2015, 22:55  [ТС]     Потеря данных полученных в Android от Arduino по Bluetooth (appinvertor) #9
Вроде бы что-то получилось:
Потеря данных полученных в Android от Arduino по Bluetooth (appinvertor)
Создал из переменной буфер, в который собираю все входящие данные,
а потом от туда их разбираю деля по переходу строки (по количеству символов не мог, тк это количество может быть разным)
Те данные, которые уже вывел, затираю.
TimerInterval стоит на "0".
Потерь нет, или пока не заметил, проверял только на эмуляторе входящих данных, к источнику пока подключится не могу.
Из недостатков, данные в буфер пишу в конец, а читаю с начала, если андроид не успеет перебирать все получаемые сообщения, то они начнут накапливаться в буфере и становиться для моей программы - не актуальными, поэтому если в буфере более 150 символов (это примерно 2 сообщения), то я его обнуляю.
Буду рад, если укажите на ошибки, или может можно как то упростить?
Yandex
Объявления
28.11.2015, 22:55     Потеря данных полученных в Android от Arduino по Bluetooth (appinvertor)
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru