Считывание двух датчиков через Com-Port одновременно
У меня есть два Arduino Nano Every и датчик, подключенный к каждому из них. Вот что происходит:
Я загружаю скетч в первый Arduino на Com4 и вижу, что его вывод правильный через Serial Monitor
Я открываю новый экземпляр программного обеспечения Arduino, загружаю тот же скетч на второй Arduino на Com6 и вижу, что его вывод правильный. Однако тем временем Arduino на Com4 перестал отправлять или получать данные
Если я закрою второй экземпляр IDE и повторно загружу скетч в первый Arduino на Com4, он снова начнет работать.
По сути, у меня есть два Arduino, которые я не могу считывать одновременно.
Датчики не подключены, поэтому я не знаю, в чем проблема. Разве ком-порты не должны быть независимыми?
@Christian, 👍1
2 ответа
Лучший ответ:
Разве Com-порты не должны быть независимыми?
Не в Arduino IDE, нет. По сути, среда IDE [нецензурная лексика удалена], когда речь идет об одновременном использовании более одной платы.
Лучше использовать подходящую программу последовательного терминала, а не "монитор последовательного порта" в среде IDE. Что-то вроде Teraterm или Putty, где вы можете одновременно иметь несколько экземпляров на разных портах.
- avrdude ser_open() can't set com-state
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- Float печатается только 2 десятичных знака после запятой
- Почему запуск последовательного монитора перезапускает скетч?
- В чем разница между библиотеками Software Serial? Какая из них совместима с Arduino Nano?
- Чтение из Serial
- Связь последовательного порта Digispark
- Как отправить команду AT на sim800l с помощью SoftwareSerial
Интересно, то же самое происходит и с 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