Котуинко

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Котуинко

Сообщение oleg110592 »

[uquote="BOB51",url="/forum/viewtopic.php?p=3924172#p3924172"]Относительно iostream - собственно пока не могу себе представление о "потоке" построить...[/uquote]
взять и пробовать и будет представление:
Если вы хотите использовать STL из популярной IDE Arduino, все, что вам нужно сделать, это скопировать все файлы из каталога avr-stl / include в подкаталог hardware / tools / avr / avr / include установки Arduino. Например, в моей системе я бы скопировал все файлы заголовков сюда: C: Program Files (x86)\arduino-1.0.1\hardware\tools\avr\avr\include.
https://andybrown.me.uk/wk/2011/01/15/t ... c-streams/
Реклама
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15562
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Котуинко

Сообщение BOB51 »

Это не то...
Имеется ввиду понимание сути того "абстрактного понятия" в отношении железа...
У каждого по-своему.
8)
Реклама
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Котуинко

Сообщение oleg110592 »

Так там пример реального железа есть, правда LCD, но и семисегментник так же можно. Только зачем, если есть ардуиновая семисегментная библиотека.
LiquidCrystal поток
Это позволяет вам писать на ЖК-дисплей символьный, используя потоки.

Код: Выделить всё

#include <LiquidCrystal.h>
#include <lcdostream>

LiquidCrystal lcd(2,3,4,5,6,7);


/*
 * Test the LCD output stream
 */

struct TestLcdOstream {

  static void RunTest() {

    lcd.begin(20,4);

    std::olcdstream stream(lcd);

    stream << std::clear()
           << std::move(5,1) << "Hello World";
  }

};
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: Котуинко

Сообщение Reflector »

Я бы потоков на мк избегал, они более тяжеловесные и форматирование там не самое удобное.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15562
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Котуинко

Сообщение BOB51 »

У адуринки все последовательные протоколы сведены к потокам...
"Stream
Stream is the base class for character and binary based streams. It is not called directly, but invoked whenever you use a function that relies on it.
Stream defines the reading functions in Arduino. When using any core functionality that uses a read() or similar method, you can safely assume it calls on the Stream class. For functions like print(), Stream inherits from the Print class.
Some of the libraries that rely on Stream include :

Serial
Wire
Ethernet Client
Ethernet Server
SD
..."

собственно для единства наименования применяемых методов...
Только вот... суть - буферизация массива последовательно принимаемых/отсылаемых данных?..
Или чего иного?... Чего собственно "ПОТОК"?
(или что подразумевает термин ПОТОК по отношению к более понятным методам ассемблера/Си)...
:dont_know:
Реклама
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Котуинко

Сообщение oleg110592 »

[uquote="BOB51",url="/forum/viewtopic.php?p=3924254#p3924254"]Только вот... суть - буферизация массива последовательно принимаемых/отсылаемых данных?[/uquote]
смысл, имхо в наглядности текста программы, могу ошибаться - пусть поправят местные знатоки С++.
Обычно пограмисты потоки так делают:

Код: Выделить всё

lcd.print("GPS #");
lcd.print(gpsno);
lcd.print(" date: ");  
lcd.print(day);
lcd.print("-");
lcd.print(month);
lcd.print("-");
lcd.println(year);
с потоками С++ так будет:

Код: Выделить всё

lcd << "GPS #" << gpsno << " date: " <<
day << "-" << month << "-" << year << endl;
Реклама
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18546
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Котуинко

Сообщение ARV »

oleg110592 писал(а):Обычно пограмисты потоки так делают:
возможно, это какие-то особые программисты... не особые на Си делают так:

Код: Выделить всё

printf(LCD, "GPS #%d\tdate:%.2d-%.2d-%.4d\n", gpsno, day, month, year);
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: Котуинко

Сообщение Reflector »

У меня будет практически как с новым std::format() из С++20, только шаблонный вариант, зато с полным контролем ошибок на стадии компиляции.

Код: Выделить всё

lcd.printf<"GPS #{} date: {0>2}-{0>2}-{}">(gpsno, day, month, year);
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Котуинко

Сообщение oleg110592 »

мы тут про программирование ардуино - stdio and hence printf() isn't built into the Arduino environment
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: Котуинко

Сообщение Reflector »

Там много чего не встроено... Написание либы форматирования - точно такое же развлечение, как и написание любой другой либы :)
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15562
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Котуинко

Сообщение BOB51 »

За варианты print(), println() и соответствующего форматированного вывода особо ничего нового...
8)
Вопрос каким боком это к ПОТОКУ соотносится - обработкой данных буфера или пакетом пересылки?
Куда там чего "течет"...
:dont_know:
А за расшифровку понимания содержимого термина "ПОТОК" ....
НИЧЕГО...
жаль... снова придется самому разбираться...
:(
Это как в прошлый раз - термин ПАРСИНГ - оказался всего-то анализом и сортировкой входных данных по мере их поступления - я когда прожку загрузки КОТУИНКО делал даже и не подозревал, что можно анализ символов строк *.hex файла тем мудреным термином назвать! (а может еще и обматюкать как "парсинг потока данных файла формата intel hex8 для бутлоадера").
:tea:
Да и насчет "чего встроено" в ардуинке... - там за последнее время много чего понапихали - для той версии, что под 7-10ку расчитана (1.8.13 к примеру со всеми "обновлениями платформ"). Только те обновления (и в части компиляторов) сидят в "скрытом каталоге", а не в основном каталоге в program files.
Я в те дебри не лезу - анализ IDE и ее компиляторов - это уже задача КОТОВ ПОМАТЕРЕЕ (а оные все еще ДРЕМЛЮТЬ).
:beer:
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Котуинко

Сообщение oleg110592 »

первоисточник уже не раз предлагался
Цель создания С++ была в том, чтобы пользователь мог определить новые
типы данных, работа с которыми была бы столь же удобна и эффективна как
и со встроенными типами. Таким образом, кажется разумным потребовать,
чтобы средства ввода-вывода для С++ программировались с использованием
возможностей С++, доступных каждому. Представленные здесь потоковые
средства ввода-вывода появились в результате попытки удовлетворить
этим требованиям.
Основная задача потоковых средств ввода-вывода - это процесс
преобразования объектов определенного типа в последовательность символов
и наоборот.
http://www.tdoc.ru/c/programming/cpp/cp ... age20.html
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15562
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Котуинко

Сообщение BOB51 »

Да я то уже много раз перечитывал (и не только того автора)...
СУТЬ самого понятия в приближении к более примитивному виду - обмен данными из буфер массива или какая еще ....
А там только поток ввода и поток вывода.
Но ввод/вывод производятся таки не непрерывно, а по соответствуюшщим заросам...
Или поток принимается как еще один вид данных всего лишь как абстрактное обобщение...
ВОТЬ...
Вобщем... пока то отложимс... до прояснения в той части, которая моим представлением требуется.
Я ж не СИшник по "начальной базе знаний".
8)
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Котуинко

Сообщение oleg110592 »

да в принципе то же самое что и printf, только круче.
Данные разных типов можно смешивать:

Код: Выделить всё

int nAge;
..
cout << "You entered " << nAge << " years old" << endl;
для микроконтроллера вместо cout - lcd или segment7
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15562
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Котуинко

Сообщение BOB51 »

Вобщем похоже таки на "разновидность типа/класса данных" - ибо "базовый класс Stream" относится практически ко всем последовательным коммуникационным протоколам... :roll:
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: Котуинко

Сообщение Reflector »

[uquote="BOB51",url="/forum/viewtopic.php?p=3924499#p3924499"]СУТЬ самого понятия в приближении к более примитивному виду - обмен данными из буфер массива или какая еще ....[/uquote]
Суть в буферизации, которой может и не быть. Выводишь строку через Uart, если там наследование от класса Stream, то должен быть виртуальный метод добавляющий в буфер по одному символу. Если в буфер влезла вся строка, значит можно заниматься чем-то другим, а Uart будет отправлять данные по прерываниям. Если речь о дисплее, то буфера наверно нет и будет блокирующий вывод по одному символу сразу на экран.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15562
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Котуинко

Сообщение BOB51 »

Загрузчик КОТУИНКО обрабатывает "поток данных" побайтово "на лету"... Плюс буфер размером в одну строку *.hex файла для последующего прикладного размещения в ОЗУ ВПД/ВПП.
Т.е. один реальный входной поток по RS232 на скорости 9600 совмещенный с анализом и преобразованием для последующего размещения в оперативном буфере и второй - сброс данных в соответстви с указанными для них адресами в ВПП/ВПД...
Неуж-то и "поток" и "парсинг" уже в дальнем прошлом изучен...?... Правда под ассемблером...
Чтой-то не особо в то верится... Гдей-то ПОДВОХ...
:roll:
OKF
Это не хвост, это антенна
Сообщения: 1392
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: Котуинко

Сообщение OKF »

Это у вас такая фантазия буйная? Потоки, парсинги, подвохи...
Как не вспомнить старинный анекдот: "Пэрэбудова, прискорэння, гластнисть...
- Бидна пташина, опъять москалив найилась!"
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15562
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Котуинко

Сообщение BOB51 »

Это не фантазия, а типичная в С++ терминология, суть которой пока не во всем понятна...
Однако по причине применения в ардуино IDE (там таки С++) требует хотя-бы ознакомительного восприятия.
8)
А насчет "анекдотов с намяком"- пожалте в соответствующий раздел:
https://www.radiokot.ru/forum/viewtopic ... 7&t=101261
:wink:
Разбор технических вопросов с примесью предвзятого отношения к оппоненту, не относящегося к теме обсуждения, часто приводит к ошибочным результатам.
8)
OKF
Это не хвост, это антенна
Сообщения: 1392
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: Котуинко

Сообщение OKF »

Дядя! При всём уважении. Ну если вы ахинею несёте, ну чё ж вам на это не указать то.
Самокритичнее нужно быть! И люди к вам потянуться...
Ответить

Вернуться в «Разные вопросы по МК»