Здравствуйте. Собственно, сабж. Никогда не считал себя особо тупым, но тут меня не отпускает ощущение, что разгадка где-то рядом. Модуль подключен к отдельному питанию, 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 Куда глядеть?
Ну сходу куда столько много? По умолчанию оно 9600 использует, и увеличивать совершенно незачем. Код вывода текста самописный? Выглядит как восьмибитная последовательность в десятичной системе.
Из китая они все БУ, и мне еще ни разу не пришел чип с дефолтным бодрейтом. Serial.print((char)m590.read()); Не помогло. Теряюсь в догадках, в чем же проблема.
По несколько раз прошел весь диапазон доступных бодрейтов. Так и не запустилось. Но этот же чип, будучи подключен к ПК через usb-rs232 адаптер на команду AT ответил правильно. Может проблема в ардуине?
Бодрейт через пк понизить надо, SoftwareSerial много ресурсов жрет. Ну и что насчет Serial.write? Проблема явно в том, что коды букв переводятся в текстовое представление кода, а не в саму букву.
Модуль ответил ПК на скорости 57600 ?? Можно попробовать такой код в setup для проверки Код (C++): void setup() { Serial.begin(57600); m590.begin(57600); delay(2000); // пауза включения m590.println("ATE0"); // Откл эхо delay(100); m590.println("ATI"); // запрос инфо delay(100); }
ответы вроде 255 или 254 говорят о том, что у вас включается прием байта, но почти все принятые значения побитно =1, так что вы не понимаете ответ модуля по причине более высокой скорости модуля, не 100% но вероятно. Попробуйте прямо с пк терминалом.
Да вообще почти ничего нет, переехал. Вот, думаю, придется usb-rs232 преобразователь покупать, напрямую к ПК соединить.