Котуинко

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

Сообщение 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/
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15677
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

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

Сообщение 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";
  }

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

Сообщение Reflector »

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

Сообщение 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:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение 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
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

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

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

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

Сообщение Reflector »

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

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

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

Сообщение oleg110592 »

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

Сообщение Reflector »

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

Сообщение BOB51 »

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

Сообщение oleg110592 »

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

Сообщение BOB51 »

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

Сообщение oleg110592 »

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

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

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

Сообщение BOB51 »

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

Сообщение Reflector »

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

Сообщение BOB51 »

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

Сообщение OKF »

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

Сообщение BOB51 »

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

Сообщение OKF »

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

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