буфер библиотеки U8g2lib.h

Argus19
Offline
Зарегистрирован: 08.05.2022

Моих знаний "С" недостаточно, чтобы понять, как передать в комп содержимое буфера библиотеки U8g2lib.h?

Что надо вписать в строку:

// Передаём в комп буфер дисплея.
 Serial.write(u8g2. буфер, 1024); 

 

rkit
Offline
Зарегистрирован: 23.11.2016

И чего ты с этим дальше будешь делать, если у тебя знаний нет всё равно?

Argus19
Offline
Зарегистрирован: 08.05.2022

rkit пишет:

И чего ты с этим дальше будешь делать, если у тебя знаний нет всё равно?

Как мне объяснили. буфер является членом класса. Брошу содержимое буфера члена класса к ногам любимой девушки и содержимое буфера моего члена окажется там где надо, и у нас будут дети.

b707
Offline
Зарегистрирован: 26.05.2017

Argus19 пишет:

Как мне объяснили. буфер является членом класса. Брошу содержимое буфера члена класса к ногам любимой девушки и содержимое буфера моего члена окажется там где надо, и у нас будут дети.

так член-то не твой, а библиотеки u2glib. Поэтому и дети будут от него...

Твой тут не сработает, ибо области действия разные...

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Argus19 пишет:

Моих знаний "С" недостаточно, чтобы понять, как передать в комп содержимое буфера библиотеки U8g2lib.h?

Что надо вписать в строку:

// Передаём в комп буфер дисплея.
 Serial.write(u8g2. буфер, 1024); 

 

В какое место этой строки? Вместо слова "буфер"?

Ничего, там всё хитрее. Буфер называется, tile_buf_ptr только он не член, а член члена. А тот член, чей он член, вроде ещё и protected :-(

С членами всегда всё непросто :-(

И, да, кстати, с чего Вы взяли, что его длина равна 1024? Не лучше ли честно написать его размер через высоту и ширину?

Argus19
Offline
Зарегистрирован: 08.05.2022

ЕвгенийП пишет:

В какое место этой строки? Вместо слова "буфер"?

Да.

ЕвгенийП пишет:
Ничего, там всё хитрее. Буфер называется, tile_buf_ptr только он не член, а член члена. А тот член, чей он член, вроде ещё и protected :-(

Так  к нему есть доступ из кода или нет?

ЕвгенийП пишет:
И, да, кстати, с чего Вы взяли, что его длина равна 1024? Не лучше ли честно написать его размер через высоту и ширину?

(128 * 64) \ 8 = 8192 \ 8 = 1024. Он же чёрно-белый.

 

 

 

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Argus19, вы б книжек почитали, исходники разобрали и вопросов бы не было.

Argus19
Offline
Зарегистрирован: 08.05.2022

andycat пишет:
Argus19, вы б книжек почитали, исходники разобрали и вопросов бы не было.

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

Профессиональный неполный ответ дал только ЕвгенийП.

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Argus19 пишет:

Так  к нему есть доступ из кода или нет?

В принципе, есть, если класс пронаследовать. Я же сказал, что он protected, погуглите что это значит.

Argus19
Offline
Зарегистрирован: 08.05.2022

ЕвгенийП пишет:

В принципе, есть, если класс пронаследовать. Я же сказал, что он protected, погуглите что это значит.

 Глянул дайджестно. Получается, необходимо создать класс, который будет наследовать защищённые члены наследуемого класса и делает их открытыми?

 Если так, то это становится практически не решаемым для формата Arduino Uno из-за слишком большого размера библиотеки U8g2. Скетч для работы с дисплеем GMG12864-06D, BMP-280 и MQ-2 при использовании только вывода двух шрифтов и без использования графических методов, практически упирается в размер памяти.

 

b707
Offline
Зарегистрирован: 26.05.2017

при наличии доступа к коду есть другие способы получить защищенные члены класса :)

Другой вопрос, на который вы так и не ответили - нафига вам передавать буфер на ПК. если вы пишете скетч вывода показаний датчиков на экран? - очевидно, что в таком скетче никакой буфер никуда отправлять не нужно

А если хотите играться с буфером - выкиньте из кода работу с датчиками. чтобы освбодить место.

neid86@gmail.com
Offline
Зарегистрирован: 28.10.2014

Argus19 пишет:

Если так, то это становится практически не решаемым для формата Arduino Uno из-за слишком большого размера библиотеки U8g2. Скетч для работы с дисплеем GMG12864-06D, BMP-280 и MQ-2 при использовании только вывода двух шрифтов и без использования графических методов, практически упирается в размер памяти.

 


Тоже с этим столкнулся, думаю решение переписать под себя тот или иной шрифт под проект со всём нужным набором символов, ну или два/три шрифта. Выкинуть всё не нужное в шрифте, добавить и оставить только необходимое.

neid86@gmail.com
Offline
Зарегистрирован: 28.10.2014

Argus19 пишет:

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

Профессиональный неполный ответ дал только ЕвгенийП.

 


Да уж тоже неоднократно сталкивался, не вчитываются в вопрос, поверхностно хамнут, и только потом как пройти крещение новенького в классе, начинают хоть какую то инфу давать, или помогать. Помойму умышленно топят форум одни и теже люди! Таким способом вы не избавитесь от самодельщиков и останутся только посвященые.

b707
Offline
Зарегистрирован: 26.05.2017

neid86@gmail.com пишет:
думаю решение переписать под себя тот или иной шрифт под проект со всём нужным набором символов, ну или два/три шрифта. Выкинуть всё не нужное в шрифте, добавить и оставить только необходимое.

выиграете совсем немного, в шрифте не так много "ненужного".

У новичков обычно очень неэффективный код, оптимизировав который, можно выиграть в разы больше.

neid86@gmail.com
Offline
Зарегистрирован: 28.10.2014

Есть более правильное решение именно с этой библиотекой, в двух словах/основные моменты?

b707
Offline
Зарегистрирован: 26.05.2017

neid86@gmail.com пишет:
Таким способом вы не избавитесь от самодельщиков и останутся только посвященые.

а самодельшики это кто? - кто на форуме 8 лет, и до сих пор не научился сам документацию читать?

Вот например вопрос ТС - что мешает ему самому открыть исходник библиотеки и посмотреть, как называется и описан в ней буфер?

neid86@gmail.com
Offline
Зарегистрирован: 28.10.2014

b707 пишет:

а самодельшики это кто? - кто на форуме 8 лет, и до сих пор не научился сам документацию читать?


А водитель который имеет "стаж 15 лет" и не знает элементарных правил ПДД? На мой взгляд не занимается этим каждый день, а может и раз в год))

b707 пишет:

Вот например вопрос ТС - что мешает ему самому открыть исходник библиотеки и посмотреть, как называется и описан в ней буфер?


Ему что то мешает!

b707
Offline
Зарегистрирован: 26.05.2017

neid86@gmail.com пишет:
Есть более правильное решение именно с этой библиотекой, в двух словах/основные моменты?

нет

Какое может быть правильное решение, если не написав ни строчки кода, только включив библиотеку - вы уже занимаете ей ровно половину ОЗУ ардуины?

Если вы используете графический экран на ардуино - у вас в любом случае остается мало места под ваш собственный код. Правильное решение - это выбирать контроллер под задачу.

b707
Offline
Зарегистрирован: 26.05.2017

neid86@gmail.com пишет:
водитель который имеет "стаж 15 лет" и не знает элементарных правил ПДД?)

отличный примерю Такой водитель уж точно не вызывает уважения, по хорошему ему и на дорогах делать нечего.

Точно так же и местные "новички", которые годами задают идиотские вопросы. За что их уважать?

neid86@gmail.com
Offline
Зарегистрирован: 28.10.2014

b707 пишет:

Какое может быть правильное решение, если не написав ни строчки кода, только включив библиотеку - вы уже занимаете ей ровно половину ОЗУ ардуины?

Если вы используете графический экран на ардуино - у вас в любом случае остается мало места под ваш собственный код. Правильное решение - это выбирать контроллер под задачу.


Да с этим не поспоришь, но в случае автора не верю - что не получилось в этом проекте убраться в ресурс мк!

b707
Offline
Зарегистрирован: 26.05.2017

neid86@gmail.com пишет:
в случае автора не верю - что не получилось в этом проекте убраться в ресурс мк!

так он же и не пишет, что "не получилось". У него, вроде, все входит. только мало места остается.

А зачем ему буфер куда-то отправлять - он так и не написал.

Я спрашиваю его об этом потому. что с вероятностью 99% ему это понадобилось по ошибке.

neid86@gmail.com
Offline
Зарегистрирован: 28.10.2014

b707 пишет:

Точно так же и местные "новички", которые годами задают идиотские вопросы. За что их уважать?


За то что он человек, так же как и не радивый водитель! Тогда водилу бить надо уже)) Всё мы учимся, относитесь как к ребёнку, к ребёнку мы встаём на колени и объясняем. Ну а тут уж сами выбирайте, речь же о хамстве и бесполезном ответе знающего, хотя бы скажите основные принципы, как мне с экраном в этой беседе, а дальше пусть идёт самостоятельно. Но уж точно, не нужно задаваться вопросом "за что его уважать? ", более опытный человек может задаться точно таким же вопросом к вам! Что то мне подсказывает что мы в разных возрастных категориях!

neid86@gmail.com
Offline
Зарегистрирован: 28.10.2014

b707 пишет:

только мало места остается.

А зачем ему буфер куда-то отправлять - он так и не написал.

Я спрашиваю его об этом потому. что с вероятностью 99% ему это понадобилось по ошибке.


100% что хватит на всё места!

b707
Offline
Зарегистрирован: 26.05.2017

neid86@gmail.com пишет:
Что то мне подсказывает что мы в разных возрастных категориях!

на эту тему вспоминается анекдот:

 Человек, гордый тем, что у него 3 яйца, говорит приятелю:

 - Поспорим, что у нас с тобой на двоих пять?
 - У тебя что, одно?

 

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Argus19 пишет:
Получается, необходимо создать класс, который будет наследовать защищённые члены наследуемого класса и делает их открытыми?

Нет, не получается. Нельзя сделать член более открытым, чем он был изначально.

Argus19 пишет:
практически не решаемым для формата Arduino Uno из-за слишком большого размера библиотеки U8g2.

Никогда не замечал, чтобы наследование таких классов, как там, увеличивало расход ресурсов.

А задача, конечно же, нерешаема если лениться заглянуть в код библиотеки, а учебник читать

Argus19 пишет:
дайджестно
Хотите решать задачи - изучайте материал нормально, а если читать "дайджестно", то всё так и останется нерешаемым.

Argus19
Offline
Зарегистрирован: 08.05.2022

b707 пишет:

при наличии доступа к коду есть другие способы получить защищенные члены класса :)

ЕвгенийП пишет:

Хотите решать задачи - изучайте материал нормально, а если читать "дайджестно", то всё так и останется нерешаемым.

 

 Я начинаю с простого. Сразу потрошить библиотеку может не получиться. Лучший способ обучения - работа с нормально написанным кодом. Как, например, пройти код библиотеки пошагово? И каковы указанные b707 способы?

b707 пишет:
Другой вопрос, на который вы так и не ответили - нафига вам передавать буфер на ПК. если вы пишете скетч вывода показаний датчиков на экран? - очевидно, что в таком скетче никакой буфер никуда отправлять не нужно

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

Я уже делал ловушку для блока питания с передачей буфера библиотеки Гайвера в комп для последующего анализа. Делал прямую загрузку изображения с ПК в ардуино. Здесь запрещено приводить ссылки на сторонние ресурсы и нельзя приложить архив со всеми кодами, включая экзешники для ПК.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Argus19 пишет:
Лучший способ обучения - работа с нормально написанным кодом.
Если Вы так считаете, то и флаг Вам в руки. Я всегда считал, что лучший способ обучения - начать читать хороший учебник, причём не "дайджестно", а глубоко. Без этого у Вас любая задача всегда будет "нерешаемой" или решаемой методом тыка - авось сработает.

kalapanga
Offline
Зарегистрирован: 23.10.2016

Argus19 пишет:

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

Вы серьёзно собираетесь отправлять в ПК для анализа картинку с построенным графиком? Не значения, по которым она построена, а именно картинку? Может я чего-то не понял?

b707
Offline
Зарегистрирован: 26.05.2017

Argus19 пишет:

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

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

Не проще отправлять в комп просто данные датчиков и уже в ПК по ним строить графики? Вместо передачи 1024 байт можно обойтись 1-2 байтом на каждое значение.... и расход памяти при этом не станет больше, чем сейчас.

b707
Offline
Зарегистрирован: 26.05.2017

Argus19 пишет:

IDE уже сейчас ругается, что недостаточно места и возможна нестабильная работа.

причина этого, в первую очередь - в том что вы пишете код без понимания, "по хорошим примерам", изучая учебники "дайджестно"

Argus19
Offline
Зарегистрирован: 08.05.2022

ЕвгенийП пишет:

Если Вы так считаете, то и флаг Вам в руки. Я всегда считал, что лучший способ обучения - начать читать хороший учебник, причём не "дайджестно", а глубоко. Без этого у Вас любая задача всегда будет "нерешаемой" или решаемой методом тыка - авось сработает.

 Мне неинтересно делать примеры из учебника. Гораздо гораздее решать конкретные задачи читая учебник. В моём случае, так получалось понять быстрее и закрепить прочнее.

kalapanga пишет:

Вы серьёзно собираетесь отправлять в ПК для анализа картинку с построенным графиком? Не значения, по которым она построена, а именно картинку? Может я чего-то не понял?

 Да. Именно картинку. Или туда, или обратно. Проблема только в доступе к буферу библиотеки, который оказался зачем-то защищённым. Вот пример:

https://drive.google.com/file/d/1lj1K_-hNl4CZSeWLbedLGLo6AAVL-xCo/view?u...

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

 Как видите, вопрос вроде бы простой, а точного ответа так и нет.

 

 

b707
Offline
Зарегистрирован: 26.05.2017

Argus19 пишет:

 Как видите, вопрос вроде бы простой, а точного ответа так и нет.

так потому и нет, что ждете, пока ответ на вас с неба упадет. Почему б не набрать в гугле что-нить типа "доступ к защищенному члену класса" и почитать. что такое геттеры и сеттеры?

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

b707
Offline
Зарегистрирован: 26.05.2017

Argus19 пишет:

который оказался зачем-то защищённым.

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

Иными словами - это делается именно для того, чтобы новички не вздумали писать напрямую в экранный буфер библиотеки :)

Argus19
Offline
Зарегистрирован: 08.05.2022

b707 пишет:

так потому и нет, что ждете, пока ответ на вас с неба упадет. Почему б не набрать в гугле что-нить типа "доступ к защищенному члену класса" и почитать. что такое геттеры и сеттеры?

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

 Понятно.... Я вас спросил как запустить библиотеку в режиме отладки. Есть эмулятор или что-то типа того? Или опять порекомендуете вместо ответа почитать?

 Скачайте коды с описанием по ссылке из моего предыдущего поста и попробуйте. Там только подключить дисплейчик и запустить программку, не требующую инсталляции. Такой возможности я ни где не встречал, хотя всё лежит на поверхности. И дайте, по возможности, объективную  оценку такой возможности взаимодействия ПК и Arduino.

 

b707
Offline
Зарегистрирован: 26.05.2017

Argus19 пишет:

 Понятно.... Я вас спросил как запустить библиотеку в режиме отладки. Или опять порекомендуете вместо ответа почитать?

никогда не пользовался отладкой в ардуино.

А посоветовать почитать могу. Когда мне что-то непонятно - я не бегу на форум. а задаю свой вопрос гуглю.

Цитата:
Скачайте коды с описанием по ссылке из моего предыдущего поста и попробуйте. Там только подключить дисплейчик и запустить программку, не требующую инсталляции. Такой возможности я ни где не встречал, хотя всё лежит на поверхности. И дайте, по возможности, объективную  оценку такой возможности взаимодействия ПК и Arduino.

идея известная и ничего невозможного в ней нет. Я сам таким пользуюсь. 

У меня на работе ардуина снимает показания с датчиков и управляет компрессором и печкой. Исполнительные механизмы и сенсоры подключены к ардуино, а графический интерфейсом всего этого является программа на Qt в линуксе. Данные туда-обратно передаются по Сериал. Чем-то похоже на вашу идею, с той только разницей, что я не передаю туда-обратно картинки.

При таком раскладе вообще непонятно, зачем вам на ардуине дисплей, если она работает в постоянном контакте с ПК. Пусть ардуина управляет только железом (датчиками. реле и тп), а все всхаимодействие с человеком переносите на комп

kalapanga
Offline
Зарегистрирован: 23.10.2016

Argus19 пишет:

Скачайте коды с описанием по ссылке из моего предыдущего поста и попробуйте. Там только подключить дисплейчик и запустить программку, не требующую инсталляции. Такой возможности я ни где не встречал, хотя всё лежит на поверхности. И дайте, по возможности, объективную  оценку такой возможности взаимодействия ПК и Arduino.

Если Вам это для чего-то нужно, и результат Вас устраивает - никто же не против! Использовать ПК как хранилище картинок конечно чудно, но ладно, можно представить такую задачу, что ардуина служит неким внешним индикатором чего-то происходящего на ПК. Только проблема тогда непонятна. С библиотекой Гайвера у Вас всё получилось, так и пользуйтесь ей! 

По поводу программы. На ПК для начала получаем: "Component 'MSCOMM32.OCX' or one of its dependencies not correctly registered: a file is missing or invalid". Так что она всё-таки требует инсталляции.

У скетча главный недостаток - это расчёт на работу в идеальных условиях. Никакого контроля получаемой информации - сколько там байтиков в порт насыпалось, каких байтиков, от кого - пофиг, рисуем! Ничего интересного.

И да, для чего в обратную сторону кидать картинки, я так и не могу придумать.

 

Argus19
Offline
Зарегистрирован: 08.05.2022

kalapanga пишет:

 С библиотекой Гайвера у Вас всё получилось, так и пользуйтесь ей!

В ней нет контроллера ST7565R. Из-за чего я собственно и задаю вопрос по библиотеке, в которой он есть. При чём в нескольких ипостасях, одна из которых работает.

kalapanga пишет:
По поводу программы. На ПК для начала получаем: "Component 'MSCOMM32.OCX' or one of its dependencies not correctly registered: a file is missing or invalid".

У вас версия Windows, не поддерживающая манифесты. Предположительно 11-я.

kalapanga пишет:
У скетча главный недостаток - это расчёт на работу в идеальных условиях. Никакого контроля получаемой информации - сколько там байтиков в порт насыпалось, каких байтиков, от кого - пофиг, рисуем! Ничего интересного.

Ни кто и не говорил о божественном откровении. Это - пример.

kalapanga пишет:
И да, для чего в обратную сторону кидать картинки, я так и не могу придумать.

 Что не означает, что такой надобности не существует. Сейчас речь только об этой библиотеке. Есть и другие типы дисплеев, с другим пиксельным форматом.

 Как я понимаю, вариантов получить несколько строк кода и закрыть вопрос у меня нет. Меня будут по-прежнему посылать на Google. Вариантов симуляторов для исследования огромной библиотеки, так же не было предложено. Например, у меня установлена VS2012. Есть ли к ней плагин или что-то, что позволит написать проверочный код, подключить библиотеку U8g2 и в пошаговом режиме посмотреть, что будет происходить? Или меня опять пошлют на Google?

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Argus19 пишет:

 Как я понимаю, вариантов получить несколько строк кода и закрыть вопрос у меня нет. 

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

Вы же это в Песочнице запостили , потому мы и подумали, что Ваша цель не "получить несколько строк кода", а научиться писать их самому. Вот Вас и посылали читать.

Недоразумение вышло.

b707
Offline
Зарегистрирован: 26.05.2017

Argus19 пишет:

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

для АВР, насколько я знаю, такой возможности нет в принципе (а если есть - меня сейчас поправят и вы получите более полный ответ :)

А если опять отвлечься от сути.... то читая текст программы - шансов понять ее логику в разы больше, чем наблюдая ее работу в симуляторе или отладчике... Вон пошаговую работу АКПП я наблюдаю каждый день уже много лет - но сильно это приблизило меня к пониманию, что у ней унутри?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

b707 пишет:

для АВР, насколько я знаю, такой возможности нет в принципе

В протеусе есть. Но я даже боюсь говорить об этом ТС, ведь тут же последует вопрос как эту библиотеку туда засунуть при дайджестных знаниях. 

rkit
Offline
Зарегистрирован: 23.11.2016

В ардуино отладки нет, потому что это обучающая игрушка (только никто учиться не хочет, почему-то).

В 328 при наличии нормального программатора - есть.