буфер библиотеки U8g2lib.h
- Войдите на сайт для отправки комментариев
Ср, 15/06/2022 - 13:16
Моих знаний "С" недостаточно, чтобы понять, как передать в комп содержимое буфера библиотеки U8g2lib.h?
Что надо вписать в строку:
// Передаём в комп буфер дисплея. Serial.write(u8g2. буфер, 1024);
И чего ты с этим дальше будешь делать, если у тебя знаний нет всё равно?
И чего ты с этим дальше будешь делать, если у тебя знаний нет всё равно?
Как мне объяснили. буфер является членом класса. Брошу содержимое буфера члена класса к ногам любимой девушки и содержимое буфера моего члена окажется там где надо, и у нас будут дети.
Как мне объяснили. буфер является членом класса. Брошу содержимое буфера члена класса к ногам любимой девушки и содержимое буфера моего члена окажется там где надо, и у нас будут дети.
так член-то не твой, а библиотеки u2glib. Поэтому и дети будут от него...
Твой тут не сработает, ибо области действия разные...
Моих знаний "С" недостаточно, чтобы понять, как передать в комп содержимое буфера библиотеки U8g2lib.h?
Что надо вписать в строку:
В какое место этой строки? Вместо слова "буфер"?
Ничего, там всё хитрее. Буфер называется, tile_buf_ptr только он не член, а член члена. А тот член, чей он член, вроде ещё и protected :-(
С членами всегда всё непросто :-(
И, да, кстати, с чего Вы взяли, что его длина равна 1024? Не лучше ли честно написать его размер через высоту и ширину?
В какое место этой строки? Вместо слова "буфер"?
Да.
Так к нему есть доступ из кода или нет?
(128 * 64) \ 8 = 8192 \ 8 = 1024. Он же чёрно-белый.
Argus19, вы б книжек почитали, исходники разобрали и вопросов бы не было.
Я заметил, что на данном форуме многие просто бросают коричневую субстанцию на вентилятор вместо реальной помощи, грубят незнакомым людям и т.п.
Профессиональный неполный ответ дал только ЕвгенийП.
Так к нему есть доступ из кода или нет?
В принципе, есть, если класс пронаследовать. Я же сказал, что он protected, погуглите что это значит.
В принципе, есть, если класс пронаследовать. Я же сказал, что он protected, погуглите что это значит.
Глянул дайджестно. Получается, необходимо создать класс, который будет наследовать защищённые члены наследуемого класса и делает их открытыми?
Если так, то это становится практически не решаемым для формата Arduino Uno из-за слишком большого размера библиотеки U8g2. Скетч для работы с дисплеем GMG12864-06D, BMP-280 и MQ-2 при использовании только вывода двух шрифтов и без использования графических методов, практически упирается в размер памяти.
при наличии доступа к коду есть другие способы получить защищенные члены класса :)
Другой вопрос, на который вы так и не ответили - нафига вам передавать буфер на ПК. если вы пишете скетч вывода показаний датчиков на экран? - очевидно, что в таком скетче никакой буфер никуда отправлять не нужно
А если хотите играться с буфером - выкиньте из кода работу с датчиками. чтобы освбодить место.
Если так, то это становится практически не решаемым для формата Arduino Uno из-за слишком большого размера библиотеки U8g2. Скетч для работы с дисплеем GMG12864-06D, BMP-280 и MQ-2 при использовании только вывода двух шрифтов и без использования графических методов, практически упирается в размер памяти.
Тоже с этим столкнулся, думаю решение переписать под себя тот или иной шрифт под проект со всём нужным набором символов, ну или два/три шрифта. Выкинуть всё не нужное в шрифте, добавить и оставить только необходимое.
Я заметил, что на данном форуме многие просто бросают коричневую субстанцию на вентилятор вместо реальной помощи, грубят незнакомым людям и т.п.
Профессиональный неполный ответ дал только ЕвгенийП.
Да уж тоже неоднократно сталкивался, не вчитываются в вопрос, поверхностно хамнут, и только потом как пройти крещение новенького в классе, начинают хоть какую то инфу давать, или помогать. Помойму умышленно топят форум одни и теже люди! Таким способом вы не избавитесь от самодельщиков и останутся только посвященые.
выиграете совсем немного, в шрифте не так много "ненужного".
У новичков обычно очень неэффективный код, оптимизировав который, можно выиграть в разы больше.
Есть более правильное решение именно с этой библиотекой, в двух словах/основные моменты?
а самодельшики это кто? - кто на форуме 8 лет, и до сих пор не научился сам документацию читать?
Вот например вопрос ТС - что мешает ему самому открыть исходник библиотеки и посмотреть, как называется и описан в ней буфер?
а самодельшики это кто? - кто на форуме 8 лет, и до сих пор не научился сам документацию читать?
А водитель который имеет "стаж 15 лет" и не знает элементарных правил ПДД? На мой взгляд не занимается этим каждый день, а может и раз в год))
Вот например вопрос ТС - что мешает ему самому открыть исходник библиотеки и посмотреть, как называется и описан в ней буфер?
Ему что то мешает!
нет
Какое может быть правильное решение, если не написав ни строчки кода, только включив библиотеку - вы уже занимаете ей ровно половину ОЗУ ардуины?
Если вы используете графический экран на ардуино - у вас в любом случае остается мало места под ваш собственный код. Правильное решение - это выбирать контроллер под задачу.
отличный примерю Такой водитель уж точно не вызывает уважения, по хорошему ему и на дорогах делать нечего.
Точно так же и местные "новички", которые годами задают идиотские вопросы. За что их уважать?
Какое может быть правильное решение, если не написав ни строчки кода, только включив библиотеку - вы уже занимаете ей ровно половину ОЗУ ардуины?
Если вы используете графический экран на ардуино - у вас в любом случае остается мало места под ваш собственный код. Правильное решение - это выбирать контроллер под задачу.
Да с этим не поспоришь, но в случае автора не верю - что не получилось в этом проекте убраться в ресурс мк!
так он же и не пишет, что "не получилось". У него, вроде, все входит. только мало места остается.
А зачем ему буфер куда-то отправлять - он так и не написал.
Я спрашиваю его об этом потому. что с вероятностью 99% ему это понадобилось по ошибке.
Точно так же и местные "новички", которые годами задают идиотские вопросы. За что их уважать?
За то что он человек, так же как и не радивый водитель! Тогда водилу бить надо уже)) Всё мы учимся, относитесь как к ребёнку, к ребёнку мы встаём на колени и объясняем. Ну а тут уж сами выбирайте, речь же о хамстве и бесполезном ответе знающего, хотя бы скажите основные принципы, как мне с экраном в этой беседе, а дальше пусть идёт самостоятельно. Но уж точно, не нужно задаваться вопросом "за что его уважать? ", более опытный человек может задаться точно таким же вопросом к вам! Что то мне подсказывает что мы в разных возрастных категориях!
только мало места остается.
А зачем ему буфер куда-то отправлять - он так и не написал.
Я спрашиваю его об этом потому. что с вероятностью 99% ему это понадобилось по ошибке.
100% что хватит на всё места!
на эту тему вспоминается анекдот:
Человек, гордый тем, что у него 3 яйца, говорит приятелю:
- Поспорим, что у нас с тобой на двоих пять?
- У тебя что, одно?
Нет, не получается. Нельзя сделать член более открытым, чем он был изначально.
Никогда не замечал, чтобы наследование таких классов, как там, увеличивало расход ресурсов.
А задача, конечно же, нерешаема если лениться заглянуть в код библиотеки, а учебник читать
при наличии доступа к коду есть другие способы получить защищенные члены класса :)
Хотите решать задачи - изучайте материал нормально, а если читать "дайджестно", то всё так и останется нерешаемым.
Я начинаю с простого. Сразу потрошить библиотеку может не получиться. Лучший способ обучения - работа с нормально написанным кодом. Как, например, пройти код библиотеки пошагово? И каковы указанные b707 способы?
Если я, кроме вывода показаний датчиков, начну строить суточный график их показаний, то гарантированно упрусь в память. IDE уже сейчас ругается, что недостаточно места и возможна нестабильная работа.
Я уже делал ловушку для блока питания с передачей буфера библиотеки Гайвера в комп для последующего анализа. Делал прямую загрузку изображения с ПК в ардуино. Здесь запрещено приводить ссылки на сторонние ресурсы и нельзя приложить архив со всеми кодами, включая экзешники для ПК.
Если я, кроме вывода показаний датчиков, начну строить суточный график их показаний, то гарантированно упрусь в память. IDE уже сейчас ругается, что недостаточно места и возможна нестабильная работа.
Вы серьёзно собираетесь отправлять в ПК для анализа картинку с построенным графиком? Не значения, по которым она построена, а именно картинку? Может я чего-то не понял?
Если я, кроме вывода показаний датчиков, начну строить суточный график их показаний, то гарантированно упрусь в память. IDE уже сейчас ругается, что недостаточно места и возможна нестабильная работа.
и поэтому вы решили отправить в ПК весь буфер экрана, чтобы потом из него извлечь данные??? Я, конечно, оказался прав. что вам буфер нужен для какой-то фигни, но такого бреда даже мне в голову не пришло....
Не проще отправлять в комп просто данные датчиков и уже в ПК по ним строить графики? Вместо передачи 1024 байт можно обойтись 1-2 байтом на каждое значение.... и расход памяти при этом не станет больше, чем сейчас.
IDE уже сейчас ругается, что недостаточно места и возможна нестабильная работа.
причина этого, в первую очередь - в том что вы пишете код без понимания, "по хорошим примерам", изучая учебники "дайджестно"
Если Вы так считаете, то и флаг Вам в руки. Я всегда считал, что лучший способ обучения - начать читать хороший учебник, причём не "дайджестно", а глубоко. Без этого у Вас любая задача всегда будет "нерешаемой" или решаемой методом тыка - авось сработает.
Мне неинтересно делать примеры из учебника. Гораздо гораздее решать конкретные задачи читая учебник. В моём случае, так получалось понять быстрее и закрепить прочнее.
Вы серьёзно собираетесь отправлять в ПК для анализа картинку с построенным графиком? Не значения, по которым она построена, а именно картинку? Может я чего-то не понял?
Да. Именно картинку. Или туда, или обратно. Проблема только в доступе к буферу библиотеки, который оказался зачем-то защищённым. Вот пример:
https://drive.google.com/file/d/1lj1K_-hNl4CZSeWLbedLGLo6AAVL-xCo/view?u...
Есть желание не только получить картинку из буфера, но и записать в нужное место буфера, нужную информацию. Например, пересылать пиктограммы из ПК по мере необходимости, чтобы не хранить их в памяти Arduino. Совершенно необязательно всегда делать устройство на Arduino автономным.
Как видите, вопрос вроде бы простой, а точного ответа так и нет.
Как видите, вопрос вроде бы простой, а точного ответа так и нет.
так потому и нет, что ждете, пока ответ на вас с неба упадет. Почему б не набрать в гугле что-нить типа "доступ к защищенному члену класса" и почитать. что такое геттеры и сеттеры?
Идею извлечения данных из экранного буфера уже не обсуждаю, по мне так это такой же бред, как вместо передачи файла сначала распечатать текст на бумажке и потом распознавать буквы программой распознования текста...
который оказался зачем-то защищённым.
кстати, защищенные члены класса именно для того и описываются как защищенные, чтобы пользовательский код не имел к ним прямого доступа.
Иными словами - это делается именно для того, чтобы новички не вздумали писать напрямую в экранный буфер библиотеки :)
так потому и нет, что ждете, пока ответ на вас с неба упадет. Почему б не набрать в гугле что-нить типа "доступ к защищенному члену класса" и почитать. что такое геттеры и сеттеры?
Идею извлечения данных из экранного буфера уже не обсуждаю, по мне так это такой же бред, как вместо передачи файла сначала распечатать текст на бумажке и потом распознавать буквы программой распознования текста...
Понятно.... Я вас спросил как запустить библиотеку в режиме отладки. Есть эмулятор или что-то типа того? Или опять порекомендуете вместо ответа почитать?
Скачайте коды с описанием по ссылке из моего предыдущего поста и попробуйте. Там только подключить дисплейчик и запустить программку, не требующую инсталляции. Такой возможности я ни где не встречал, хотя всё лежит на поверхности. И дайте, по возможности, объективную оценку такой возможности взаимодействия ПК и Arduino.
Понятно.... Я вас спросил как запустить библиотеку в режиме отладки. Или опять порекомендуете вместо ответа почитать?
никогда не пользовался отладкой в ардуино.
А посоветовать почитать могу. Когда мне что-то непонятно - я не бегу на форум. а задаю свой вопрос гуглю.
идея известная и ничего невозможного в ней нет. Я сам таким пользуюсь.
У меня на работе ардуина снимает показания с датчиков и управляет компрессором и печкой. Исполнительные механизмы и сенсоры подключены к ардуино, а графический интерфейсом всего этого является программа на Qt в линуксе. Данные туда-обратно передаются по Сериал. Чем-то похоже на вашу идею, с той только разницей, что я не передаю туда-обратно картинки.
При таком раскладе вообще непонятно, зачем вам на ардуине дисплей, если она работает в постоянном контакте с ПК. Пусть ардуина управляет только железом (датчиками. реле и тп), а все всхаимодействие с человеком переносите на комп
Скачайте коды с описанием по ссылке из моего предыдущего поста и попробуйте. Там только подключить дисплейчик и запустить программку, не требующую инсталляции. Такой возможности я ни где не встречал, хотя всё лежит на поверхности. И дайте, по возможности, объективную оценку такой возможности взаимодействия ПК и Arduino.
Если Вам это для чего-то нужно, и результат Вас устраивает - никто же не против! Использовать ПК как хранилище картинок конечно чудно, но ладно, можно представить такую задачу, что ардуина служит неким внешним индикатором чего-то происходящего на ПК. Только проблема тогда непонятна. С библиотекой Гайвера у Вас всё получилось, так и пользуйтесь ей!
По поводу программы. На ПК для начала получаем: "Component 'MSCOMM32.OCX' or one of its dependencies not correctly registered: a file is missing or invalid". Так что она всё-таки требует инсталляции.
У скетча главный недостаток - это расчёт на работу в идеальных условиях. Никакого контроля получаемой информации - сколько там байтиков в порт насыпалось, каких байтиков, от кого - пофиг, рисуем! Ничего интересного.
И да, для чего в обратную сторону кидать картинки, я так и не могу придумать.
С библиотекой Гайвера у Вас всё получилось, так и пользуйтесь ей!
В ней нет контроллера ST7565R. Из-за чего я собственно и задаю вопрос по библиотеке, в которой он есть. При чём в нескольких ипостасях, одна из которых работает.
У вас версия Windows, не поддерживающая манифесты. Предположительно 11-я.
Ни кто и не говорил о божественном откровении. Это - пример.
Что не означает, что такой надобности не существует. Сейчас речь только об этой библиотеке. Есть и другие типы дисплеев, с другим пиксельным форматом.
Как я понимаю, вариантов получить несколько строк кода и закрыть вопрос у меня нет. Меня будут по-прежнему посылать на Google. Вариантов симуляторов для исследования огромной библиотеки, так же не было предложено. Например, у меня установлена VS2012. Есть ли к ней плагин или что-то, что позволит написать проверочный код, подключить библиотеку U8g2 и в пошаговом режиме посмотреть, что будет происходить? Или меня опять пошлют на Google?
Как я понимаю, вариантов получить несколько строк кода и закрыть вопрос у меня нет.
Ну, почему сразу нет? Вы просто разделом форума ошиблись. Вот здесь запостите свою хотелку и получайте свои строки кода на здоровье.
Вы же это в Песочнице запостили , потому мы и подумали, что Ваша цель не "получить несколько строк кода", а научиться писать их самому. Вот Вас и посылали читать.
Недоразумение вышло.
что-то, что позволит написать проверочный код, подключить библиотеку U8g2 и в пошаговом режиме посмотреть, что будет происходить?
для АВР, насколько я знаю, такой возможности нет в принципе (а если есть - меня сейчас поправят и вы получите более полный ответ :)
А если опять отвлечься от сути.... то читая текст программы - шансов понять ее логику в разы больше, чем наблюдая ее работу в симуляторе или отладчике... Вон пошаговую работу АКПП я наблюдаю каждый день уже много лет - но сильно это приблизило меня к пониманию, что у ней унутри?
для АВР, насколько я знаю, такой возможности нет в принципе
В протеусе есть. Но я даже боюсь говорить об этом ТС, ведь тут же последует вопрос как эту библиотеку туда засунуть при дайджестных знаниях.
В ардуино отладки нет, потому что это обучающая игрушка (только никто учиться не хочет, почему-то).
В 328 при наличии нормального программатора - есть.