Softwareserial

Тема в разделе "Arduino & Shields", создана пользователем Илья22, 26 янв 2021.

  1. Илья22

    Илья22 Нуб

    • 5.10. Запрещено публиковать исходный код, логи и ошибки без BB-кода — CODE.
    Народ помогите разобраться с SoftwareSerial.
    Суть такова: с UNO отправляю через SoftwareSerial (int char string) переменные
    на компе через CH340 слушаю порт программой SerialMonitor и вижу полную ересь.
    Пробовал разные проги для прослушки порта.
    скорости везде 9600.
    Пробую в обратную сторону отправлять с CH340 и слушать UNO монитором порта таже хрень.
    Заранее благодарен
     

    Вложения:

  2. Andy16

    Andy16 Гик

    А зачем тебе SoftwareSerial, если ты используешь хардварный?
     
  3. Илья22

    Илья22 Нуб

    • 5.8. Старайтесь писать одним сообщением. Если Вы хотите что-то дополнить - отредактируйте сообщение.
    в хардовном я только смотрю

    принимаю на SoftwareSerial и вывожу в хард

    или я что то не одупляю?
     
    Последнее редактирование модератором: 26 янв 2021
  4. Andy16

    Andy16 Гик

    Но, ты же просто выводишь строку в оба порта.
    Ты пробовал читать из обоих портов? Везде каша или только с софтверного?
    А просто вывести Serial.printLn(1) получается?
     
  5. Илья22

    Илья22 Нуб

    • 5.8. Старайтесь писать одним сообщением. Если Вы хотите что-то дополнить - отредактируйте сообщение.
    в Serial.printLn(1); выводит 1
    если пихаю в softSerial.printLn(1);
    и слушаю CoolTermWin на стороне компа то получается ересь

    где может быть проблема?
     

    Вложения:

    Последнее редактирование модератором: 26 янв 2021
  6. Andy16

    Andy16 Гик

    Ну, если ты игрался со скоростями, то проблема может быть в соединении пинов с твоим устройством. Ты минус точно соединил?
     
  7. Илья22

    Илья22 Нуб

    да 100500 все в поряде и со сокоростямя и с пинами

    скоростя видно на скршотах а пинв уже несколько раз проверил
     
    Последнее редактирование модератором: 26 янв 2021
  8. Airbus

    Airbus Радиохулиган Модератор

    А разве не Так?
    Код (Text):
    #include <SoftwareSerial.h>

    SoftwareSerial swSer(12, 11, false, 256);

    void setup() {
      Serial.begin(9600);
      swSer.begin(9600);

      Serial.println("\nSoftware serial test started");

      for (char ch = ' '; ch <= 'z'; ch++) {
        swSer.write(ch);
      }
      swSer.println("");

    }

    void loop() {
      while (swSer.available() > 0) {
        Serial.write(swSer.read());
      }
      while (Serial.available() > 0) {
        swSer.write(Serial.read());
      }

    }
    Это из примеров IDE если что.
     
  9. Airbus

    Airbus Радиохулиган Модератор

    Или так
    Код (Text):
    String inputString = "";         // a String to hold incoming data
    boolean stringComplete = false;  // whether the string is complete
    #include <SoftwareSerial.h>
    SoftwareSerial swSer(12, 11 );
    void setup() {
      // initialize serial:
      Serial.begin(9600);
      swSer.begin(9600);

      // reserve 200 bytes for the inputString:
      inputString.reserve(200);
    }

    void loop() {
      // print the string when a newline arrives:
      if (stringComplete) {
        swSer.println(inputString);
        // clear the string:
        inputString = "";
        stringComplete = false;
      }
    }

    /*
      SerialEvent occurs whenever a new data comes in the hardware serial RX. This
      routine is run between each time loop() runs, so using delay inside loop can
      delay response. Multiple bytes of data may be available.
    */
    void serialEvent() {
      while (Serial.available()) {
        // get the new byte:
        char inChar = (char)Serial.read();
        // add it to the inputString:
        inputString += inChar;
        // if the incoming character is a newline, set a flag so the main loop can
        // do something about it:
        if (inChar == '\n') {
          stringComplete = true;
        }
      }
    }
    Что куда и как отправляете?На Softserial через пины 11/12 и USB переходник?А слушаете через "родной" USB так?
     
  10. parovoZZ

    parovoZZ Гуру

    Если необходимы два последовательных порта, то необходимо юзать леоанрду, микру или STM32. Насиловать программную реализацию порта при возможности всё сделать аппаратно ни к чему.
     
  11. Илья22

    Илья22 Нуб

    еще проще код чем выше
    Код (Text):
    #include <SoftwareSerial.h>
    SoftwareSerial softSerial(12, 11);
    void setup() {
      Serial.begin(9600);
      softSerial.begin(9600);
      delay(500);
    }
    void loop() {
      Serial.println(1);
      delay(500);
      softSerial.print("W");
      delay(500);
    }
    все горазда проще - отправляю в softSerial данные а в компе вижу совсем другое - не могу понять природу искажений
    хотя эти же данные в Serial идут в оригинальном виде как и нужно.
    не одупляю где собаку зарыли

    softSerial на строне компа слушаю CoolTermWin через переходник CH340 мож на строне компа чет не так?
     
    Последнее редактирование модератором: 26 янв 2021
  12. Airbus

    Airbus Радиохулиган Модератор

    Вы код попробуйте тот что я предложил
     
  13. Илья22

    Илья22 Нуб

    Огромное СПАСИБО за совет но у меня проблема в другом
     
  14. Airbus

    Airbus Радиохулиган Модератор

    Не здесь случайно? Serial.write(swSer.read());
     
  15. Илья22

    Илья22 Нуб

    в этом коде просто отражается в сериале то что приходит на soft Serial
     
  16. Airbus

    Airbus Радиохулиган Модератор

    А чего тогда спрашиваете если сами всё знаете?
     
  17. Илья22

    Илья22 Нуб

    час попробую отпишусь
     
  18. Илья22

    Илья22 Нуб

    прогресса 0 (
     
  19. parovoZZ

    parovoZZ Гуру

    softserial не обеспечивает детерминированность задержек.
     
  20. Илья22

    Илья22 Нуб

    По честнаку сказать я пытаюсь подружить модуль E32 433T30D c UNO пошел от простого к сложному
    сначала по проводам - результат плачевный(((( мож у кого есть положительный опыт с данными модулями?