SoftwareSerial работа с двумя портами
- Войдите на сайт для отправки комментариев
Чт, 31/03/2022 - 15:37
Добрый день.
Подскажите, как переключиться между чтением двух виртуальных портов если данные поступают непрерывно?
#include <SoftwareSerial.h> SoftwareSerial PortOne(12,13); SoftwareSerial PortTwo(8,9); uint32_t COM_One[3] = {}; uint32_t COM_Two[3] = {}; uint32_t PRINT_One = 0; uint32_t PRINT_Two = 0; void setup() { Serial.begin(9600); PortOne.begin(9600); PortTwo.begin(9600); } void loop() { rs232_One(); rs232_Two(); } void rs232_One(){ PortOne.listen() PortOne.write(0x84); if (PortOne.available()) {COM_One[0] = (PortOne.read());} if (PortOne.available()) {COM_One[1] = (PortOne.read());} if (PortOne.available()) {COM_One[2] = (PortOne.read());} PRINT_One = (COM_One[2])+(COM_One[1]+(COM_One[0]); Serial.print("PRINT_One: "); Serial.println(PRINT_One); } void rs232_Two(){ PortTwo.listen() PortTwo.write(0x84); if (PortTwo.available()) {COM_Two[0] = (PortTwo.read());} if (PortTwo.available()) {COM_Two[1] = (PortTwo.read());} if (PortTwo.available()) {COM_Two[2] = (PortTwo.read());} PRINT_Two = (COM_Two[2])+(COM_Two[1]+(COM_Two[0]); Serial.print("PRINT_Two: "); Serial.println(PRINT_Two); }
Одной жопой на двух стульях ?
Да, как кратковременно прекратить прием? Если часть данных потеряется, то ничего страшного.
Добрый день.
Подскажите, как переключиться между чтением двух виртуальных портов если данные поступают непрерывно?
Взять плату с двумя аппаратными последовательными портами.
Отправлять можно. Принимать только на один одномоментно. Что бы принимать на второй надо переключить специальной командой. После переключения на второй первый перестаёт принимать. Ну или самому написать приём через прерывания.
Отправлять можно. Принимать только на один одномоментно. Что бы принимать на второй надо переключить специальной командой. После переключения на второй первый перестаёт принимать. Ну или самому написать приём через прерывания.
Вот в том-то и загвоздка, что не понимаю, как реализовать. В описании библиотеки ничего подобного не нашел.
itehno, какая плата? если Мега - на ней Софтсериал не нужен, если Уно-Нано, то использование 13 пина не очень хорошая идея
Ну и конечно, вся затея с двумя софтсериалами - это треш
itehno, какая плата? если Мега - на ней Софтсериал не нужен, если Уно-Нано, то использование 13 пина не очень хорошая идея
Ну и конечно, вся затея с двумя софтсериалами - это треш
UNO
Все остальные порты заняты и переназначить не получится
UNO
Все остальные порты заняты и переназначить не получится
по всему пора переходить на Мегу
UNO
Все остальные порты заняты и переназначить не получится
по всему пора переходить на Мегу
Согласен, но что имеем