Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.74/62: Рейтинг темы: голосов - 62, средняя оценка - 4.74
0 / 0 / 0
Регистрация: 13.03.2015
Сообщений: 52

Нужны ли коллбэки или это синтаксический сахарок сомнительно

18.09.2017, 21:57. Показов 13049. Ответов 135
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Коллбэк - исполняемый код, передаваемый посредством указателя в функцию как аргумент.
Обычно механизм коллбэков (касательно mbed) применяется при использовании какой-нибудь обширной библиотеки, оказавшейся строго между физическим уровнем и уровнем приложения.
Классический пример - библиотека файловой системы. Разумно, что мы подключаем библиотеку для физической реализации протокола обмена данными с носителем (HDD, SD-card и т.д.) плюс библиотеку ФС. И на уровне приложения используем что-нибудь вроде функций readFile/writeFile из библиотеки ФС пробрасывая через эти функции указатели на функции readData/writeData из библиотеки физической реализации. Типа все библиотеки работают как черные ящики, всё прекрасно.

Проблема в том, что в самой популярной библиотеке ФС для mbed - FatFs - не используются коллбэки. В числе файлов библиотеки дается файлик, который нужно подправить руками. Т.е. чуточку залезть в черный ящик. Т.е. концепция "библиотека - это черный ящик, а коллбэки - это способ послать в черный ящик исполняемый код" ступает нафиг. Т.е. зачем тогда нужны коллбэки? Механизм-то их применения нихрена не простой. По сравнению с "подправить файлик в библиотеке". Не, я понимаю в библиотеках USB они буйным цветом цветут. Но в случае библиотеки USB такой механизм навязан разработчиками библиотеки. Есть ли кейсы на которые механизмы коллбэков ложаться идеально ровно? Или коллбэки - это синтаксический сахар сомнительного свойства?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.09.2017, 21:57
Ответы с готовыми решениями:

Зачем нужны коллбэки?
Зачем нужны коллбэк функции,и когда их разумно применить?

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

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

135
0 / 0 / 0
Регистрация: 20.07.2012
Сообщений: 620
26.09.2017, 16:09
Студворк — интернет-сервис помощи студентам
А кто, собственно, сказал, что у обработчика прерываний не может быть параметров?... :)
0
1 / 1 / 0
Регистрация: 19.09.2012
Сообщений: 924
26.09.2017, 16:27
Цитата Сообщение от Myrmyk
А кто, собственно, сказал, что у обработчика прерываний не может быть параметров?... :)
Кстати, они во многих случаях есть, только доставать их надо из регистров, а не (как обычно) из стека.
0
0 / 0 / 0
Регистрация: 20.07.2012
Сообщений: 620
26.09.2017, 16:39
Хм... Я имел ввиду ситуацию, когда, допустим, прерывания от восьми uart обрабатываются одним обработчиком, которому в качестве параметра передается ядром указатель на конкретный объект uart, ну да не суть...

Важно понимать, что обработчик прерывания - это логическая абстракция. Вызов функции обработчика не всегда происходит в момент перехода по вектору. Это зависит от договоренности.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 382
26.09.2017, 16:55
Ах ти бозе мой, ути он знает слова "регистры, стек" :)))) Практическое вам задание на выходные - достаньте что-то из регистров. А потом посмотрите - а что вы там достали - это то, что вы ожидали достать, или что-то совершенно случайное? :))))
А у некоторых МК нет ни регистров, ни стека, в том виде, в котором они есть в других МК.
Эти все ваши догадки и рассуждения - от вашего незнания темы.
Пожалуй, надо запастись попкорном, поглазеть на потуги писюков справиться с аппаратными прерываниями :))
0
1 / 1 / 0
Регистрация: 19.09.2012
Сообщений: 924
26.09.2017, 16:56
Цитата Сообщение от Myrmyk
Хм... Я имел ввиду ситуацию, когда, допустим, прерывания от восьми uart обрабатываются одним обработчиком, которому в качестве параметра передается ядром указатель на конкретный объект uart, ну да не суть...
Ну по сути это тоже самое. Ничего не мешает написать крошечный хендлер, который достанет из регистров/портов нужные подробности и передаст их в виде параметра собственно в обработчик.
0
1 / 1 / 0
Регистрация: 19.09.2012
Сообщений: 924
26.09.2017, 16:57
Цитата Сообщение от BusMostir
Ах ти бозе мой
А вы, собственно, кто такой?
0
0 / 0 / 0
Регистрация: 20.07.2012
Сообщений: 620
26.09.2017, 17:07
BusMostir
Вы, как и любой неофит, любой области знаний видите общее лишь с одного угла зрения и считаете своё видение истинным и единственно правильным.

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

Со временем приходится признать, что принципиальной разницы в том, ворочаем ли мы байтами, обращаясь к dma и usart, или sql запросами и api интернет ресурсов... Имеем ли мы дело со спутниками, роботами или табличными процессорами... Пишем ли мы на си, haskell, python... На самом деле нет.

Принципы везде одинаковы. Выражения у них разные. Но база и общий подход неизменны.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 382
26.09.2017, 17:12
Цитата Сообщение от Myrmyk
, прерывания от восьми uart обрабатываются одним обработчиком, которому в качестве параметра передается ядром указатель на конкретный объект uart, ну да не суть....
Ерунда. Во-первых, в нормальных МК для разных УАРТов будут разные вектора прерываний, а во-вторых, если этого нет, то определение сработавшего УАРТА однозначно будет по флагам прерываний. "Объекта УАРТ" не существует в понятии МК.

Писюки, харэ уже ваши домыслы распространять, они ложные. Учитесь прилежно, и вы поймете, что вы ой как ошибались.
В том то ваша ошибка и состоит, что представляя программирование в общих чертах, вы не видите различий того, на чем будет работать это ваше творение. Программировать можно и калькуляторы, раньше были такие - Электраника МК-61. Вроде бы и программирование, но...
На уровне писюка действительно нет разницы, что перед тобой - УАРТ или УСРТ, или вообще ЛПТ. А на уровне МК - это три большие разницы.
0
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
26.09.2017, 17:13
Цитата Сообщение от Myrmyk
Принципы везде одинаковы. Выражения у них разные. Но база и общий подход неизменны.
Блажен кто верует.
Принципы одинаковы , подход и осознание окружающего различен.
Привыкнув к "розовым очкам" из прослоек вы пытаетесь свой, на никому не нужный опыт, навязать окружающим.
Поймите в эмбедде и код и железо первичны, а ВЫ закрываетесь от железа прослойками и гордо выпячивая грудь заявляете "и мы могем".
Да не стать вам эмбеддерами пока не забудете свой, повторюсь - НА НИКОМУ НЕ НУЖНЫЙ ОПЫТ!
0
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
26.09.2017, 17:16
Цитата Сообщение от ivsy
Ничего не мешает написать крошечный хендлер, который достанет из регистров/портов нужные подробности и передаст их в виде параметра собственно в обработчик.
ivsy, ты зачем учишь молодых грязным хакам? Это не только на не нужно , но и опасно...
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 382
26.09.2017, 17:17
Да они и не будут становиться эмбеддерами. Они вообще заблудились форумом и непонятно с какого хрена их сюда в этот форум прибило то. Видимо, в теме писюков у них не складывается, так решили попробовать что-то помельче, а тут - нннаа тебе - тут свои корифеи. Это то их и задевает. Они то думали, что они спецы чтоль, а выходит, что уже вторую неделю не могут с прерыванием да коллбэком разобраться. И такие гипотезы строят, и другие... А всё не выходит каменный цветок.
Теперь влезли в регистры исчо. Ну пусть, пусть. То-то удивление у них потом будет, когда обломаются их ожидания.
0
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
26.09.2017, 17:19
BusMostir, миграция писюков ясна и понятна, они не востребованы или неуспешны на писюках.
Решили здесь хоть что-то поймать, но здесь им не уютно...
0
0 / 0 / 0
Регистрация: 20.07.2012
Сообщений: 620
26.09.2017, 17:20
Ок, ок... Пойду в numpy массивы складывать...
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 382
26.09.2017, 17:23
Да да, уж будьте так любезны, достопочтенный Myrmyk, лучше уж там, где вы более успешны...
0
1 / 1 / 0
Регистрация: 19.09.2012
Сообщений: 924
26.09.2017, 17:37
Цитата Сообщение от dosykus_2
НА НИКОМУ НЕ НУЖНЫЙ ОПЫТ!
Интересно, с какого перепугу вы с автобусным мастером решили, что вы наделены полномочиями говорить за всех?
0
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
26.09.2017, 17:41
ivsy, опыт батенька, опыт. И он же мне подсказывает что путного из тебя не выйдет.
0
1 / 1 / 0
Регистрация: 19.09.2012
Сообщений: 924
26.09.2017, 17:44
Цитата Сообщение от BusMostir
Они вообще заблудились форумом и непонятно с какого хрена их сюда в этот форум прибило то.
Вам ничего не мешает поднять глаза чуть выше и прочитать название сайта. Затем вы могли бы подумать почему он так называется и на какую аудиторию ориентрован изнчально. Нормальному человеку это помогло бы осознать, что он сказал глупость, но конкретно вам я даже не буду предлагать подумать дважды над увиденным. Просто потому, что думать верхней головой вы патологически не способны.
Цитата Сообщение от BusMostir
Видимо, в теме писюков у них не складывается
И снова от вас пошел поток досиковщины. Как обычно. Думать у вас не получается, зато додумывать - сколько угодно. Что характерно, паттерны поведения что у вас, что у досикуса одинаковы. Одно из двух, или "илита илиту видит издалека" или же "илитное программирование" приводит к полному атрофированию умственных способностей. Второй вариант представляется более логичным, учитывая как сложно вам дается понимание простейших вещей.
0
1 / 1 / 0
Регистрация: 19.09.2012
Сообщений: 924
26.09.2017, 17:48
Цитата Сообщение от dosykus_2
ivsy, опыт батенька, опыт.
Никакой опыт не дает права говорить от имени всех.
Цитата Сообщение от dosykus_2
[И он же мне подсказывает что путного из тебя не выйдет.
То, что из вас ничего путного не вышло, вовсе не значит, что это хоть отдаленно касается меня. К тому же мне совершенно насрать на ваше мнение по этому поводу.
0
0 / 0 / 0
Регистрация: 24.08.2009
Сообщений: 3
26.09.2017, 17:55
Цитата Сообщение от dosykus_2
Цитата Сообщение от Myrmyk
Принципы везде одинаковы. Выражения у них разные. Но база и общий подход неизменны.
Блажен кто верует.
Принципы одинаковы , подход и осознание окружающего различен.
Привыкнув к "розовым очкам" из прослоек вы пытаетесь свой, на никому не нужный опыт, навязать окружающим.
Поймите в эмбедде и код и железо первичны, а ВЫ закрываетесь от железа прослойками и гордо выпячивая грудь заявляете "и мы могем".
Да не стать вам эмбеддерами пока не забудете свой, повторюсь - НА НИКОМУ НЕ НУЖНЫЙ ОПЫТ!

А скажите мне написание драйверов с нуля.. Ну или например использование аппаратной платформы PC-104(тут я возможно слегка не корректно выразился) в своих целях БЕЗ каких либо ОС (поверьте такое встречается) Это ембд? Или писюк??
Мне,как и Myrmyk, например не ясно чем отличается программирование для МК или например программирование нового железа для ПК. Есть конечно программисты СУБД и им ,иногда, даже не обязательно знать под какую ОС они пишут. Есть системщики которые возятся с конкретными аппаратными платформами и знают все особенности не только конкретной ОС но и аппаратной части.
Кстати есть и такие которые в погоне за оптимизации МАТЕМАТИКИ!!! изучают как передаются параметры в конкретной аппаратной платформе. Замечу это не сиситемщики. Это люди пишущие ЦОС.
0
1 / 1 / 0
Регистрация: 19.09.2012
Сообщений: 924
26.09.2017, 18:09
Цитата Сообщение от kos
Замечу это не сиситемщики. Это люди пишущие ЦОС.
Именно.

P.S. визг здешней "илиты" имеет совершенно банальное объяснение: они банально боятся конкуренции, поскольку кроме как светодиодиком мигать, программировать они ни в зуб ногой.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.09.2017, 18:09
Помогаю со студенческими работами здесь

Зачем биты нужны это меньше байтов но int 32 бита но я не допер зачем это нужно это 4 байта то есть int не может больше 4 байт весить?
Вот еще один вопрос зачем биты нужны это меньше байтов но int 32 бита но я не допер зачем это нужно это 4 байта то есть int не может...

Сомнительно работают клавиши
Доброго дня! Возникла такая ситуация: пользователь жаловался на проблемы с клавой Genius GK-100011, мол плохо нажимаются кнопки. Говорит...

Сомнительно сильные просадки ФПС
Добрый вечер господа. Имею сборку: ASRock X370 Pro4 Ryzen 7 2700 GIGABYTE AMD Radeon RX 590 GAMING R2.0 ОЗУ x2 Kingston HyperX...

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

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
120
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru