Как правильно интерпретировать данные из модуля UART NRF24L01?

К этим модулям относятся следующие: https://imgur.com/a/HrzpvdR Это их соответствующая страница AliExpress: https://aliexpress.com/item/4000317884559.html?gatewayAdapt=glo2nld Я пытаюсь отправить тест через C # на свой Arduino, но как только я действительно отправлю его, будет получено следующее:

tststststteteteteteteteteteteteteeeeeeeeeeeseeeeeeeeeeeeee

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

Что я мог бы попробовать, чтобы получить просто "тест"?

Код на C #:

using System.IO.Ports;

namespace ArduinoCom

{
    class Program
    {
        static void Main(string[] args)
        {
            SerialPort port = new SerialPort("COM3", 115200, Parity.None, 6);

            port.Open();
            bool run = true;
            int counter = 0;

        for (int i = 0; i < 1000; i++)
        {
            port.Write("test");
        }
        port.Dispose();
        port.Close();
       }
    } 
}

Код Arduino выглядит следующим образом:

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <Wire.h>
#include <I2C_LCD.h>

I2C_LCD LCD;
uint8_t I2C_LCD_ADDRESS = 0x51; // Настройка адреса устройства, по умолчанию: 0x51
SoftwareSerial mySerial(0, 1); // RX, TX

RF24 radio(7, 8); // CE, CSN

void setup() {
  Serial.begin(115200);
  Wire.begin();
  Serial1.begin(115200);

}

void loop() {
  LCD.CleanAll(WHITE);
  LCD.FontModeConf(Font_6x8, FM_ANL_AAA, BLACK_BAC);
  if (Serial1.available()) {
      {
        Serial.print((char)Serial1.read());
        LCD.DispStringAt((char)Serial1.read(), 0, 10);
      }
  }
}

, 👍-1

Обсуждение

уменьшите скорость передачи данных и вставьте паузы, @jsotola

@jsotola Я ценю ваши усилия, но это тот тип комментариев, который замалчивает слишком много информации, которая может оказаться жизненно важной. Конечно, я могу уменьшить его до 9600 и добавить задержку, но зачем мне это нужно?, @CCG

потому что это базовый процесс отладки ... полученные данные , по - видимому , указывают на то , что приемник перегружен ... попробуйте привести систему в рабочее состояние , снизив скорость передачи ... затем начните увеличивать скорость передачи данных до тех пор , пока она снова не прервется ... это даст вам представление о том, где происходит сбой системы, @jsotola

Что хочет сказать jsotola, так это то, что для устранения проблемы вам сначала нужно знать, в чем проблема. И, уменьшая скорость передачи данных / паузы при вставке, вы знаете, связано ли это со временем., @Michel Keijzers

Почему вы определили экземпляр SoftwareSerial на тех же выводах , что и Serial для Leonardo ? Насколько я могу понять из описания в ссылке на Aliexpress, пара этих устройств NRF24L01 создают сквозную последовательную линию передачи данных между собой. То есть, в вашем коде нет необходимости в конкретных определениях NRF24L01. Предполагая, что вы настроили радиодетали на работу со скоростью 115200 бод, тогда одна из возможных проблем заключается в том, что ЖК-экран слишком медленно обрабатывает ожидаемую скорость передачи данных, вызывая переполнение последовательного буфера. Прокомментируйте попытку записи, чтобы увидеть, является ли это проблемой., @6v6gt