USSD запросы (GPRS Shield v3)

Тема в разделе "Arduino & Shields", создана пользователем 3a4em, 27 дек 2019.

  1. 3a4em

    3a4em Нуб

    Доброго времени суток! При выполнении USSD запроса для получения номер сим карты я вижу, что некоторые символы приходят некорректно. Проблему наблюдаю исключительно на модуле sim800c (GPRS Shield v3). Модуль подключен к МК по software serial. Оператор - теле2. Сталкивался ли кто с подобной проблемой?

    Код (C++):
    void loop()
    {
      if (Serial.available() > 0) {
        // если приходят данные по USB
        while (Serial.available() > 0) {
          // записываем их в GPRS Shield
          Serial1.write(Serial.read());
        }
      }

      if (Serial1.available() > 0) {
        // если приходят данные с GPRS Shield
        while (Serial1.available() > 0) {
          // передаём их в USB
          Serial.write(Serial1.read());
        }
      }
    }
    1577458843928.png
    [​IMG]
     
  2. alp69

    alp69 Форумчанин

    Скорость обмена? Локализация модуля?
     
  3. SergeiL

    SergeiL Оракул Модератор

    Кодировку смотрите. Нужно, чтобы одинаковая была.
     
  4. DIYMan

    DIYMan Guest

    Ответы приходят в UCS2, это один из способов кодирования. Читайте про эту кодировку, и раскодируйте ответ. Что касается мусора - причин может быть много, начиная от банальных плохих контактов.
     
  5. SergeiL

    SergeiL Оракул Модератор

    Кавычки в начале строки, в конце - " , 72 - говорят, что строка передается корректно.
    Думаю все таки кодировка не та.
     
  6. 3a4em

    3a4em Нуб

    Скорость 9600 ( в модуле настраивается автоматически). если речь о гео локализации - то РУ (домашний регион)

    я вообще не указываю кодировку (она разная в тексте ответа(0412043004480020...) и вспомогательной информации(+CUSD: 0))
    Да и дело вряд ли в ней т.к. периодически приходят целые сообщения
     
  7. 3a4em

    3a4em Нуб

    В том и сложность, что не могу раскодировать, т.к. строка битая. Периодически перезагружая модуль удается добиться нормальной работы, но со следующим перезапуском снова такая же ерунда. Но так же иногда целые и битые ответы идут в перемешку (скрин)
    И как можно заметить на скрине 2 - ошибки идут в одних и тех же местах, так что думаю это не контакты
     

    Вложения:

    • 11111.png
      11111.png
      Размер файла:
      56,6 КБ
      Просмотров:
      49
    • 2222.png
      2222.png
      Размер файла:
      37,2 КБ
      Просмотров:
      48
    Последнее редактирование: 27 дек 2019
  8. DIYMan

    DIYMan Guest

    Причин - масса, начиная от плохих контактов, заканчивая длинными проводами, помехами по питанию, плохим питанием, нехваткой питания и т.д. и т.п. Для того, чтобы понять источники проблемы - одного скрина, увы, недостаточно - нужен системный анализ. А кроме вас - никто не знает, что и как там у вас соединено, как и чем питается, и т.д. и т.п.
     
  9. 3a4em

    3a4em Нуб

    Соединение элементарное (согласно инструкциям амперки (шилд сверху ардуинки и две перемычки на RX TX)) питание 12в (блок от ноута так что тока хватает точно).
    Грешу на неисправность самого модуля. Если решения не найду - попробую сменить его на шилде, но естественно делать этого не хотелось бы
     
  10. SergeiL

    SergeiL Оракул Модератор

    Ну и плюс софтсериал. Там запрещения прерываний есть. Я бы попробовать скорость поднять.
    У меня на 9600 иногда сбоило, а на 38400 нормально работал. (на более короткое время прерывания запрещаются)
     
  11. 3a4em

    3a4em Нуб

    Попробовал, но толку ноль. Да и врятли дело в сериал соединении т.к. все остальные данные (смс, команды) доходят без проблем (смс кстати тоже в UCS2)
     
  12. DIYMan

    DIYMan Guest

    Ок, а если попробовать другую терминалку? Например, программу Terminal?
     
    SergeiL и 3a4em нравится это.
  13. 3a4em

    3a4em Нуб

    блин, я в замешательстве.. Это сработало! Спасибо за идею. Я уже почти пошел перепаивать модуль на другой)) Может быть есть мысли от чего так происходит?
     
  14. DIYMan

    DIYMan Guest

    Иногда программы - слишком себе на уме, и пытаются отобразить набор байт как какой-то символ. Видимо, в случае с штатным монитором порта - именно это и имеет место быть. Честная терминалка, пока её не попросишь специально - отображает вывод как есть.
     
  15. 3a4em

    3a4em Нуб

    Спасибо большое за помощь! Не одну неделю пытался допинать эту часть проекта))
     
  16. SergeiL

    SergeiL Оракул Модератор

    Да, бывало такое.
    Я обычно TeraTerm пользуюсь, его на Японский перекидывает, но тут сразу понятно, что склинило...