Arduino framework: сколько экземпляров SoftwareSerial можно использовать одновременно с esp32

Ussing популярная библиотека https://github.com/plerup/espsoftwareserial/ могу ли я иметь несколько портов SoftwareSerial (например, 6 портов).

Я readme говорю: “ несколько экземпляров могут быть активны одновременно”, но не отвечайте на количество, просто скажите несколько. Также не говорите, будут ли экземпляры работать нормально или будут иметь какие-то проблемы. Ref: https://github.com/plerup/espsoftwareserial/#readme

Будет здорово прочитать ответ от кого-то с опытом работы с этой конкретной библиотекой и фреймворком arduino.

, 👍1

Обсуждение

что вы пробовали?, @jsotola

Третий абзац readme, на который вы ссылаетесь: "Предоставляется та же функциональность, что и соответствующая библиотека AVR**, но несколько экземпляров могут быть активны одновременно**"., @Majenko

Я голосую за то, чтобы закрыть этот вопрос, потому что вопрос напрямую связан с ответом..., @Majenko

@Majenko Честно говоря, "несколько" - не очень хороший ответ на вопрос "сколько". Знаете ли вы о каких-либо ограничениях на количество одновременно прослушиваемых портов (помимо необходимых контактов)?, @chrisl

@chrisl "несколько" - это единственный ответ, который можно дать. У вас может быть больше одного. Сколько будет зависеть от многих факторов, таких как скорость передачи данных, которую вы используете, частота приема данных, что еще делает программа в то же время и т. Д. Факторы, которые мы не можем предсказать. Поэтому ответ таков: "да, у вас может быть несколько", и это все, что вы можете получить., @Majenko


1 ответ


1

Это не тот вопрос, на который есть ответ. Существует слишком много переменных, чтобы сказать: "У вас может быть сразу X портов".

Сколько их у вас может быть, зависит от таких вещей, как:

  • Скорость передачи данных, которую вы используете: более высокая скорость передачи данных будет означать больше обработки и, следовательно, меньше обработки для запуска других портов.
  • Как часто принимаются данные: Порт, который ничего не получает, не использует никакой обработки. У вас может быть много-много портов, но если только один получает что-то, это не сильно отличается от наличия только одного порта.
  • Что еще делает ваша программа: У вас ограниченные ресурсы. Чем больше вы используете в своей программе, тем меньше доступно для других вещей. Вы используете ОСРВ, а ресурсы и обработка распределены по времени между задачами.

Вы можете максимизировать доступность порта, будучи хитрым и осторожным с выполнением определенных действий на каждом ядре - например, если у вас есть два сильно используемых порта, было бы неплохо привязать один к каждому из ваших двух ядер (при условии двухъядерного ESP32), чтобы они не так сильно мешали друг другу.

Поэтому количество не может быть дано. Точно так же нельзя предсказать, насколько они будут надежны. Однако, судя по тому, как он должен работать, количество, скорее всего, будет "довольно большим", и проблем быть не должно, если у вас их не слишком много.

,