Получаю только цифры от m590

Тема в разделе "Проводная и беспроводная связь", создана пользователем Vetrinus, 9 окт 2016.

  1. Vetrinus

    Vetrinus Гик

    Здравствуйте.
    Собственно, сабж.
    Никогда не считал себя особо тупым, но тут меня не отпускает ощущение, что разгадка где-то рядом.
    Модуль подключен к отдельному питанию, arduino питается от usb кабеля.
    ардуино использую как USB-rs232 конвертер:
    Код (C++):
    #include <SoftwareSerial.h>

    SoftwareSerial m590(6, 7);

    void setup() {
      Serial.begin(57600);
      m590.begin(57600);
    }

    void loop() {
      while (Serial.available()) {
        m590.print(Serial.read());
      }
      while (m590.available()) {
        Serial.print(m590.read());
      }
    }
    В ответ же получаю только цифры.
    Код (C++):
    255255255255239239239207239255255247255254255255
    Куда глядеть?
     
  2. rkit

    rkit Гуру

    Ну сходу куда столько много? По умолчанию оно 9600 использует, и увеличивать совершенно незачем.

    Код вывода текста самописный? Выглядит как восьмибитная последовательность в десятичной системе.
     
  3. rkit

    rkit Гуру

    Вообще SoftwareSerial::read() возвращает int, надо кастить в char
    Serial.print((char)m590.read());
     
  4. надо не Serial.print, а Serial.write
     
    rkit нравится это.
  5. Vetrinus

    Vetrinus Гик

    Из китая они все БУ, и мне еще ни разу не пришел чип с дефолтным бодрейтом.
    Serial.print((char)m590.read());
    Не помогло.
    Теряюсь в догадках, в чем же проблема.
     
  6. Vetrinus

    Vetrinus Гик

    По несколько раз прошел весь диапазон доступных бодрейтов. Так и не запустилось. Но этот же чип, будучи подключен к ПК через usb-rs232 адаптер на команду AT ответил правильно. Может проблема в ардуине?
     
  7. rkit

    rkit Гуру

    Бодрейт через пк понизить надо, SoftwareSerial много ресурсов жрет.
    Ну и что насчет Serial.write?
    Проблема явно в том, что коды букв переводятся в текстовое представление кода, а не в саму букву.
     
  8. Vetrinus

    Vetrinus Гик

    Разумеется, я осознал ошибку, и посылаю байты методом write. Только вот это никак мне не помогает.
     
  9. Vad33

    Vad33 Капитан-оригинал

    Модуль ответил ПК на скорости 57600 ??

    Можно попробовать такой код в setup для проверки

    Код (C++):
    void setup() {
      Serial.begin(57600);
      m590.begin(57600);
      delay(2000);                 // пауза включения
      m590.println("ATE0");        // Откл эхо
      delay(100);
      m590.println("ATI");         // запрос инфо
      delay(100);
    }
     
    Последнее редактирование: 10 окт 2016
  10. Onkel

    Onkel Гуру

    ответы вроде 255 или 254 говорят о том, что у вас включается прием байта, но почти все принятые значения побитно =1, так что вы не понимаете ответ модуля по причине более высокой скорости модуля, не 100% но вероятно. Попробуйте прямо с пк терминалом.
     
  11. ostrov

    ostrov Гуру

    Логический анализатор есть под рукой?
     
  12. Vetrinus

    Vetrinus Гик

    Да вообще почти ничего нет, переехал.
    Вот, думаю, придется usb-rs232 преобразователь покупать, напрямую к ПК соединить.