Alexey
если есть один отправитель и один получатель, то ничего защищать не нужно
romanetz
Они и глобальным объектом попользуются
Anonymous
Отгораживать мютексом придётся
Можно в объекте хранить однобайтную переменную и через нее информировать что обработан или нет данный объект
romanetz
А если он локальный, пульнул его через очередь, а он невалидный уже
SetPf
я уже подсказал. Создаете объект в том месте, где он никогда не уничтожится (не выйдет из области видимости). Очередь создаете на нужное количество указателей (то есть размер элемента очереди всегда 4 байта). Затем в очередь отправлете указатели на те самые, уже созданные, объекты
Ну вот тут тот самый случай, когда размер данных соизмерим с размером указателя, менеджмент всего этого дела - в моей ситуации будет геморойным. Тут же вся история - про фактически описание то, чего я хочу - наиболее правильно. Т.к. пихнуть данные по значению, предварительно выковыряв из объекта можно... но зачем, если их на выходе обратно пихать.
romanetz
Или будет копия объекта - как это, конструктор через копирование?
Alexey
Они и глобальным объектом попользуются
ну и ничего страшного. Внутри класса могут быть замочки в некоторых методах которые что-то меняют. Но это уже решение другой проблемы, а не передача данных между тасками
Anonymous
Атомарный доступ к ней пилить надо
К байту атомарный доступ
Anonymous
Но да, если объект в локальной памяти то это не поможет
SetPf
Атомарный доступ к ней пилить надо
Не не. с использование очереди объектов, что бы в другой очереди передавать указатели на них это что то из области велосипедостроения 3 рейха.
Alexey
Ну вот тут тот самый случай, когда размер данных соизмерим с размером указателя, менеджмент всего этого дела - в моей ситуации будет геморойным. Тут же вся история - про фактически описание то, чего я хочу - наиболее правильно. Т.к. пихнуть данные по значению, предварительно выковыряв из объекта можно... но зачем, если их на выходе обратно пихать.
Не понятно что из себя будет представлять "менеджмент всего этого дела" Так же не понятно "их на выходе обратно пихать." - это для чего? Если надо менять данные, можно менять через указатели. Если надо через мьютексы менять данные тогда через указатель вызывается метод этого экземпляра а в нем уже берется мьютекс
romanetz
Через очередь
SetPf
Да.
romanetz
Очередь сама по себе так не умеет делать, это надо такой конструктор сделать
Alexey
Копирование объектов через очередь - имхо, бред. Тогда надо делать копирущий конструктор этому классу
Alexey
вообще в с++ можно создать структуру с методами и копировать тогда уже эту структуру
romanetz
Это как?
SetPf
Это как раз тот случай с unsigned long.
SetPf
Это как?
Там данных 3 -4 байта.
SetPf
Тогда зачем вам такой класс?
Ну а почему бы и нет? ООП вся фигня. Что бы не засирать пространство имен функциями над структурой.
Alexey
Это как раз тот случай с unsigned long.
у unsigned long нету принадлежности в к экземпляру. Вам, возможно, сначала стоит разобраться как работает с++ и чем отличается от с. Экземпляр класса нельзя просто так взять и скопировать, а вот unsigned long можно
romanetz
Что-то мне подсказывает, что оверхед будет 100% : +указатель на экземпляр
SetPf
Потому что по факту задача простая - есть область памяти с группированными данными, нужно ее просто скопировать и в другом месте выкинуть. Но как это описать на Цпп.
romanetz
Я недавно этим вопросом интересовался
SetPf
да, можно. Ищите "копирующий конструктор"
Куда мне копировать? В дин память? Если использовать дин память - легче указателями кидаться.
romanetz
Можно ли итерироваться по членам структуры
SetPf
На структурах у меня сейчас сделано, работает. Но хочу на классы поменять.
romanetz
Оказалось, что начиная с C++17 - можно
romanetz
Чтобы произвольную структуру можно было на члены разбирать и собирать
romanetz
gtkwave кто-нибудь пользовался? структуры чтобы отображать почленно во времени. Типа временных диаграмм. Для сложных алгоритмов очень крутая штука.
romanetz
Всякие стеки отлаживать, конечные автоматы
romanetz
Смотришь входные данные, внутренние, выходные - и сразу видно, где и что пошло не так
SetPf
class Command { public: typedef struct { CommandType type; struct { page_id page; var_id var; VarType type; }variable; }serialized_data; // Fields union { struct { CommandType type; struct { page_id page; var_id var; VarType type; }variable; }; private: serialized_data serialized; }data; // Methods /// Constructor & destructor Command(); Command(serialized_data& init_data); Command(CommandType init_type, page_id init_page, var_id init_var, VarType init_var_type); ~Command() {}; /// Serializae & deserialize data for FreeRTOS queue /// @param - NONE /// @return - Memory address const serialized_data* Serialize(void); serialized_data* Deserialize(void); }; // Queues static_queue<Display::Command::serialized_data, 128> output_queue; /// Send message /// bool Send(Display::Command& command) { // Try to push message auto result = xQueueSend(output_queue.handle, command.Serialize(), 0); if(result == pdTRUE) { return true; } else if(result == errQUEUE_FULL) { return false; } else { return false; } } // Try to receive command from queue Display::Command command; auto result = xQueueReceive(output_queue.handle, command.Deserialize(), 0); if(result == pdFALSE) { break; }
SetPf
Короче вот такой обезумевший велосипед у меня получился.
SetPf
трамвай из буханки.jpeg
SetPf
какого размера union получился?
А я пока не собрал =) И т.к. все это дело со структур на этот класс переписываю - не скоро соберу =\
Anonymous
А зачем вы сделали юнион из двух одинаковых структур?
SetPf
А зачем вы сделали юнион из двух одинаковых структур?
Хочу красивое API у класса, что бы оттуда serialized не торчало. Сейчас подумал, оттуда один фиг data торчит, уже криво =\ Да, надо убрать нафиг. Протупил. Жаль что нельзя делать приватными члены анонимных структур =\
SetPf
какого размера union получился?
Ага, черта с два =) enum Class 4 байтный и не меньше, получите ваши 12 байт =)
SetPf
Даже attribute((packed)) не спасает
SetPf
Дак энум класс не пихнешь в битовое поле напрямую без кастов.
Anonymous
И почему класса когда юниона
SetPf
А вся суть ради них считай и затевалась.
Anonymous
Там вообще не пойми зачем класс. Кроме мишуры ни чего не добавляет
SetPf
И почему класса когда юниона
Это как тайпдеф энум, только более типизированный. Не дает неявные касты и не дает че попало пихать, а только из своего списка. И ограничивает область видимости списка.
SetPf
У меня так то все на структурах прекрасно работает.
енот
Здравствуйте. Хочу сделать один девайс на esp8266 (nodeMCU, вероятно) и с eink-экраном. Чтобы он выводил все мои текущие задачи из определенного апи и можно было не тратить постоянно энергию на отображение. Посоветуете какой-нибудь экран? дюйма на 3 хотя бы, на 3,5.
Sid
https://www.aliexpress.com/wholesale?catId=0&initiative_id=AS_20201109021040&SearchText=eink+display
енот
https://www.aliexpress.com/wholesale?catId=0&initiative_id=AS_20201109021040&SearchText=eink+display
Понимаете, сударь, суть вопроса не в том, чтобы найти хоть какой-нибудь экран, а найти тот, с которым удобно работать будет. А так я умею пользоваться поиском на алиэкспресс, спасибо.
енот
я нашел там несколько 2.9" i2c модулей, но хочется то побольше
Sid
я поиграть брал
Sid
читается смотря что, погоду на сегодня с 1.5 нормально
Andy
9 с лишним дюймов на esp32
енот
выглядит как то что надо
енот
вижу там с UART интерфейсом, уже неплохо
енот
интересно, с доставкой в РФ проблем не будет?
Andy
вижу там с UART интерфейсом, уже неплохо
сам экран не имеет никаких интерфейсов только регистры
Andy
интересно, с доставкой в РФ проблем не будет?
нет. качественно упакован. но это не w-shark, это голый экран от kindle
енот
нет. качественно упакован. но это не w-shark, это голый экран от kindle
я не про этот конкретный 9", я про ссылку в общем говорил
Andy
с али то же нормально приходит.
Andy
енот
с али то же нормально приходит.
тут суть вопроса была в том, отправляют ли вообще в рф, сайт то не китайский.
Andy
тут суть вопроса была в том, отправляют ли вообще в рф, сайт то не китайский.
у них не покупал, использовал только как справочник
romanetz
Ну у них и на Али есть магазин так-то
romanetz
Ценник конечно адовый