Обработка строк из Serial

Тема в разделе "Arduino & Shields", создана пользователем regent.correon, 27 янв 2019.

  1. regent.correon

    regent.correon Нерд

    Всем доброго времени суток!
    такая тема, в наличии 2 девайса на ардуино и модуле радиоканала HC-12 ( общение между ардуино и HC-12 стандартный RT/TX) эти 2 девайса общаются через образованый радиоканал. С одной стороны посылаю последовательность символов
    Answer=">AB@ 021 043 025 001 002 003"; Serial1.println(Answer);

    На другой стороне соответственно читаю из порта и собираю
    Код:
    srch=1;
    while (srch) { // поиск начала фрейма
    if (mySerial.available() > 0) {
    rb = mySerial.read();//delay(1);
    Serial.println(rb);
    if (rb == 10) {srch=0;FrameReady=1;} // если байт=10 конец фрейма и выход иначе - добавляем байты
    else {Answer += rb;}

    } else {srch=0;} // либо пакет собран, либо нет символов в буфере

    } // while

    Serial.println(Answer);

    Получаю последовательность "6566643248504932485251324850533248484932484850324848511310"
    Нужно получить исходную строку и проанализировать. Что не так?
     
  2. regent.correon

    regent.correon Нерд

    Получается после прогона через Serial строка преобразовывается в последовательность кодов символов, а не в последовательность символов как я ожидал....
     
  3. Не пробовали считывать символы. а не коды символов?
     
  4. Igor68

    Igor68 Гуру

    Круто! вместо кодов символов его бинарное изображение. То есть если символ в марице 8x8 на один символ надо аж 8 байт. И зачем тогда знакогнератор? А ведь так всё просто:)
     
  5. regent.correon

    regent.correon Нерд

    Не понял, это каким образом???
     
  6. regent.correon

    regent.correon Нерд

    Круто!, а при чем тут знакогенератор, если я отсылаю ASCII СТРОКУ!!! "AB" а получаю строку "6566" где тут искать ваш знакогенератор???
     
  7. parovoZZ

    parovoZZ Гуру

    В любом случае там будут коды, т.к. цифровая техника ни про символы, ни про числа и цифры не знает ничего. У неё внутри только нули и единицы. Это уже забота программиста перевести одну сущность в другую и наоборот.
     
    b707 и Igor68 нравится это.
  8. Ну наверное нужно открыть документацию и изучить доступные методы работы
     
    Igor68 нравится это.
  9. regent.correon

    regent.correon Нерд

    Понял, джентельмены, и кажется, нашел ошибку - ардуино ИДЕ по ходу различает byte и char. Исправил все пошло. Спасибо за наводку.
     
  10. regent.correon

    regent.correon Нерд

    Вопрос закрыт
     
  11. Только не ИДЕ, а язык программирования С++.
     
  12. Igor68

    Igor68 Гуру

    А Вы вот это:
    Код (Text):
    в последовательность кодов символов, а не в последовательность символов как я ожидал...
    Переведите с Русского на Русский... ну или познакомьте с телепатом:)
    А что-то обидное/неприятное в Ваш адрес ничего не желал.
     
  13. b707

    b707 Гуру

    разве это не одно и то же? :)
     
  14. regent.correon

    regent.correon Нерд

    А по вашему строка "AB" равна строке "6566" ??? Можете ввести код if ("AA" == "6566") {Serial.println("Строки одинаковые");} else {Serial.println("Строки разные");}
     
  15. DetSimen

    DetSimen Guest

    65 - код символа 'A'
    66 - код символа 'B'

    до понимания - один маааленький шажочег.
     
    parovoZZ нравится это.
  16. DetSimen

    DetSimen Guest

    я тебе больше скажу, даже если ты напишешь
    то в зависимости от компилятора, строки тоже могут оказаться "разные". Не так строки сравнивают.
     
  17. regent.correon

    regent.correon Нерд

    Ну и как тогда?
     
  18. regent.correon

    regent.correon Нерд

    Про коды символов я в курсе. Ascii с детства помню.
     
  19. DetSimen

    DetSimen Guest

    ну теперь вспомни за функцию strcmp(...)
     
  20. regent.correon

    regent.correon Нерд

    А разве она в Arduino IDE есть?