Как отобразить последовательные данные в консоли

Я использую ESP32 для проекта. Я использую один Serial со скоростью 115200 бод и Serial2 со скоростью 9600 бод.

Мне нужно получить сообщение на Serial2, и я хочу отобразить его на Serial для целей отладки. Я печатаю сообщение в цикле:

void setup() {
  Serial.begin(115200);
  Serial2.begin(9600, SERIAL_8N1, 16, 17);
}

void loop() {
  while (Serial2.available() > 0) {
    Serial.print(char(Serial2.read()));
  }
}

В консоли ничего не отображается. Если я использую Serial.print(Serial2.read(), BIN), консоль печатает то же количество 0, что и символ в сообщении, которое я полагаю получить.

IE Если я отправлю "HelloWorld", консоль напечатает "0000000000"

, 👍0

Обсуждение

Всегда ли он печатает то же количество «0», что и количество символов в вашем сообщении, независимо от сообщения? Как вы «отправляете» «HelloWorld»?, @lurker

Если вы читаете данные с последовательного порта на Arduino, попробуйте найти другой способ просмотра последовательных данных с модема, чтобы убедиться, что это сторона модема, а не сторона Arduino. Если вы занимаетесь подобной разработкой, удобно иметь пару инструментов, таких как кабель USB/RS232, чтобы вы могли запустить эмулятор последовательного терминала на своем ПК и посмотреть, что на самом деле отправляет модем., @lurker

Вы подключили GND между двумя устройствами? Вы сказали, что подключили модем - это порт RS232? RS232 использует другие напряжения для передачи сигналов, чем ESP32; вы не можете просто подключить вывод RS232 TX к выводу ESP32 RX., @romkey

похоже проблема с проводкой. Кстати, вы можете использовать Serial.write вместо Serial.print(char(, @Juraj

Ваш код выглядит нормально. Есть ли у вас область для проверки сигнала, поступающего на Serial2?, @Edgar Bonet

Можете ли вы опубликовать схему, как она у вас подключена, и ссылки на техническую информацию об аппаратных устройствах. Не забудьте включить все соединения питания и заземления., @Gil