Serial read выдает не корректные данные.

Тема в разделе "Arduino & Shields", создана пользователем Banka888, 22 июн 2018.

Метки:
  1. Banka888

    Banka888 Нуб

    Достался фрагмет светодиодной бегущей строки P10. Хотел сделать так чтобы отправленный из монитора порта текст выводился на бегущую строку до тех пор пока не пришло новое сообщение. но не тут то было... пишу в мониторе порта "privet" но на строке бегает только "pr" и так с любым сообщением
    Код:
    Код (C++):

    #include <TimerOne.h>
    #include"SPI.h"
    #include <ledP10.h>
    LedP10 myled;
    char message[50];

    void setup()
    {
        myled.init(3,4,8,9 ,1);
        myled.setbrightness(50);
        Serial.begin(9600);
    }

    void loop() {
     
    myled.showmsg_single_scroll(message,1,2,0);
    }
    void serialEvent() {
       Serial.flush();
            Serial.readString().toCharArray(message,50);
            Serial.println(message);
             
      }

     
    Подскажите в каком направлении искать решение проблемы?
     
  2. Daniil

    Daniil Гуру

    Тут попробуйте посмотреть
     
    Banka888 нравится это.
  3. Banka888

    Banka888 Нуб

    Выяснилось следующее. Если убрать из кода всё что связано со светодиодной панелью то вставленная для отладки команда Serial.println(message); возвращает ровно ту же строку что и была отправлена. то-есть всё как должно быть, но стоит обратно вернуть в код работу с панелью, то тут как тут всплывает этот косяк.
    Код (C++):

    char message[50];

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

    void loop() {

    }
    void serialEvent() {
       delay(1000);
            Serial.readString().toCharArray(message,50);
            Serial.println(message);
           
      }
    Есть предположение что это из-за TimerOne.h требуемой для работы панели.
     
  4. Daniil

    Daniil Гуру

    Почитайте как мк принимает данные. А потом посмотрите, что вы в процесс приёма вводите задержку.
    Я вам кинул код, который с помощью прерывания собирает входящую строку.