Считывание двух датчиков через Com-Port одновременно

У меня есть два Arduino Nano Every и датчик, подключенный к каждому из них. Вот что происходит:

  • Я загружаю скетч в первый Arduino на Com4 и вижу, что его вывод правильный через Serial Monitor

  • Я открываю новый экземпляр программного обеспечения Arduino, загружаю тот же скетч на второй Arduino на Com6 и вижу, что его вывод правильный. Однако тем временем Arduino на Com4 перестал отправлять или получать данные

  • Если я закрою второй экземпляр IDE и повторно загружу скетч в первый Arduino на Com4, он снова начнет работать.

По сути, у меня есть два Arduino, которые я не могу считывать одновременно.

Датчики не подключены, поэтому я не знаю, в чем проблема. Разве ком-порты не должны быть независимыми?

, 👍1


2 ответа


Лучший ответ:

0

ОБНОВЛЕНИЕ, сам ответ:

Это был сломанный USB-кабель.

,

1

Разве Com-порты не должны быть независимыми?

Не в Arduino IDE, нет. По сути, среда IDE [нецензурная лексика удалена], когда речь идет об одновременном использовании более одной платы.

Лучше использовать подходящую программу последовательного терминала, а не "монитор последовательного порта" в среде IDE. Что-то вроде Teraterm или Putty, где вы можете одновременно иметь несколько экземпляров на разных портах.

,

Интересно, то же самое происходит и с Putty., @Christian

можно было бы написать скетч мониторинга в Processing... https://processing.org/, @jsotola

Или перейдите на UECIDE, который имеет гораздо лучшую обработку портов., @Majenko

На самом деле я использовал LabView в первую очередь, у которого обычно нет проблем с обработкой нескольких портов одновременно. Тем не менее, это не работает ... и вы также видите, что светодиод перестал мигать, так что я предполагаю, что это не просто проблема с программным обеспечением?, @Christian

Возможно, прошивка в ATSAMD неправильно обрабатывает отключение USB (изменение состояния линии) или клиентское программное обеспечение неправильно открывает порт (настройка состояния линии)., @Majenko

Довольно иронично, что чип, который они выбрали для реализации интерфейса USB, намного мощнее, чем чип, который вы, как пользователь, можете программировать., @Majenko

@Majenko, это ATmega4809 20 МГц, флэш-память 48 КБ, SRAM 6 КБ; SAMD11 48 МГц, 16 КБ флэш-памяти, 4 КБ SRAM, @Juraj

Да. Как я и сказал. Медленная 8-битная версия против более быстрой 32-битной. Больше мощности в интерфейсе USB., @Majenko

Я использую несколько экземпляров Arduino IDE, открытых одновременно, чтобы решить эту проблему, и она хорошо работает для нескольких последовательных соединений с нескольких плат одновременно. Вы получаете одно последовательное соединение для каждого открытого экземпляра. Раньше у меня было установлено несколько версий IDE, чтобы это работало, но я думаю, что теперь оно работает нормально, просто запуская несколько экземпляров программы одновременно. Если нет, просто запустите несколько установленных в zip-архиве экземпляров IDE из разных распакованных папок., @Gabriel Staples

Кроме того, у меня есть демонстрация Python для чтения последовательных данных с Arduino, если кому-то это нужно (и, конечно, если меня не заблокируют за то, что я поделился ссылкой на нее). Я думаю, это на моем GitHub. Это делает логирование с Arduino действительно простым и универсальным, и показывает, как заставить программу для ПК и Arduino говорить., @Gabriel Staples