Как использовать 2 последовательных порта, когда библиотека WifiEsp использует один из обоих
Я безуспешно пытаюсь получить данные от DataPort и передать их на свой компьютер через WifiPort, используя модуль Wi-Fi ESP8266. Каждую секунду последовательные данные поступают на DataPort с другого устройства.
Инициализация следующим образом:
#include <SoftwareSerial.h>
#include "WiFiEsp.h"
SoftwareSerial DataPort(10, 11); // RX, TX
SoftwareSerial WifiPort(8, 9); // RX, TX
В настройках:
Serial.begin(9600);
DataPort.begin(9600);
WifiPort.begin(9600);
WiFi.init(&WifiPort);
В цикле я делаю:
//ЧАСТЬ WIFI
WifiPort.listen();
WiFiEspClient client = server.available();
if (client) {
//.... бла... бла... бла...
}
//ВХОДЯЩАЯ СЕРИЙНАЯ ЧАСТЬ
DataPort.listen();
while (DataPort.available() > 0)
{
char c = DataPort.read();
str += c;
if(c == '/')
{
Serial.println(str);
str="";
break;
}
}
ЧАСТЬ WIFI работает нормально, если я изолирую ВХОДЯЩУЮ ПОСЛЕДОВАТЕЛЬНУЮ ЧАСТЬ, а ВХОДЯЩАЯ ПОСЛЕДОВАТЕЛЬНАЯ ЧАСТЬ работает нормально без ЧАСТИ WIFI. Итак, как я могу получать данные на DataPort и передавать их, когда мой компьютер запрашивает их через ESP8266 на WifiPort?
@Teddol, 👍0
Обсуждение1 ответ
Прошивка esp8266 AT не ждет, пока вы прослушаете экземпляр SoftwareSerial. Если есть соединение с сервером, он отправляет +IPD и данные. Если экземпляр SoftwareSerial не слушает, информация о клиентском соединении теряется.
Вы должны постоянно прослушивать esp8266, поэтому вы не можете использовать два экземпляра SoftwareSerial.
Вы можете использовать контакт RX Uno для получения данных через аппаратный последовательный порт, если вы принимаете данные только через DataPort и печатаете только в SerialMonitor.
Я видел пример экземпляра SoftwareSerial здесь: https://www.arduino.cc/en/Tutorial/TwoPortReceive. Я думаю, что я мог бы сделать это с Esp8266..., @Teddol
это то, что у вас есть сейчас. Вы должны постоянно слушать esp8266, поэтому вы не можете использовать два экземпляра SoftwareSerial., @Juraj
Извините, но я не понимаю и не вижу, как я могу решить свою проблему., @Teddol
подключите устройство DataPort к контакту RX Uno, удалите SoftwareSerial для DataPort и прочитайте данные с устройства с помощью Serial.read(), @Juraj
- AT-команда не отвечает на последовательный монитор
- Как связаться с ESP8266 ESP01, отправив данные через программный сериал на Arduino Uno?
- Последовательная связь от Arduino до ESP8266 NodeMCU работает, но от NodeMCU до Arduino не работает
- Повреждение данных SoftwareSerial - поиск предложений
- Можно ли использовать SoftwareSerial в ESP01
- Проблемы с последовательной связью между Arduino и ESP8266.
- Ошибка отправки данных из ESP8266 в Uno
- Исправление последовательной связи, условие доступности последовательных данных проверяется даже после считывания всех отправленных данных.
пожалуйста, выкладывайте код одним блоком, а не кусками, @jsotola
Да Юрай, а как включить DataPort из WiFiPort или получить через вайфай последовательные входящие данные? Что такое хороший код?, @Teddol
DataPort получает только последовательные данные каждую секунду. Тх не используется. И я хочу получить эти данные с помощью ESP8266., @Teddol