Например TDA7294

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

Текущее время: Сб мар 21, 2026 23:22:50

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


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



Начать новую тему Ответить на тему  [ Сообщений: 111 ]    , 2, , , ,  
Автор Сообщение
 Заголовок сообщения: Re: Передача строки по UART
СообщениеДобавлено: Пн янв 09, 2017 10:31:06 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2117
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18537
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Demiurg писал(а):
Сравните на досуге,
я и сравнивать не буду :) зато предложу сравнить, как получится у вас в сравнении с моими задачами, решаемыми при помощи sprintf: вывод на дисплей строк заранее неизвестной длины, начиная с заранее неизвестного символа, причем выводмые строки содержат в себе форматрированные числа в нужных местах. т.е. типичная задача для sprintf - получится у вас проще и экономнее?

предполагаю, что экономнее - да, вы добьётесь эффекта. но вот что будет проще - сомневаюсь :))) да и времени потратите кучу. а для задачи в вашей формулировке стандартной функции и нету даже :))) ну, если не считать memcpy при экзотическом подключении дисплея в адресное пространство МК :)))

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
 Заголовок сообщения: Re: Передача строки по UART
СообщениеДобавлено: Пн янв 09, 2017 10:32:26 
Держит паяльник хвостом

Карма: 25
Рейтинг сообщений: 375
Зарегистрирован: Ср апр 13, 2011 11:09:20
Сообщений: 933
Откуда: Екатеринбург
Рейтинг сообщения: 6
Demiurg писал(а):
Я работаю с символьными дисплеями
Сравните на досуге, сколько памяти займет мой способ и с применением стандартных библиотек.

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


Вернуться наверх
 
 Заголовок сообщения: Re: Передача строки по UART
СообщениеДобавлено: Пн янв 09, 2017 11:56:58 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
Alkul писал(а):
Но тут нужна самая малость - компетентный программист. Коим начинающий ни разу не является.

а как стать начинающему компетентным программистом, если не учиться. Стандартные библиотеки это хорошо, но строку из двух символов, типа как хотел ТС, имхо сравнить не сложно
if(buf[0]=='O')
{
if(buf[1]=='N') { TryLaLa(); }
}


Вернуться наверх
 
 Заголовок сообщения: Re: Передача строки по UART
СообщениеДобавлено: Пн янв 09, 2017 13:19:51 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2117
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18537
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
oleg110592 писал(а):
имхо сравнить не сложно
:facepalm: научили бы чему-то по-настоящему полезному, а не давали бы вредные советы...

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
 Заголовок сообщения: Re: Передача строки по UART
СообщениеДобавлено: Пн янв 09, 2017 14:04:16 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1443
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4613
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
afz писал(а):
Аlex писал(а):
В нём и заполняйте массив. А окончание приёма строки будет по нулевому байту.
Только не по нулю. Если набор идет с терминала, признаком окончания строки, обычно, служит символ <CR> (0x0D)
Да пофиг откуда и куда идёт. Строка в Си-представлении всегда оканчивается нулевым символом !


Вернуться наверх
 
 Заголовок сообщения: Re: Передача строки по UART
СообщениеДобавлено: Пн янв 09, 2017 14:17:10 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
ARV писал(а):
не давали бы вредные советы...

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


Вернуться наверх
 
 Заголовок сообщения: Re: Передача строки по UART
СообщениеДобавлено: Пн янв 09, 2017 14:43:33 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2117
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18537
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
oleg110592 писал(а):
выражено только личное мнение
вы в своих программах тоже строки сравниваете приведеным вами методом? если так, то это плохо, и вдвойне плохо советовать это другим.

лично моё мнение, высказать которое имею право :)))

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
 Заголовок сообщения: Re: Передача строки по UART
СообщениеДобавлено: Пн янв 09, 2017 15:28:05 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
ARV писал(а):
вы в своих программах тоже строки сравниваете приведеным вами методом?

Да подобным. В прошлом году сдано изделие на STM32F091 с 5 UARTами для работы во пожаро и взрывоопасных условиях , прошло сертификацию, испытания, уже несколько месяцев не выключаясь работает без нареканий у заказчиков. Думаете надо отзывать? Надо использовать стандартные библиотеки для безопасности?


Вернуться наверх
 
 Заголовок сообщения: Re: Передача строки по UART
СообщениеДобавлено: Пн янв 09, 2017 15:37:43 
Открыл глаза

Зарегистрирован: Пн янв 11, 2016 20:35:49
Сообщений: 54
Рейтинг сообщения: 0
Спасибо конечно всем. Ругаться не стоит.
Вытаскивая по одному символу из массива я тоже считаю ни айс и это не правильно. А если в команде будет 5-8 символов? Это как будет выглядеть? If buf[0] if buf[1] и так пять символов сравнивать будем? Проще тогда уже работать просто с однобайтовыми командами чтоб не парится. Благо символов куча а значить и команд может быть много. Но я так не хочу. Вообще я решил что мои знания в С ещё не очень велеки. Посижу почитаю про строки и работу с ними. Всем спасибо. По результатам отпишусь, что и как сделал. :-)


Вернуться наверх
 
 Заголовок сообщения: Re: Передача строки по UART
СообщениеДобавлено: Пн янв 09, 2017 15:41:35 
Держит паяльник хвостом

Карма: 25
Рейтинг сообщений: 375
Зарегистрирован: Ср апр 13, 2011 11:09:20
Сообщений: 933
Откуда: Екатеринбург
Рейтинг сообщения: 0
oleg110592 писал(а):
В прошлом году сдано изделие на STM32F091 для работы во пожаро и взрывоопасных условиях

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


Вернуться наверх
 
 Заголовок сообщения: Re: Передача строки по UART
СообщениеДобавлено: Пн янв 09, 2017 15:46:49 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
LEX38RUS писал(а):
Вытаскивая по одному символу из массива я тоже считаю ни айс и это не правильно.

стандартные функции думаете не так делают? Если строка длинная организуем цикл
Код:
/* ANSI sez:
 *   The `strcmp' function compares the string pointed to by `s1' to the
 *   string pointed to by `s2'.
 *   The `strcmp' function returns an integer greater than, equal to, or less
 *   than zero, according as the string pointed to by `s1' is greater than,
 *   equal to, or less than the string pointed to by `s2'.  [4.11.4.2]
 */
int
strcmp(const char *s1, const char *s2)
{
    for ( ; *s1 == *s2; s1++, s2++)
   if (*s1 == '\0')
       return 0;
    return ((*(unsigned char *)s1 < *(unsigned char *)s2) ? -1 : +1);
}


Вернуться наверх
 
 Заголовок сообщения: Re: Передача строки по UART
СообщениеДобавлено: Пн янв 09, 2017 17:49:44 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2117
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18537
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
oleg110592 писал(а):
В прошлом году сдано изделие на STM32F091 с 5 UARTами для работы во пожаро и взрывоопасных условиях , прошло сертификацию, испытания, уже несколько месяцев не выключаясь работает без нареканий у заказчиков.
oleg110592 писал(а):
Думаете надо отзывать? Надо использовать стандартные библиотеки для безопасности?
:facepalm: напомнило анекдот про Ваньку-дурачка, у которого х..й отрос до колена, а пользоваться им он так и не научился, только хвастался...

oleg110592 писал(а):
Если строка длинная организуем цикл
ведь можете же, когда захотите, не понятно, к чему Ванькой-дурачком прикидываться-то?

Добавлено after 1 minute 12 seconds:
качественная программа != надежно работающая

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
 Заголовок сообщения: Re: Передача строки по UART
СообщениеДобавлено: Пн янв 09, 2017 18:01:09 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
согласен быть Ванькой да и просто дурачком, тока до колена - увы неверная информация, но хотелось бы очень знать почему нельзя без библиотек сравнивать строки.


Вернуться наверх
 
 Заголовок сообщения: Re: Передача строки по UART
СообщениеДобавлено: Пн янв 09, 2017 18:08:51 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 889
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 6301
Откуда: Minsk
Рейтинг сообщения: 0
ARV писал(а):
oleg110592 писал(а):
Если строка длинная организуем цикл
ведь можете же, когда захотите

Одно другому не противоречит. Длинная строка - парсим в цикле, гарантировано короткая ( например, команда) - для быстрой реакции можно и вышеприведенным способом. Вообще тут многое зависит от конкретных условий.
Кстати, Сишный компилятор ( для ПК ) так и делает, принимая в стеке аргументы в подпрограмму, по-разному для: один - два - много параметров.
СпойлерИ от вкусов . :) Когда я вынужден был по причине здоровья уходить из фирмы, мой "сменщик" начал поносить мой протокол : "Как у тебя слейв мастеру сообщает об ошибке ? " - "В эхо команды 7-й бит = 0, значит, ОК, 1- значит, ошибка" - "Неправильно! Должна выдавать строчку Error" - "А чем лишние 5 байт (при весьма напряженном трафике ) тут помогут ?" - "Так надо!"
"Но ведь дивайс с дивайсом общается, а не с оператором через экран терминала! Дурак ты, братец!" -подумал я. Но не сказал.
ARV, а тон полемики в этой ветке не характерен для Вас, не сочтите за критику.

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


Последний раз редактировалось Jack_A Вт янв 10, 2017 09:40:03, всего редактировалось 2 раз(а).

Вернуться наверх
 
 Заголовок сообщения: Re: Передача строки по UART
СообщениеДобавлено: Пн янв 09, 2017 20:28:16 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2117
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18537
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
можно делать всё, как угодно. но лучше делать всё хорошо :) не так ли?
1. общепризнанные правила хорошего тона программирования гласят, что магические числа по коду - ПЛОХО.
2. т.к. все константы Си суть числа, 'A' и 'B' - это МАГИЧЕСКИЕ ЧИСЛА
из п.1 и п.2 следует, что сравнение строк по буквам в коде - ПЛОХО.

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

какая-такая "быстрая реакция" должна заставить вас писать плохой код? смириться с этим можно разве что при катастрофической нехватке памяти, когда никакие иные средства, кроме перехода на ассемблер, уже не помогают. и не надо мне рассказывать, что в STM32 не хватает памяти/быстродействия, чтобы писать нормальный код!

не надо так!

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
 Заголовок сообщения: Re: Передача строки по UART
СообщениеДобавлено: Пн янв 09, 2017 20:53:10 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 3
интересный подход - читал, вроде когда в кавычках 'O' или 'N', это символы (но не магические числа) и компилятор сам превращает в магические числа, которые в листинге иногда можно посмотреть. Получается строка "ON" - это просто набор из двух магических чисел. Спасибо буду знать.


Вернуться наверх
 
 Заголовок сообщения: Re: Передача строки по UART
СообщениеДобавлено: Пн янв 09, 2017 20:58:00 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1443
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4613
Откуда: Планета Земля
Рейтинг сообщения: 3
Медали: 1
Получил миской по аватаре (1)
Похоже, опять придётся тему разделять ? :)
Лучше бы ТС'у советом помогли, вместо очередного срача в теме с мерениями органов.
По мне, так я бы, для сравнения всего 2-ух байтов, тоже поставил 2 условия, т.к. делать для этого цикл - глупо в любом случае и со всех сторон. И никто мне не докажет обратное.
Каждый былокодит так, как хочет. Так что, давайте не будем флудить в темах, выдавая своё мнение за истинное.

Добавлено after 2 minutes 42 seconds:
oleg110592 писал(а):
Получается строка "ON" - это просто набор из двух магических чисел. Спасибо буду знать.
И я не знал. Тоже теперь буду знать и стараться символы в код не добавлять, а заменять их на числа в их ASCII-представлении :)


Вернуться наверх
 
 Заголовок сообщения: Re: Передача строки по UART
СообщениеДобавлено: Пн янв 09, 2017 20:59:08 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
так ТС определился как раз благодаря маленькому срачику и ушел изучать матчасть. Можно страницу и потереть, чтоб не позориться.


Вернуться наверх
 
 Заголовок сообщения: Re: Передача строки по UART
СообщениеДобавлено: Пн янв 09, 2017 21:38:37 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2117
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18537
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
oleg110592 писал(а):
Получается строка "ON" - это просто набор из двух магических чисел. Спасибо буду знать.
из трех - не благодарите :)))
Аlex писал(а):
Каждый былокодит так, как хочет.
когда у вас спрашивают совета, надеются, что вы умеете и знаете больше, чем вопрошающий, и делаете лучше, чем он. а если вы быдлокодите - то сразу следует предупредить, что ваши советы - быдлокодерские. я бы не стал слушать таких советов.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
 Заголовок сообщения: Re: Передача строки по UART
СообщениеДобавлено: Пн янв 09, 2017 21:54:49 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1443
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4613
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Хорошо, уберём эту вамглазамазолящую приставку и оставим только слово "кодит" :) Смысл моего предложения от этого не изменится.
ARV, при всём моём к Вам уважении, осмелюсь озвучить мнение в Вашу сторону. Последнее время, у меня складывается впечатление, что Вы ходите по форуму только в поисках фраз (слов, предложений), за которые можно зацепиться и, поспорив, попытаться показать себя грамотнее тех, кто их озвучил. Зачем это всё ? Ну высказал кто-то своё мнение, и что ? Зачем на весь форум кричать, что оно ошибочное ? При том, что оно вполне имеет право на жизнь. Вам не приходило никогда в голову, что это мнение могут разделять и другие, коих Вы своими совами тоже огорчаете ? Причём, выставляя себя на посмешище со стороны.
Очень надеюсь, что моё впечатление ошибочно и Вам просто не хватает общения, либо Вы в этих спорах ищите какую-нибудь правду. Ну или ещё что-нибудь...


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

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


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

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


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