[Lua, Программирование микроконтроллеров, DIY или Сделай сам] ESP8266 и Lua: «оттормаживаем» функцию   
    
    
        
    
    
    
    
            
    
        
            
                
                                    
                
                                    
                
                    
                
            
        
    
    
        
            
                
                
                    
                           
                    
                        Автор 
                        Сообщение 
                    
                                        
                        
                            
                                
                                
                                                                                                            news_bot ®
                                                                        
                                                                                                                                                
                                                                            
                                                                                                                
                                            Стаж: 7 лет 8 месяцев                                        
                                                                                                                
                                            Сообщений: 27286                                        
                                                                                                                                                
                                                             
                            
                                
                             
                         
                        
                            
                                
                                    
                                        
                                        
 Небольшая заметка на тему, известную всем кто знает JavaScript, но не вполне очевидная для DIY программирования ESP8266.Задача - опросить датчик, который должен получить запрос на измерение, а ответ будет готов через некоторое время.Одним из вариантов такого действа будет работа через callback функцию и таймер. Код с пояснениями:
do
  -- Эта функция обработает полученный результат
  function call(tb)
      print('\nПришло от датчика:')
      table.foreach(tb, print)
      print('Сейчас я это куда-нибудь отправлю!')
      -- Здесь дальнейшие действия с данными.
      -- .................
  end
  -- Эта функция работы с датчиком
  function askunit(callb)
    -- ... То что надо отправить датчику
      print('\nОтправил запрос датчику')
      -- Ананимный таймер, срабаиывающий один раз
      tmr.create():alarm(1500, tmr.ALARM_SINGLE, function(t)
          -- Уничтожаем внутреннюю ссылку на таймер
          t = nil
          print('\nПодождал и спросил результат.')
          -- Предположим, это результат:
          local res = {temp = 25}
          -- Вызываем callback функцию и передаем ей данные
          if callb then callb(res) end
      end)
  end
  -- Старт получения данны от датчика
  askunit(call)
end
Код для копипасты:
do
  function call(tb)
      print('\nПришло от датчика:')
      table.foreach(tb, print)
      print('Сейчас я это куда-нибудь отправлю!')
  end
  function askunit(callb)
      print('\nОтправил запрос датчику')
      tmr.create():alarm(1500, tmr.ALARM_SINGLE, function(t)
          t = nil
          print('\nПодождал и спросил результат.')
          local res = {temp = 25}
          if callb then callb(res) end
      end)
  end
  askunit(call)
end
Что получилось:
Надеюсь, это решение поможет начинающим любителям Lua быстрее справляться с датчиками.
===========
 Источник:
habr.com
===========
Похожие новости:
- [Разработка систем связи, Программирование микроконтроллеров, Сетевое оборудование, Будущее здесь] Прошивку терминала Starlink скачали и проанализировали
 
- [Lua, DIY или Сделай сам] Esp8266 и Lua: первые шаги
 
- [Программирование микроконтроллеров, Разработка для интернета вещей, Производство и разработка электроники] Тестирование устройств с помощью Robot Framework
 
- [Компьютерное железо, DIY или Сделай сам, Электроника для начинающих] Опыт подключения приёмника Logitech Unifying к интерфейсу M.2
 
- [Ненормальное программирование, Open source, Обработка изображений, Программирование микроконтроллеров] Benchmark OpenCV на STM32
 
- [C++, Программирование микроконтроллеров] Использование coroutines из С++20 в связке с NRF52832 и GTest
 
- [Программирование микроконтроллеров, DIY или Сделай сам, Звук] Как пьезоизлучатель голос искал
 
- [Беспроводные технологии, Научно-популярное, DIY или Сделай сам, Будущее здесь] В Калифорнии водителя оштрафовали за установку тарелки SpaceX Starlink на автомобиль
 
- [Open source, Разработка игр, HTML, Дизайн игр, DIY или Сделай сам] Что случилось с игрой «Колобок» в июне
 
- [CAD/CAM, DIY или Сделай сам] Гриндер: Ленточно-шлифовальный станок
Теги для поиска: #_lua, #_programmirovanie_mikrokontrollerov (Программирование микроконтроллеров), #_diy_ili_sdelaj_sam (DIY или Сделай сам), #_lua, #_esp, #_esp32, #_callback, #_timer, #_lua, #_programmirovanie_mikrokontrollerov (
Программирование микроконтроллеров
), #_diy_ili_sdelaj_sam (
DIY или Сделай сам
)
                                        
                                        
                                        
                                     
                                    
                                    
                                                                    
                                                                                             
                         
                        
                            
                                                                    
                                                             
                         
                    
                    
                
                
            
        
    
    
    
    
    
            
    
            
    
        
    
    
        
                        Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
    
    
        
        Текущее время: 30-Окт 09:01
Часовой пояс: UTC + 5 
            
    
                
| Автор | Сообщение | 
|---|---|
| news_bot ® 
                                                                            
                                                                                                                
                                            Стаж: 7 лет 8 месяцев                                         | |
| Небольшая заметка на тему, известную всем кто знает JavaScript, но не вполне очевидная для DIY программирования ESP8266.Задача - опросить датчик, который должен получить запрос на измерение, а ответ будет готов через некоторое время.Одним из вариантов такого действа будет работа через callback функцию и таймер. Код с пояснениями: do -- Эта функция обработает полученный результат function call(tb) print('\nПришло от датчика:') table.foreach(tb, print) print('Сейчас я это куда-нибудь отправлю!') -- Здесь дальнейшие действия с данными. -- ................. end -- Эта функция работы с датчиком function askunit(callb) -- ... То что надо отправить датчику print('\nОтправил запрос датчику') -- Ананимный таймер, срабаиывающий один раз tmr.create():alarm(1500, tmr.ALARM_SINGLE, function(t) -- Уничтожаем внутреннюю ссылку на таймер t = nil print('\nПодождал и спросил результат.') -- Предположим, это результат: local res = {temp = 25} -- Вызываем callback функцию и передаем ей данные if callb then callb(res) end end) end -- Старт получения данны от датчика askunit(call) end do function call(tb) print('\nПришло от датчика:') table.foreach(tb, print) print('Сейчас я это куда-нибудь отправлю!') end function askunit(callb) print('\nОтправил запрос датчику') tmr.create():alarm(1500, tmr.ALARM_SINGLE, function(t) t = nil print('\nПодождал и спросил результат.') local res = {temp = 25} if callb then callb(res) end end) end askunit(call) end  Надеюсь, это решение поможет начинающим любителям Lua быстрее справляться с датчиками. =========== Источник: habr.com =========== Похожие новости: 
 Программирование микроконтроллеров ), #_diy_ili_sdelaj_sam ( DIY или Сделай сам ) | |
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
    Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 30-Окт 09:01
Часовой пояс: UTC + 5 
