Проблема в цикле loop() при чтение COM порта

Тема в разделе "Arduino & Shields", создана пользователем Danil_2002, 21 июн 2019.

  1. Danil_2002

    Danil_2002 Гик

    Доброй ночи! 29 числа научная выставка и я изо всех сил стараюсь успеть, но застрял на таком моменте:

    Код не судите строго, просто я много экспериментировал с ним.

    Код (C++):
    void loop()  
    {
      while(Serial.available() == 0);
      message = Serial.readStringUntil('*');
      //message = "Y135*";
      uint8_t i = message.length();
      Serial.println(i);
      //arr_message = message;
      for (uint8_t start = 0; start < i; start++)
      {
        message_arr[start] = message.charAt(start);
        Serial.println(message_arr[start]);
        //char simvol = message.charAt(start);
      }
      radio.write(&message_arr, sizeof(message));
      Serial.println(message_arr);
    }
    Суть в том что если по COM отправить например : "#Y135*"
    То ответ, такой
    4
    #
    Y
    1
    3
    #Y13*
    1



    Y13*

    Я хочу спать, а также получить значения по COM и отправить их по nrf2401, а так как получить значения я хочу больше чем спать, то сижу делаю и прошу помощи. Может есть более простой способ сделать это?
     
  2. Danil_2002

    Danil_2002 Гик

    Код (C++):
    #include <SPI.h>
    #include <nRF24L01.h>
    #include <RF24.h> // https://github.com/maniacbug/RF24

    String message;
    const uint64_t pipe = 0xe7e7e7e7e7;
    //char message_arr[6] = {'#', '#', '#', '#', '#', '#' };
    RF24 radio(9, 10); // CE, CSN
    void setup(){
      Serial.begin(9600);
      radio.begin();
      delay(2);
      radio.setChannel(115); // канал (0-127)
      radio.setDataRate(RF24_1MBPS);
      radio.setPALevel(RF24_PA_HIGH);
      radio.openWritingPipe(pipe); // открываем трубу на передачу.
    }
    void loop()  
    {
      //while(Serial.available() == 0);
      if (Serial.available())
      {
        message = Serial.readStringUntil('*');
        uint8_t i = message.length();
        char message_arr[i];
        Serial.println(i);
        for (uint8_t start = 0; start < i; start++)
        {
          message_arr[start] = message.charAt(start);
        }
        radio.write(&message_arr, sizeof(message));
        Serial.println(message_arr);
        message = "";
      }
    }
    Вот так работает
     
    Daniil нравится это.
  3. NikitOS

    NikitOS Король шутов Администратор

    А дублировать зачем?