Получение переменных из serial

Тема в разделе "Arduino & Shields", создана пользователем Yurii, 24 июн 2022.

  1. Yurii

    Yurii Нерд

    Здравствуйте товарищи. Подскажите пожалуйста, как я могу извлечь нужные мне данные. Через сериал я получаю бесконечно данные А50В60А50В60А........
    Где А и В это сервы, числа после них это положения вала. Постоянные здесь А и В. Числа могут меняться от 0 до 1024.
    Как я могу присвоить переменной А значение между А и В и переменной В значения между В и А?
     
  2. parovoZZ

    parovoZZ Гуру

    В правильно заданном вопросе содержится половина ответа.
     
  3. Yurii

    Yurii Нерд

    Мне нужно перечитать свой вопрос, так как он содержит половину ответа, или необходимо заново его составить по причине не понимания читающим написанного?
     
    Михаил123 нравится это.
  4. Onkel

    Onkel Гуру

    есть подсказка, преобразовывать нетрудно на занудно
    https://arcadepub.ru/2020/03/15/com-порт/
     
  5. parovoZZ

    parovoZZ Гуру

    То
    то вдруг
    так не бывает.
     
  6. Yurii

    Yurii Нерд

    Ну это разные А. Поток идёт А50В60А55В78 и т. д.
    А И В это разные сервы. Переменными могут Vasya и Pupkin. Выше я назвал ими А и В, чтоб проще было понять.... Я хотел лишь смочь отделить А50 и присвоить к одной серве (Vasya) а В60 к серве Pupkin. Но мне нужны там только числа, без букав. Поток через сериал порт идёт непрерывно, даже если положение не меняется, он всё равно будет присылаться
     
  7. Yurii

    Yurii Нерд

    Прилогаю скрин программы, которая отправляет и окно ком порта через которое я посмотрел, что она отправляет. Использовал есп32, через один сериал порт получал данные от программы и в формате char отправлял через второй сериал обратно на компьютер. IMG_20220627_203728_936.jpg IMG_20220627_203704_931.jpg IMG_20220627_203728_936.jpg IMG_20220627_203704_931.jpg IMG_20220627_203728_936.jpg
     
  8. Andy16

    Andy16 Гик

    Я не пойму проблемы. Ну читай из порта побайтно и наполняй переменную. По приходу A, B или C переключай наполнение.
     
  9. Yurii

    Yurii Нерд

    Не поймёте проблемы, так как знаете решение. А я и представить не могу как это реализуется в коде. По этому я и прошу помощи.
     
  10. KindMan

    KindMan Гуру

    Покажу пример. Сразу говорю, его нельзя использовать в реальной программе, нет никаких проверок на ошибки, это именно пример.
    Код (C++):
    const uint8_t BufferSize = 5;
    char ReadBuffer[BufferSize];
    uint8_t BufferPos;

    void setup()
    {
      Serial.begin(9600);
      Serial.println("Wait for data...");
    }
    void loop()
    {
      while (Serial.available())
      {
        char inChar = (char)Serial.read();
        if (inChar >= '0' && inChar <= '9')
        {
          ReadBuffer[BufferPos] = inChar;
          BufferPos++;
        } else ShowData(inChar);
      }
    }

    void ShowData(char in)
    {
      char Symbol;
      int Number;

      switch (in) {
        case 'A':
          Symbol = 'B';
          break;
        case 'B':
          Symbol = 'A';
          break;
        default:
          return;
      }
      if (BufferPos) {
            BufferPos = 0;
            Number = atoi(ReadBuffer);
            Serial.print(Symbol);
            Serial.print(" = ");
            Serial.println(Number);
            memset(ReadBuffer, 0 , BufferSize);
      }
    }
    И если вы введёте строку в монитор порта, как на картинке то увидите разбор на части.
    for_yurii.jpg
    Пробуйте.
     
    issaom и SergeiL нравится это.
  11. Yurii

    Yurii Нерд

    И если вы введёте строку в монитор порта, как на картинке то увидите разбор на части.
    Посмотреть вложение 25298
    Пробуйте.[/QUOTE]
    Спасибо Вам огромное добрый человек!
     
    Последнее редактирование: 29 июн 2022
  12. Yurii

    Yurii Нерд

    И если вы введёте строку в монитор порта, как на картинке то увидите разбор на части.
    Посмотреть вложение 25298
    Пробуйте.[/QUOTE]
    Попробовал, но вторую переменную как получить я так и не понял.
    int Number;
    это одна переменная и она содержит в себе значения обоих осей...
     
  13. KindMan

    KindMan Гуру

    Для примера она одна, и содержит по очереди значение то А то В. Если для вас это проблема, то тут только один путь, как сказали выше, он нудный, но без него никак - читать и практиковаться.
     
    b707 и issaom нравится это.
  14. b707

    b707 Гуру

    я бы даже усили акцент - "если для вас И ЭТО проблема...." :)
     
  15. Yurii

    Yurii Нерд

    На англоязычном форуме уже подсказали. Спасибо за участие
     
    Рокки1945 нравится это.
  16. b707

    b707 Гуру

    читал-читал... Не "подсказали", а сделали за тебя. В следующий раз сразу спрашивай там.
     
  17. Рокки1945

    Рокки1945 Гуру

    @b707 @Yurii А где если не секрет?
     
  18. b707

    b707 Гуру

    arduino.cc
     
  19. Рокки1945

    Рокки1945 Гуру

    спасибо не знал - думал типо freeks что-то