Невозможно отправить SoftwareSerial в объект класса

У меня возникла проблема при попытке использовать SoftwareSerial в классе.

Здесь мои данные Мой класс

class MyEsp8266
{
 protected: 
     SoftwareSerial *esp8266;
 public: 
     MyEsp8266(SoftwareSerial *_esp8266){
           esp8266 = _esp8266;
     }
     void begin(int baud){
        esp8266->begin(baud);
     }
     String testAT(){
          esp8266->println("AT");
          return esp8266->readString();
     }
}

Мой код Arduino

#include <SoftwareSerial.h>
#include "MyEsp8266.h"
// функция настройки запускается один раз, когда вы нажимаете кнопку сброса или включаете плату

SoftwareSerial _esp(10, 11);
MyEsp8266 wifi(&_esp);

void setup() {
    Serial.begin(9600);
    wifi.begin(115200);
    Serial.println(wifi.testAT());
}

Он ничего не регистрирует, Но когда я использовал весь код в коде Arduino, это сработало.

#include <SoftwareSerial.h>
// the setup function runs once when you press reset or power the board

SoftwareSerial _esp(10, 11);

void setup() {
    Serial.begin(9600);
    _esp.begin(115200);
    _esp.println("AT");
    Serial.println(_esp.readString());
}

Спасибо за любые советы. С уважением.

, 👍1

Обсуждение

Вы забыли напечатать возвращаемое значение wifi.testAT();...?, @Majenko

это моя ошибка, когда я задавал вопрос, я обновил его, @HoangHieu


1 ответ


1

Это скорее обходной путь, чем решение, но код, который вы пытаетесь заставить работать, работал у меня после того, как я изменил его.

wifi.begin(115200);

в

wifi.begin(9600);

(извините, у меня недостаточно кармы, чтобы просто комментировать)

,

Привет, **бод 115200** работал со вторичным кодом., @HoangHieu

Я согласен! и при тестировании нужного вам блока кода я добился вывода тестовой строки, изменив скорость передачи данных с 115200 на 9600., @pizzaisdavid

Я думаю, это означает, что ваш модуль Wi-Fi использует скорость 9600 бод., @HoangHieu

Чтобы уточнить, я использовал Bluetooth HC-05, который, как показывает быстрый поиск в Google, может достигать 1382400. Но кроме того, я попробовал оба примера кода, второй работал без изменений (это означает, что мое оборудование может обрабатывать 115200), а затем, когда Я попробовал первый вариант, и как только я изменил скорость на 9600, все заработало. Регулировка скорости передачи данных в первом примере кода не решила проблему?, @pizzaisdavid