Например TDA7294

Форум РадиоКот • Просмотр темы - Обработка строк, полученных по UART
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Чт авг 14, 2025 05:50:10

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Обработка строк, полученных по UART
СообщениеДобавлено: Пт ноя 04, 2016 23:33:11 
Родился

Зарегистрирован: Пт ноя 04, 2016 23:18:50
Сообщений: 3
Рейтинг сообщения: 0
Добрый день уважаемые!

Где-то тут встречал тему с подобным вопросом, но сейчас что-то не могу ее найти. Да и решения в ней не было, ибо обсуждение ушло в какое-то иное русло.

Стоит задача получать контроллером (Atmega8 / 32) строки по UART с последующим разбором согласно некоторым правилам. Если с посимвольным приемом все предельно ясно, то как обрабатывать строку, я что-то не соображу. Вернее соображаю, что ее нужно читать из кольцевого буфера, но что-то ничего не получается. Для работы с UART-ом использую довольно известную библиотеку от товарища Peter Fleury. Если кто не знает что это такое, то вкратце - это всего лишь пара-тройка функций по приему/передаче данных, два кольцевых буфера на прием/передачу задаваемой длины, да куча макросов для совместимости с разными моделями AVR8-контроллеров.

Если кто-то сталкивался с подобной задачей, да еще и используя выше указанную библиотеку - буду безмерно рад помощи. Если нужны будут косые примеры моих попыток реализации приема и обработки строки в коде, то выложу позже, поскольку сейчас не имею под рукой этих исходников.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка строк, полученных по UART
СообщениеДобавлено: Сб ноя 05, 2016 07:14:32 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1430
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4568
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Строка в Си - это массив символов, с нулевым символом в конце. Ничего сверхъестественного.
А обработка будет зависеть от тех неких правил, которые Вы не озвучили. Да и проблему, собственно, не описали. Что конкретно не получается ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка строк, полученных по UART
СообщениеДобавлено: Сб ноя 05, 2016 07:54:10 
Родился

Зарегистрирован: Пт ноя 04, 2016 23:18:50
Сообщений: 3
Рейтинг сообщения: 0
То, что строка в сях это массив байт с нулевым на конце - я прекрасно знаю. Ну а то, что нужно - это получить строку (a-f0-9) длиной 16 байт и распарсить в зависимости от ведущего байта. В строке содержатся различные цифро-буквенные параметры, которые в конце дополнены контрольной суммой из двух байт (как раз 15 и 16 байты). Соответственно - получаем эти 16 байт, считаем CRC от первых 14 и сравниваем с 2-мя последними. Если все благополучно - начинаем разбирать далее.

Вот такая задача. Свой код скину или сегодня ближе к ночи, или завтра. Как получится.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка строк, полученных по UART
СообщениеДобавлено: Сб ноя 05, 2016 11:49:35 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 878
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 6060
Откуда: Minsk
Рейтинг сообщения: 0
Так в чем проблема ? Ясна задача - ясна реализация. Тем более что строка фиксированной длины. Отделить одну строку от другой ? По стартовому символу, если такой предусмотрен протоколом. По тайм-ауту. Это, пожалуй, единственный выход в случае битой посылки - пропал символ или наоборот, лишний. Если ведущий тупо молотит не глядя - хана, ничем не поможешь. А если работа (полу-) дуплексом - ведущий ожидает ответа от ведомого - тот дает сигнал: сбой, повтори передачу. Но если прога ведущего (ПК) закрытая - не позволяет влезть - посоветовать что-либо трудно.

_________________
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка строк, полученных по UART
СообщениеДобавлено: Сб ноя 05, 2016 12:05:26 
Родился

Зарегистрирован: Пт ноя 04, 2016 23:18:50
Сообщений: 3
Рейтинг сообщения: 0
Проблема была в том, чтобы получить всю строку целиком. В общем, вот по этой ссылке отличный пример практически необходимой реализации. Чутку допилить и все.

Все равно спасибо за помощь. Ну а "протокол" там хитрый. И с той стороны не комп, а мозги спектрофотометра с каким-то не родным, экспериментальным блоком управления, по которому нет никакой инфы. И протокол этот был реверснут ручками.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка строк, полученных по UART
СообщениеДобавлено: Вс ноя 06, 2016 09:42:35 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 878
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 6060
Откуда: Minsk
Рейтинг сообщения: 0
Тогда - успехов. Получится - поделитесь с народом.

_________________
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка строк, полученных по UART
СообщениеДобавлено: Вс ноя 06, 2016 22:04:34 
Мучитель микросхем

Карма: 4
Рейтинг сообщений: 37
Зарегистрирован: Вт фев 09, 2010 17:52:26
Сообщений: 457
Рейтинг сообщения: 0
good.bad писал(а):
Если с посимвольным приемом все предельно ясно, то как обрабатывать строку, я что-то не соображу. Вернее соображаю, что ее нужно читать из кольцевого буфера, но что-то ничего не получается.

Не пойму, что тут сложного.
Проверяете, если в приемном буфере есть символ-ы, копируете в свой буфер.
Набрали 16 символов проверили контрольную сумму, если ок вывод, если ошибка отбрасываете первый символ, а в конец добавляете один из очереди и снова проверка.
Я тоже использую "Для работы с UART-ом использую довольно известную библиотеку от товарища Peter Fleury."


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка строк, полученных по UART
СообщениеДобавлено: Пн ноя 07, 2016 07:25:06 
Мучитель микросхем
Аватар пользователя

Карма: 4
Рейтинг сообщений: 15
Зарегистрирован: Ср янв 26, 2011 13:43:30
Сообщений: 414
Откуда: С того берега моря
Рейтинг сообщения: 0
ТС, посмотрите книгу В.С. Прокопенко - программирование микроконтроллеров, у него там очень подробно расписанно по UART с примерами в т.ч с приемом строк.

_________________
- Бежит этот подлец-электрон, а вокруг его масса (аж 10 в 23й) штук ионов кремния и 10 в 15й ионов примеси и он, подлец, взаимодействует!


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 185


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y