Arduino mega отсылка и прием сообщений от роутера (UART) через serial
- Войдите на сайт для отправки комментариев
Сб, 16/02/2013 - 23:58
Здравствуйте, помогите разобраться с проблемой. Есть код:
#include <SoftwareSerial.h> SoftwareSerial comSerial1(18,19); SoftwareSerial comSerial(0,1); char s; char incByte; // входящие данные int iLED = 13; // LED подключен к 13 пину void setup() { Serial.begin(115200); Serial1.begin(115200); pinMode(iLED, OUTPUT); Serial.print("START:"); } void loop() { //if (Serial1.available()) { // прием данных от устройства // int incByte = Serial1.read(); if (Serial1.available()) // прием данных от устройства { delay(100); // задержка перед выводом сообщений на комп while (Serial1.available() > 0) { char s=Serial1.read(); Serial.println(s); // вывод на комп } } if (Serial.available()) { // ввод данных с компа char incByte = Serial.read(); Serial1.print(incByte); // передача на устройство // Serial1.flush(); // ожидание завершения передачи кода // if () {digitalWrite(iLED, HIGH);} } } /* if (Serial.available() > 0) //если есть доступные данные { char incByte = Serial.read(); // считываем байт Serial.println(incByte); // отсылаем то, что получили } */
Весь текст который приходит - крякозябры. Помогите разобраться?
1. А кто вас знает - может быть на компьютере вы COM-порты настроили неправильно
2. А кто вас знает - может быть вы используете не старшие модели Arduino, у которых несколько аппаратных UART'ов, а программный UART? И если это так, то:
3. А вы уверены, что программный UART может стабильно поддерживать скорости, большие 4800-9600 бод?
4. А даже если вы только через аппаратные UART'ы работаете, то, может быть у вас соединение метровыми проводками прокинуто.
В общем, не жмитесь - раскрывайте все свои ноу-хау. Тогда, может быть, кто-нибудь что-нибудь конкретное и скажет.
ЗЫ. Любопытство нарастает прямо-таки по экспоненте: а вот зачем у вас в строках 3-4 вроде бы программные UART'ы создаются, а в setup'е - как бы предопределенные аппаратные инициализируются?
Ах, как все правильно начиналось! Но, вот к чему приводит нескрываемое любопытство! Теперь получены все ответы и мы ничего не узнаем...
Здравствуйте, Вы задаете такие вопросы, на которые я еще ответов не знаю. Недавно только приобрел.
У меня Arduino mega 2560 R3, на сколько я понимаю он поддерживает serial-соединение (UART) на пинах 0,1, 18,19 и 20,21. Знаю что можно подключать к нему устройства, но не знаю програмная поддержка или аппаратная(!) COM. Для работы с роутером написанно что скорость должна быть 115200 бод. Какую скорость поддерживает ардуино (или библиотека?).
Суть задачи простая. Поставил на роутер (wr1043nd) openwrt, и случайно снес загрузчик, можно восстановить только по (UART-TTL), как я понял, это можно сделать с помощью ардуино.
Получается, программные надо удалить, раз в setup есть. Видимо я не так понял, посчитал что если он поддерживает несколько serial-соединений, то ему надо указать с каким именно соединением (пинами) работать.
Суть: Мне надо отсылать команды на роутер и принимать в окне терминала. Но сколько не пробовал, у меня только под или иероглифы. Как исправить кодировку, я не знаю (ASCII?).
Для работы с serial-соединением (UART) для чтения параметров надо использовать Serial.write или Serial.print?
Проблема решена, привожу свой код:
Помоему в этом рабочий код.
Ага вА почему есть уверенность в том что грузиться надо через уарт а не эс пи ай или еженедельну.