Я честно пытаюсь, пытаюсь понять умных человеков. Проблема, как Вы верно заметили, в отсутствии у меня базовых знаний. Вы объясняете элементарные, на Ваш взгляд, вещи исходя из своего уровня, а я со своего уровня из воспринимаю их как татарскую грамоту. Я был бы признателен, если бы ткнули меня носом туда, где можно почерпнуть знания, необходимые для понимания написанного Вами в этой ветке. Все что вижу непонятного сразу пытаюсь загуглить как оно работает, но не всегда доходит с первого раза. Да и со второго тоже.
Спасибо за рекомендацию, прям сейчас и начну - на больничном времени вагон ))) Если еще что то порекомендуете почитать для понимания азов - буду признателен (главное чтобы было написано доступным для непрограммиста языком).
Возможно не все так однозначно: сидел мучал сегодня скетч, обратил внимание что если размер буфера задаю равным количеству символов, но строку 80 скетча (из поста 19) излагаю в следующей редакции:
(то есть убираю лишние преобразования в String), то скетч работает без глюков, причем довольно долго (сколько у меня терпения хватает). Вариантов два - либо опять случайность, либо мне срочно нужно почитать про работу String (собственно чем и занимаюсь последние сутки).
Отвечу сам себе - чуда не случилось, стало вылетать в другом месте. При размере буфера +1 байт, работает нормально. Запейсал в скрижали.
Порекомендуйте пожалуйста ide (под пк на windows) в которой можно примеры из книжки проверять - а то мне знакома только Arduino IDE, в книжке на первом же примере споткнулся на #include <iostream>
2. Огромное количество онлайн ИДЕ и для с++ тоже. Набери в Яндексе online IDE. И выбери - какое понравится. Для учебы это проще. Многие позволяют регистрацию и будут помнить твои задачки от раза к разу.
1. Я изменил несколько строк в твоем скетче из 19 и он работает.собственно функцию getMonthShort() и строчку 80 ;)))))
Спасибо за пример, не могли бы вы ткнуть носом где про этот FlashStringHelper почитать можно на простом русском языке, на уровне доступном начинающему (всё что смог нагуглить, объясняет через высокие материи, которые мне пока непонятны)? Или возможно будете любезны, и распишите что происходит в каждом действии переделанной функции (вижу букв кода стало гораздо меньше, чем получилось у меня, но перестало быть понятно)
wdrakula пишет:
2. Огромное количество онлайн ИДЕ и для с++ тоже. Набери в Яндексе online IDE. И выбери - какое понравится. Для учебы это проще. Многие позволяют регистрацию и будут помнить твои задачки от раза к разу.
Ок, спасибо. Отстал я от жизни, привык что все нужно инсталлировать себе на комп )))
Порекомендуйте пожалуйста ide (под пк на windows) в которой можно примеры из книжки проверять - а то мне знакома только Arduino IDE, в книжке на первом же примере споткнулся на #include <iostream>
Да, собственно, любая. Начиная от классической MS VS, и заканчивая какой-нибудь Atollic TrueSTUDIO, которая позволяет писать код как для ПК, так и для МК.
Dinosaur пишет:
...не могли бы вы ткнуть носом где про этот FlashStringHelper почитать можно
Ищите по ключевому слову PROGMEM
Цитата:
на простом русском языке, на уровне доступном начинающему
Боюсь, Ваши требования чрезмерны.
Ардуино - открытая система, для которой пишут все, кому не лень. Поэтому не всегда можно найти даже информацию на английском, ориентированную исключительно на программистов.
Учитесь пользоваться тем, что есть. (а нередко кроме исходников ничего и нет)
Спасибо за пример, не могли бы вы ткнуть носом где про этот FlashStringHelper почитать можно на простом русском языке, на уровне доступном начинающему (всё что смог нагуглить, объясняет через высокие материи, которые мне пока непонятны)? Или возможно будете любезны, и распишите что происходит в каждом действии переделанной функции (вижу букв кода стало гораздо меньше, чем получилось у меня, но перестало быть понятно)
Прочитать - думаю - негде. Строк кода стало не просто меньше! ;)) Она стала одна.
Авторы реализации Стринг для Ардуино решили, что нужна интеграция с прогмем-строками. Для этого при сосздании операций "+" или преобразования нужно отличать указатель на строку от указателя в прогмем.
Для этого придумано имя класса "__FlashStringHelper". У этого класс нет экземпляров. Это только способ немного обмануть компилятор. Макрос F() переопределяет прогмем-строку в указатель на это вот хитрое имя класса. А для аргументов типа "указатель на этот хелпер" есть перегрузка соответствующих операций.
Так я и использовал уже готовый инструмент из стрингов: у тебя есть прогмем-стринги с именами месяцев, так? Вот и нужно вернуть их просто в виде указателя на хелпер. А с ним уже справится конструктор класса String(). Понятно? Зачем писать новый код для того, что уже написано другими?
Для этого придумано имя класса "__FlashStringHelper". У этого класс нет экземпляров. Это только способ немного обмануть компилятор. Макрос F() переопределяет прогмем-строку в указатель на это вот хитрое имя класса. А для аргументов типа "указатель на этот хелпер" есть перегрузка соответствующих операций.
Так я и использовал уже готовый инструмент из стрингов: у тебя есть прогмем-стринги с именами месяцев, так? Вот и нужно вернуть их просто в виде указателя на хелпер. А с ним уже справится конструктор класса String(). Понятно? Зачем писать новый код для того, что уже написано другими?
Спасибо за объяснили, пока не совсем понял (как правильно заметили ранее, базы нет), поэтому сперва проштудирую учебник (разберусь с классами, указателями) а затем постараюсь осмыслить. Всем признателен!
Я честно пытаюсь, пытаюсь понять умных человеков. Проблема, как Вы верно заметили, в отсутствии у меня базовых знаний. Вы объясняете элементарные, на Ваш взгляд, вещи исходя из своего уровня, а я со своего уровня из воспринимаю их как татарскую грамоту. Я был бы признателен, если бы ткнули меня носом туда, где можно почерпнуть знания, необходимые для понимания написанного Вами в этой ветке. Все что вижу непонятного сразу пытаюсь загуглить как оно работает, но не всегда доходит с первого раза. Да и со второго тоже.
Спасибо за рекомендацию, прям сейчас и начну - на больничном времени вагон ))) Если еще что то порекомендуете почитать для понимания азов - буду признателен (главное чтобы было написано доступным для непрограммиста языком).
(то есть убираю лишние преобразования в String), то скетч работает без глюков, причем довольно долго (сколько у меня терпения хватает). Вариантов два - либо опять случайность, либо мне срочно нужно почитать про работу String (собственно чем и занимаюсь последние сутки).
Отвечу сам себе - чуда не случилось, стало вылетать в другом месте. При размере буфера +1 байт, работает нормально. Запейсал в скрижали.
Порекомендуйте пожалуйста ide (под пк на windows) в которой можно примеры из книжки проверять - а то мне знакома только Arduino IDE, в книжке на первом же примере споткнулся на #include <iostream>
1. Я изменил несколько строк в твоем скетче из 19 и он работает.
собственно функцию getMonthShort() и строчку 80 ;)))))
2. Огромное количество онлайн ИДЕ и для с++ тоже. Набери в Яндексе online IDE. И выбери - какое понравится. Для учебы это проще. Многие позволяют регистрацию и будут помнить твои задачки от раза к разу.
Спасибо за пример, не могли бы вы ткнуть носом где про этот FlashStringHelper почитать можно на простом русском языке, на уровне доступном начинающему (всё что смог нагуглить, объясняет через высокие материи, которые мне пока непонятны)? Или возможно будете любезны, и распишите что происходит в каждом действии переделанной функции (вижу букв кода стало гораздо меньше, чем получилось у меня, но перестало быть понятно)
Ок, спасибо. Отстал я от жизни, привык что все нужно инсталлировать себе на комп )))
В данный момент такой вариант работает:
Порекомендуйте пожалуйста ide (под пк на windows) в которой можно примеры из книжки проверять - а то мне знакома только Arduino IDE, в книжке на первом же примере споткнулся на #include <iostream>
...не могли бы вы ткнуть носом где про этот FlashStringHelper почитать можно
на простом русском языке, на уровне доступном начинающему
Ардуино - открытая система, для которой пишут все, кому не лень. Поэтому не всегда можно найти даже информацию на английском, ориентированную исключительно на программистов.
Учитесь пользоваться тем, что есть. (а нередко кроме исходников ничего и нет)
Спасибо за пример, не могли бы вы ткнуть носом где про этот FlashStringHelper почитать можно на простом русском языке, на уровне доступном начинающему (всё что смог нагуглить, объясняет через высокие материи, которые мне пока непонятны)? Или возможно будете любезны, и распишите что происходит в каждом действии переделанной функции (вижу букв кода стало гораздо меньше, чем получилось у меня, но перестало быть понятно)
Прочитать - думаю - негде. Строк кода стало не просто меньше! ;)) Она стала одна.
return
reinterpret_cast<
const
__FlashStringHelper *>(pgm_read_ptr_near(month_names + (getMonth() - 1)));
Сейчас поясню, что это и для чего.
Авторы реализации Стринг для Ардуино решили, что нужна интеграция с прогмем-строками. Для этого при сосздании операций "+" или преобразования нужно отличать указатель на строку от указателя в прогмем.
Для этого придумано имя класса "__FlashStringHelper". У этого класс нет экземпляров. Это только способ немного обмануть компилятор. Макрос F() переопределяет прогмем-строку в указатель на это вот хитрое имя класса. А для аргументов типа "указатель на этот хелпер" есть перегрузка соответствующих операций.
Так я и использовал уже готовый инструмент из стрингов: у тебя есть прогмем-стринги с именами месяцев, так? Вот и нужно вернуть их просто в виде указателя на хелпер. А с ним уже справится конструктор класса String(). Понятно? Зачем писать новый код для того, что уже написано другими?
Так я и использовал уже готовый инструмент из стрингов: у тебя есть прогмем-стринги с именами месяцев, так? Вот и нужно вернуть их просто в виде указателя на хелпер. А с ним уже справится конструктор класса String(). Понятно? Зачем писать новый код для того, что уже написано другими?
Спасибо за объяснили, пока не совсем понял (как правильно заметили ранее, базы нет), поэтому сперва проштудирую учебник (разберусь с классами, указателями) а затем постараюсь осмыслить. Всем признателен!