Насколько я понял master.poll() является асинхронной операцией, поэтому важно делать так, как написано в примерах. Асинхронность означает, что функция возвращает управление сразу, а не ожидает завершения какой-то операции.
Насколько я понял master.poll() является асинхронной операцией, поэтому важно делать так, как написано в примерах. Асинхронность означает, что функция возвращает управление сразу, а не ожидает завершения какой-то операции.
может и асинхронна, не знаю, ок, попробую и строго по примерам. Спасибо
Судя по всему не так. У вас получается случайная каша, на которую я не обратил внимания, т.к. не видел примеров использования класса в режиме мастера. Метод poll() должен вызываться постоянно, а не однократно. И каждый раз нужно следить за переменной внутреннего состояния. Т.е. нужно дать задание и потом непрерывно "дергать" объект, проверяя не пришло ли чего. В вашем случае звёзды совпали только частично.
Ну и не обязательно делать 2 запроса. Вполне можно обойтись и одним, запрашивая 2 регистра, но также как в примерах.
Проверил на установке - данные шлем и получаем! Ура!
Теперь беда с отображением полученных данных на экране. Для этого в 56 и 57 явно подставил значения и надеялся получить на экране что нить типа 0.00007656 или 7.656е-005 но дает 0.00
Вариант lcd.print(data.fvalue*100000); единственный для получения результата или можно без умножения?
Посмотрите как реализованы мастеры в примерах к библиотеке и сделайте также. Там применяется автомат состояний через использование case'ов.
Для нескольких запросов там есть расширенный пример.
Там применяется автомат состояний через использование case'ов.
а смысл этого? По шагам:1 - ждем нужное время 2 - делаем запрос на чтение 3- смотрим что там пришло
Т.е. фактически через равные промежутки времени делаем запрос и читаем ответ.
Если помните первые мои образцы скетчов так и строились. Может чего не понимаю, но логика от этого не меняется
Для нескольких запросов там есть расширенный пример.
сейчас гляну...
Насколько я понял master.poll() является асинхронной операцией, поэтому важно делать так, как написано в примерах. Асинхронность означает, что функция возвращает управление сразу, а не ожидает завершения какой-то операции.
про несколько запросов - логика вроде такая:
case 0 ждем 1000мс
case 1 шлем запрос telegram[0]
case 2 обрабатываем ответ
case 0 ждем 1000мс
case 1 шлем запрос telegram[1]
case 2 обрабатываем ответ
и т.д.
У меня вроде тоже самое, нет?
Насколько я понял master.poll() является асинхронной операцией, поэтому важно делать так, как написано в примерах. Асинхронность означает, что функция возвращает управление сразу, а не ожидает завершения какой-то операции.
может и асинхронна, не знаю, ок, попробую и строго по примерам. Спасибо
У меня вроде тоже самое, нет?
Ну и не обязательно делать 2 запроса. Вполне можно обойтись и одним, запрашивая 2 регистра, но также как в примерах.
Т.е. нужно дать задание и потом непрерывно "дергать" объект, проверяя не пришло ли чего.
идею понял, ща переделаю
Переделал, вот что вышло:
Проверил на установке - данные шлем и получаем! Ура!
Теперь беда с отображением полученных данных на экране. Для этого в 56 и 57 явно подставил значения и надеялся получить на экране что нить типа 0.00007656 или 7.656е-005 но дает 0.00
Вариант lcd.print(data.fvalue*100000); единственный для получения результата или можно без умножения?
Очень хотелось бы видеть на экране не только 2 знака после запятой
PS
Разобрался!