Как правильно обрабатывать строки из Serial?

Тема в разделе "Arduino & Shields", создана пользователем regent.correon, 4 дек 2018.

  1. parovoZZ

    parovoZZ Гуру

    Это для тех, кто уже знает, что такое ModBus.
    с применением знаний, приведенных в этой статье?
    Имхуется мне, что надо остановиться на чем-то одном, а не пытаться объять не необъятное.
     
  2. SergeiL

    SergeiL Оракул Модератор

    Остался, но я же писал, он на ассемблере и под другое семейство процессоров ;)
    Там еще тест утилита под MS-DOS, 1995 был же, не было ардуин тогда:)
     

    Вложения:

    • TST.C
      Размер файла:
      11 КБ
      Просмотров:
      458
    • PULT.ASM.txt
      Размер файла:
      18,4 КБ
      Просмотров:
      524
    Последнее редактирование: 10 дек 2018
  3. regent.correon

    regent.correon Нерд

    Так modbus вроде аналогично делает - не? Либо ascii режим либо еще как? Там же вроде также или я чего-то недопонял?
     
  4. regent.correon

    regent.correon Нерд

    Благодарю, ассемблер вроде еще не до конца забыл - попробую посмотреть.
     
  5. regent.correon

    regent.correon Нерд

    Народ, решил остановиться на связи посредством HC-12, с софтовым решением по разделению мастера и слейвов. Попробую реализацию modbus, но встает другой вопрос. Из тестов понял, что у меня бывают моменты когда пакет еще пришел не полностью, либо частично потерялся. Если потерялся - отбрасываем, а если не полный - тоже не есть хорошо. Не буду же я ждать прихода пакета до конца - тогда будут постоянные тормоза с основным циклом программы. Ну и с переполнением буфера тоже получается глюк - буфер наполнился например первым пакетом, а второй не влез - потерялся. в результате от первого пакет пришел, а от второго потерялся "хвост" короче опять разбираюсь...
     
  6. regent.correon

    regent.correon Нерд

    Верное предположение. Есть основные базовые знания, как "гонять" по байтам инфу, но при попытке увязать основной цикл программы и общение с другими девайсами посредством ascii строк - получается каша. :(
     
  7. SergeiL

    SergeiL Оракул Модератор

    HC-12 или RS485 - это физический уровень.
    Все остальное (протокол) выше, и не зависит от физики. :)
     
    ostrov нравится это.
  8. parovoZZ

    parovoZZ Гуру

    нужен трансивер с буфером и с аппаратным обнаружением ошибок.
     
  9. SergeiL

    SergeiL Оракул Модератор

    :)
     
  10. regent.correon

    regent.correon Нерд

    Опять таки в 20.9 Multi-processor Communication Mode приведены примеры которые ориентированы на прием/передачу как основное и по ходу не рассчитаны на то, что будет исполняться еще что-то и на разных девайсах. В данном случае на 2х девайсах будет работать, а на 3х получится каша, на что я и нарываюсь раз за разом....
     
  11. regent.correon

    regent.correon Нерд

    Сложно а следовательно дорого. Вот чувствую, что софтовая реалаизация должна быть, но пока видимо еще не переварил на сознательном уровне.
     
  12. regent.correon

    regent.correon Нерд

    А контроллеры Ардуино UNO /Mega и HC-12 модули к ним.
     
  13. SergeiL

    SergeiL Оракул Модератор

    Ну при чем здесь количество девайсов. Хоть 100 девайсов. Всем рулит мастер. Девайсы ему прекрасно ответят.
     
    Igor68 нравится это.
  14. AlexU

    AlexU Гуру

    Нарываетесь скорее потому, что не используете протоколов обмена данными. Говоря другими словами что-то как-то шлёте и надеетесь получить нормальные данные.
    И если хотите использовать контроллеры типа Arduino UNO/Mega, то скорее всего протокол придётся городить самому, в виду ограниченности ресурсов контроллеров.
     
    Igor68 нравится это.
  15. AlexU

    AlexU Гуру

    Глубоко вопрос не изучал, пробежался по диагонали, но вроде как там аппаратно реализована фильтрация пакетов по адресу получателя. Поэтому данный функционал как раз и рассчитан на то, что будет что-то ещё исполняться.
     
  16. parovoZZ

    parovoZZ Гуру

    nRF дорого??? Lora дорого???
     
  17. regent.correon

    regent.correon Нерд

    HC-12 и MAX-485 в наличии. Но для HC-12 не нужно будет возиться с проведением кабелей.
     
  18. ostrov

    ostrov Гуру

    Я использовал HC-12 в качестве беспроводной альтернативы RS-485. Как сказано выше, программной разницы никакой, разве что настройки модуля добавить и скорость подкорректировать с целью уменьшения помех.В остальном тоже самое. Один главный, остальные ведомые. Пакеты одинаковой длины (желательно), стартовый и стоповый байт, контрольная сумма для надежности. Таймауты на прием, подтверждение получение пакета и тд и тп, смотря насколько заморочено требуется сделать.
     
  19. Диапазон 433 засран конкретно, домашние метеостанции, беспроводные дверные звонки, авто сигнализации, радио управляемые игрушки и т.д.
    Без протокола, обеспечивающего гарантированную доставку данных не обойтись, нужно это учитывать.
    На модбасе протокол предусматривает использование crc, ошибки на приемной стороне вы можете получать из за наведенных помех (разряды статики, плохой кабель) и не обрабатывать такие запросы, мастер в этом случае повторит запрос, но таких ошибок может быть существенно меньше чем от загруженного rf канала (соседские дети вдруг решили испытать новые игрушки).
     
  20. b707

    b707 Гуру

    Алексей. вы не первый раз уже это пишете. Хватит пугать - все это к HC-12 не относится. Насколько я помню прошлые дискуссии - Вы банально не отличаете цифровых передатчиков от аналогового
     
    Последнее редактирование: 10 дек 2018