Вопрос по serialEvent()
- Войдите на сайт для отправки комментариев
Втр, 04/09/2018 - 21:53
Объясните логику работы функции serialEvent():
допустим, только один раз пришел пакет из 10 байтов, вызвалась функция serialEvent(), но в ней на какое-то время запрещено чтение из буфера. Функция serialEvent() так и будет периодически вызываться пока не считаем из буфера или это одноразовый вызов?
Вопросы?
функция serialEvent() вызывается каждый раз, когда байт получен в аппаратный USART на вход RX
DIYMan, внимательно прочитайте мой вопрос!
strarbit, т.е. получается, что если не был обработан полученный байт, то функция больше не вызывается? Если так, тогда какой смысл в функции serialEvent(), если в loop() придется постоянно дергать функцию available() ?
т.е. получается, что если не был обработан полученный байт, то функция больше не вызывается?
Можете указать строку в коде из которой это "получается"?
Vovka, вы код совсем читать не умеете? В коде, что привел DIYMan - наиболее полный ответ на вопрос.
Главная часть вызова SerialEvent() - проверка Serial.availiable(). Вот теперь подумайте - Serial.availiable() становится истинной один раз при приходе 10 байтов или остается такой, пока байты не будут обработаны?
Чеж такую элемементарщину-то обьяснять приходится...
Vovka, DIYMan верно указал. Читайте ответ b707. Также вы можете играть пример Examples>Comunication>Serial Event в IDE arduino
DIYMan, внимательно прочитайте мой вопрос!
Я его внимательно прочитал, и дал ПОЛНЫЙ ответ, поскольку в коде, который вызывает serialEvent - ясными глазёнками видно, при каких условиях этот самый serialEvent вызывается. Что ещё нужно - не понимаю. Ответ дан, полнее некуда.
попу подтеретьготовый код для задачи ТС?Хорошо, давайте начнем с самого начала:
подали питание на МК. На ножку Rx пришел байт, UART его принял, выставил флаг.
Сработало прерывание, выполнилась внутренняя функция и байт оказался в буфере, счетчик байт в буфере стал равным единице.
После этого функция serialEvent() будет вызвана?
Ты код читать умеешь? Что непонятного в приведённом мной куске кода? Перевожу: функция serialEventN вызывается КАЖДЫЙ ПРОХОД loop в том случае, если в приёмном буфере соответствующего UART есть по крайней мере 1 байт. И будет вызываться до посинения, пока все байты из приёмного буфера не вычитать вызовом SerialN.read().
Ещё раз кусок кода привести, или не надо? Там вот ровно такими же словами всё написано.
А, давайте! Начало находится в книге Кернигана и Ритчи.
Давайте Вы прочитаете её от корки до корки, попутно разбирая и запуская примеры.
Потом, после прочтения, разберёте кусок кода, который Вам дали.
После этого у Вас больше не останется вопросов типа тех, что Вы задаёте. А если останутся, то бросайте это дело - не Ваше оно.
Vovka, Вы перепутали форум. На этом форуме не дают призы за интересные вопросы. Так что не ждите призов от DIYMan или кого либо. Здесь такое не практикуется .
Перевожу: функция serialEventN вызывается КАЖДЫЙ ПРОХОД loop в том случае, если в приёмном буфере соответствующего UART есть по крайней мере 1 байт. И будет вызываться до посинения, пока все байты из приёмного буфера не вычитать вызовом SerialN.read().
Как долго я добивался ответа на мой вопрос!
Функция serialEvent() так и будет периодически вызываться пока не считаем из буфера или это одноразовый вызов?
Теперь мне не понятно, зачем сделали функцию serialEvent(), которая вызывается каждый проход loop() - ведь в нутрь loop() можно добавить нужную проверку наличия байта в буфере и делать нужные действия? К чему эти лишние телодвижения?
Патамуша ардуина - для облуч... обучения. Там много сделано избыточно - чтобы просто взять, написать пару команд и все бы сразу замигало и засверкало.
Теперь мне не понятно, зачем сделали функцию serialEvent(), которая вызывается каждый проход loop() - ведь в нутрь loop() можно добавить нужную проверку наличия байта в буфере и делать нужные действия? К чему эти лишние телодвижения?
Теперь мне непонятно, Вы сделали то, что я Вам писал в посте #11?
Вот когда сделаете, тогда и поговорим. Надо же и самому хоть немного напрягаться, а не только требовать готовых ответов.
А почему здесь вы ищете ответы. Все вопросы и притензии к разработчикам.
Я думал, что здесь собрались те, кто разобрался как работает "система Ардуино" и может объяснить чего и как...
"Как работает" и "Почему именно так" - это вопросы, между которыми может лежать пропасть.
Теперь мне непонятно, Вы сделали то, что я Вам писал в посте #11?
С этой книгой я познакомился лет 20 назад... А перед этим писал на асме для 580ИК80А... И я привык, прежде чем что-то писать, нужно разобраться как работает железо и сама "система"... Ардуино я только начал изучать - мне стало интересно почему столько поклонников...
Не про вас анекдот.
Вы ошибаетесь! А можно посмотреть на Ваш сайт, где размещены Ваши разработки?
Как долго я добивался ответа на мой вопрос!
Ответ на твой вопрос тебе был дан сразу. А добивался ты - чтобы тебе разжевали очевидное, вместо того, чтобы чуть наморщить лоб и понять по коду, что там происходит. Но щас не модно - лоб морщить, от этого морщины образуются - а зачем они гламурным кисо?
С этой книгой я познакомился лет 20 назад... А перед этим писал на асме для 580ИК80А...
Уууу, ишшо один "специалист". Если бы ты реально понимал основы программирования - то приведённый кусок кода покрыл бы все вопросы. Так что не пукай в лужу - не знаешь ты ни асма, ни-че-го.
Вы ошибаетесь! А можно посмотреть на Ваш сайт, где размещены Ваши разработки?
Это кому вопрос?
Нажал "Ответить" для qwone
Уууу, ишшо один "специалист". Если бы ты реально понимал основы программирования - то приведённый кусок кода покрыл бы все вопросы. Так что не пукай в лужу - не знаешь ты ни асма, ни-че-го.
Вот даже как! Тогда давай и на твой сайт посмотрим!
Нажал "Ответить" для qwone
Уууу, ишшо один "специалист". Если бы ты реально понимал основы программирования - то приведённый кусок кода покрыл бы все вопросы. Так что не пукай в лужу - не знаешь ты ни асма, ни-че-го.
Вот даже как! Тогда давай и на твой сайт посмотрим!
Ну давай, не вопрос: http://gardenboss.ru, там есть ссылки на исходники на гитхабе, если тебя, помимо PHP и JS ещё С++ интересует. Нужны будут исходники на С# - не стесняйся.
Дитё, не надо меня на слабо брать :)
А как наличие моего сайта относится к Ардуино.
Просто засомневался, что общаюсь с Программистом...
Или Вы считаете что это как меряние пенисами
Я таким тоже не занимаюсь - просто хочу доказательства того, какой у Вас уровень профессионализма..
Так я давно такой туфтой не занимаесь и не вижу смысла оголяться перед Вами.
Слился... ;))
Квон, загоняй его в классы.
Ну давай, не вопрос: http://gardenboss.ru, там есть ссылки на исходники на гитхабе, если тебя, помимо PHP и JS ещё С++ интересует. Нужны будут исходники на С# - не стесняйся.
Дитё, не надо меня на слабо брать :)
PHP и JS ? А сайт сделан на готовом движке!
С++, скорей всего Билдер? :))
Шарп... не, для моих задач и Visual C++ с лихвой!
Дите? Ну-ну... :)))
Кстати, папаша, не слишком ли много гонора? Из простого вопроса развить такой срачь?
А Вы не общаетесь с программистом. Ардуино это хобби. Программист это ну очень расплвчатое понятие.
Вот поэтому, если не до конца понимаете вопрос, то не стоит пытаться что-то объяснять другим!
Но я точно уверен что Си вы не знаете. Современное Си а не ту архаику которую вам напели когда-то в детстве.
Вы слишком большого о себе мнения!
И как Вы можете судить о современном Си, если:
А Вы не общаетесь с программистом.
Квон, загоняй его в классы.
Самому слабо?
Ухожу с форума, не моя компания... Дальнейший срач не интересен!
С этой книгой я познакомился лет 20 назад...
Самое время обновить знакомство. Судя по Вашим вопросам, Вы ничегошеньки из неё не помните. После поста №1 написать то, что Вы написали в посте №3 - это значит, что Вы не поняли ни одной буквы в коде из поста №1.
Так что хотите нормального взрослого к себе отношения - прокачайте матчасть. Пока же Вы только права качаете - это неинтересно.
Ухожу с форума, не моя компания... Дальнейший срач не интересен!
А сиськи показать? Пока сиськи не показал, уходить нельзя! Это правила такие.
PHP и JS ? А сайт сделан на готовом движке!
С++, скорей всего Билдер? :))
Шарп... не, для моих задач и Visual C++ с лихвой!
Дите? Ну-ну... :)))
Кстати, папаша, не слишком ли много гонора? Из простого вопроса развить такой срачь?
1. Да, PHP и JS, фреймворк - Laravel + Bootstrap. Могу и ручками, но смысл? Контроллеры, вьюхи и фронтэнд за меня Laravel не напишет, знаешь ли. Подобный высером ты только подтверждаешь свою некомптентность и малый возраст;
2. С++ деБилдер последний раз юзал где-то лет десять назад, если не более того. С++ - это язык, а деБилдер - IDE. Опять вопиющая некомпетентность с твоей стороны;
3. Что сказать-то хотел? То, что ты не знаешь шарпа - это уже ясно, как и то, что не знаешь и С++;
4. Да, дитё - морально незрелый младенец. Биологический возраст тут не при чём;
5. Не, нормально. Ты же позволяешь себе брызгать во все стороны непроходимой тупостью и упрямством в этой тупости - вот и я волен выказывать гонор так, как мне того хочется. Пуркуа бы и не па, isn't it?
С тобой всё ясно, следующий.
Ухожу с форума, не моя компания...
https://www.youtube.com/watch?v=MZnDzG5lRx0
Интересная тема (гнилая) развивается, для Вовки наверное сайт на ассемблере должен быть написан, тогда он обканчается от восхищения и поймёт свою гнилость (
Беда.....
Не пугайте, а то он и впрямь уйдёт, чего делать-то будем?
С этой книгой я познакомился лет 20 назад... А перед этим писал на асме для 580ИК80А... И я привык, прежде чем что-то писать, нужно разобраться как работает железо и сама "система"... Ардуино я только начал изучать - мне стало интересно почему столько поклонников...
Вы писали на асме? Да не смешите меня. Позанимавшись с ардуино пару лет по выходным, по часику, почитав Кернигана и Ритчи немного полазив в уже ткнутом меня носом коде даже я с моими скромными навыками могу разобраться что и как работает в данном случае. А тут на асме писатель :-)
Или имеется в виду копипаст? И по статье с картинками компиляция?
А ко всем остальным участникам - дискусии ну че накинулись, хороший КлапауцийХХХ мог бы вырасти, написал бы титановый велосипед для SerialEvent.
Ведь смотрите как хорошо все начиналось, тут Вован конкретно в лужу
пернулселУууу, ишшо один "специалист". Если бы ты реально понимал основы программирования - то приведённый кусок кода покрыл бы все вопросы. Так что не пукай в лужу - не знаешь ты ни асма, ни-че-го.
Вот даже как! Тогда давай и на твой сайт посмотрим!