Опять про Serial порт и GSM шилд
- Войдите на сайт для отправки комментариев
Пт, 31/05/2013 - 17:28
Доброго времени суток. Извеняюсь, если гдето были похожие темы, но ответа я так и не нашел. Если кто знает, пожалуйста подскажите.
Есть Arduino Uno и GSM шилд.
Суть проблемы:на AT-команды приходят ответы 64+ символов. Размер буфера Serial 64 байта (читал на официальном сайте). Т.е. 64 байта ардуино принимает, остальные - как придется.
Перепробовал кучу вариантов, и задержки, и таймауты, но, через сериал монитор получалось считывать длинные строки, с модемом - нет.
Пока что просто увеличил размер SoftwareSerial буфера. Все работает нормально, но ограничивается размером буфера. В дальнейшем требуется считывать строки бОльшей длины.
Как быть в этом случае?
Во-первых, размер буфера можно увеличить arduino-1.0\hardware\arduino\cores\arduino\HardwareSerial.cpp в нем SERIAL_BUFFER_SIZE 64. http://arduino.ru/forum/programmirovanie/uvelichenie-bufera-uart-bolee-128-bait
Во-вторых нужно просто успевать обрабатывать получаемые данные, можно это делать в прерывании - http://arduino.cc/en/Reference/SerialEvent
На счет прерываия уже думал. А команда SerialRead() смещает "голову" буфера?
Если вы имеете ввиду освобождается ли байт буфера после чтения из буфера байта, то да.
Большое спасибо, буду пробовать.
Добрый день!
У меня проблема с передачей AT команд
вот собственно что хочу сделать
mySerial.println("AT+HTTPINIT");
delay(5000);
mostraDadosSerial();
// set http param value
mySerial.println("AT+HTTPPARA=\"URL\",\"http://api.twitter.com/1/statuses/user_timeline.xml?screen_name=arduinoteam HTTP/1.1");
delay(5000);
mostraDadosSerial();
// set http action type 0 = GET, 1 = POST, 2 = HEAD
mySerial.println("AT+HTTPACTION=0");
delay(6000);
mostraDadosSerial();
а вот что выдаёт Serial port
AT+HTTPINIT
OK
AT+HTTPPARA="URL","http://api.twitter.com/1/statuses/user_timelAT+HTTPACTION=0
ERROR
AT+HTTPREAD
OK
Почему то сьедается часть команды. увеличил буфер порта до 256 - толку ноль.
Прошу помощи!
Извините за форматирование - когда вставляю код редактор добавляет лишние строки)
Если на "лету" не успеваете обрабатывать, и, теряется часть данных, то пишите в "буфер" своей же программу, у уно 500 байт для этого можно взять.