Как научить ардуину дожидаться полного сообщения с BT, а потом только писать его в сериал порт

cottonhead
Offline
Зарегистрирован: 10.04.2018

Добрый день, ребята. Помогите. Суть проста до невозможности, но я так и не смог ее реализовать прямо. Есть два устройства: с одного по bluetooth пересылаю какие-то динамические данные с датчика (гироскопа, допустим) на второе устройство. На второй стороне их, соответственно, принимаю и отдаю в монитор порта. Со стороны отправляющего устройства все, конечно, выглядит красиво, каждое новое значение на новой строке, хоть и видно, что символы рисуются поочередно. На принимающей стороне понятно что: там то 1 символ придет вместо двух положенных, либо связь просядет и потом за раз сообщение из 6 символов и прочий беспредел. Как я могу это контроллировать? Алгоритм понимаю так, что на принимающей стороне нужно ловить либо какой-то специальный символ, который я буду отправлять после каждого сообщения, либо конец строки, а потом уже формировать побайтово другую строку, которую и буду выводить. Проблема в реализации. Прошу, подскажите куда почитать, что покурить на эту тему. Был бы рад каким-нибудь примерам. Спасибо

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

тут программировать надо :(

как раз рядом была ссылка по теме:

http://arduino.ru/forum/programmirovanie/ne-udaetsya-nastroit-millis#com...

Ну а если по теме - вы же уже нарисовали в голове алгоритм, осталось реализовать: сохраняете входящие байты/символы в некий буфер, как только приходит управляющий символ / конец строки - выводите весь буфер в порт.

sadman41
Offline
Зарегистрирован: 19.10.2016

"каждое новое значение на новой строке" -> специальный символ == '\n'

Читать на эту тему можно, к примеру, Examples -> Communication -> ReadASCIIString

cottonhead
Offline
Зарегистрирован: 10.04.2018

andycat пишет:

тут программировать надо :(

так вот блин :(((

cottonhead
Offline
Зарегистрирован: 10.04.2018

Нашел несколько решений, которые можно немного доделать под свои нужды, думаю, это как раз то, что мне нужно. Возможности пока проверить нет, но оставлю ссылку, кому-нибудь пригодится может http://qaru.site/questions/83751/convert-serialread-into-a-useable-string-using-arduino

 

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

ну круто, че.....

очередное подтверждение темы про современных специалистов :(

"В настоящее время, при наличии примеров в интернетах, программинг ничем не отличается от просто заливки файла с диска на другой диск. Скопипастил, подправил, захуячил на девайс, поотлаживал, ещё докопипастил, опять поотлаживал, возможно, что совсем поотлаживал, в том смысле, что микросхема съела мацы и подавилась (не без помощи твоих же усилий). А потом, исходя из того, что ЧСВ молодого радиста уже поднялось в заоблачные дали и он стал типа опытный, написал чуток кода от себя — и девайс, как ни странно, в очередной раз перестаёт программироваться или накрывается программатор.

А вот если подходящих примеров нет, то начинается брожение по интернетам с просьбами дать исходники управления для какого нибудь невъебенно умного устройства, ввиду чего анонимы и бывалые форумов просто посылают тебя нахуй с этой просьбой несуразной. Посылают, кстати, только честные и добрые люди — и исключительно из добрых побуждений. Ибо авгиевы конюшни покажутся весенней прогулкой по сравнению с разбором чужого быдлокода. "

cottonhead
Offline
Зарегистрирован: 10.04.2018

вообще я работаю программистом) но занимаюсь этим на промышленном уровне и пишу для ПЛК на LAD и STL. и программирование для ардуино или андроид это вообще другое программирование, которое я не всегда понимать

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

cottonhead пишет:

вообще я работаю программистом ... программирование для ардуино ... это вообще другое программирование, которое я не всегда понимать

Попробуйте Scratch, возможно, это как раз то, что Вам нужно.