Вопрос по AT команде

VeD
Offline
Зарегистрирован: 21.02.2016

Какой At командой реализовать проверку, взяли ли трубку на том конце?

Araris
Offline
Зарегистрирован: 09.11.2012
VeD
Offline
Зарегистрирован: 21.02.2016

Читал я эту статью. Если написать
gprsSerial.println("ATD+ + номер;");
if(gprsSerial.println("AT+CLCC"))
{
gprsSerial.println(AT+CHUP");
}
Тут хотелось бы, звоним на номер. Если взяли трубку, то сбрасываем. Но у меня, не сбрасывает, а ставит на удержание

Araris
Offline
Зарегистрирован: 09.11.2012

VeD пишет:
if(gprsSerial.println("AT+CLCC"))

Какой смысл имеет эта строка ?

VeD
Offline
Зарегистрирован: 21.02.2016

Проверка, принят ли вызов с той стороны, куда звоном.

Araris
Offline
Зарегистрирован: 09.11.2012

Проверка ?? Но у функции println() вообще нет возвращаемого значения, что же Вы проверяете ?

VeD
Offline
Зарегистрирован: 21.02.2016

Поэтому я тут, чтобы узнать как реализовать

VeD
Offline
Зарегистрирован: 21.02.2016

Да и вообще эта функуция вводит ат команду

Araris
Offline
Зарегистрирован: 09.11.2012

Мда...

Позвольте совет : попробуйте связаться с пользователем aleks2003 здесь http://arduino.ru/forum/programmirovanie/sim-900-dozvon-do-abonenta-i-peredacha-golosovogo-soobshcheniya, возможно он согласится поделиться своими наработками по AT+CLCC.

faeton
faeton аватар
Offline
Зарегистрирован: 21.03.2016

Во, а куда моё сообщение делось? :)

Команда serial.println отправляет данные усройству, но не читает ответ устройства. Чтобы прочитать ответ, надо serial.red использовать.

Или дабавить в класс serial свою фунцкию InOut, например. :)

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Araris пишет:

Проверка ?? Но у функции println() вообще нет возвращаемого значения, что же Вы проверяете ?

Как нет? Возвращает количество переданных в поток байтов (тип size_t). Вот это и проверяет :)

VeD
Offline
Зарегистрирован: 21.02.2016

Там про работу с терминалом. Я не умею работать с ним.

Araris
Offline
Зарегистрирован: 09.11.2012

ЕвгенийП пишет:

Araris пишет:

Проверка ?? Но у функции println() вообще нет возвращаемого значения, что же Вы проверяете ?

Как нет? Возвращает количество переданных в поток байтов (тип size_t). Вот это и проверяет :)

Да, Вы абсолютно правы, я не там (http://arduino.ru/Reference/Serial/Println) смотрел, на самом деле

"print() returns the number of bytes written, though reading that number is optional"

VeD
Offline
Зарегистрирован: 21.02.2016

никто не знает?

faeton
faeton аватар
Offline
Зарегистрирован: 21.03.2016

VeD пишет:

никто не знает?

Что не знает? Написал же: Команда serial.println отправляет данные усройству, но не читает ответ устройства. Чтобы прочитать ответ, надо serial.red использовать следом. Или дабавить в класс serial свою фунцкию InOut, например. :)

VeD
Offline
Зарегистрирован: 21.02.2016

ну, а что надо считать? что отвечает за то, что трубку подняли?

 

faeton
faeton аватар
Offline
Зарегистрирован: 21.03.2016

Я не знаю, с голосовыми модемами никогда не ралботал. ATDP после соединения и установления связи выдавало в ответ connect или error, busy, вроде - очень давно это уже было... Кто мешает в терминале подключиться к модему, отправть ему команду и посмотреть что оно в ответ даст при поднятии трубки, при сбросе соединения, при сигнале заняти или абонент не в сети.