Помогите, понимаю где то рядом хожу и не могу решить. Через терминал напрямую управляю simm 800 l, Добился выполнения ат команд нужных мне и отправки данных на сервер thingspeak, но заставить работать от атмеги 8 не могу. Нюансы васком авр насчет ковычек в команде print решил {034}, подключаю атмегу к сом порту взамен simm 800 и в терминале вижу что выдает моя программа т. Е последовательность моих ат команд со всей пунктуацией, все очень красиво и точно также как если бы я бы напрямую с компа управлял simm800l , у меня в коде первым делом идет дозвон мне на номер — работает, потом поднимаю сессию интернета — лампочка мигает быстро, закрывается сессия в конце по лампочке вижу все отрабатывает, а вот команда по отправке данных не проходит, задержки между командами по 5—6 секунд стоят, написание ковычек в ковычках в команде print решил, добавление символов в конце строки\r\n пробовал, читал про символы sub, 026 ну и так далее много чего пробовал в разных вариациях ну не проходит команда на передачу данных на сервер и все. При чем в ручном режиме напоминаю синтаксис этих команд все проходит и отрабатывает. Использую для отладки терминал виндоувс родной. Мысли о том что перевод строки и возврат каретки и т далее , может мой терминал добавляет то что надо , но я это не вижу на самом деле правильность вывода этих команд и то что я вижу на экране компа не есть то что сыпется реально в UART
Atmega 8 bascom avr simm800l
Сообщений 1 страница 6 из 6
Поделиться22017-12-07 19:57:05
Эхх, кусочек кода бы глянуть для начала...
Поделиться32017-12-07 21:23:16
Config Serialin1 = Buffered , Size = 161 ' Буфер для принятых от GSM-модема данных
Enable Interrupts ' Обязательно, чтобы работал буфер приёма!!
Otvet$ = Imei$
Gosub Gprs_msg
end
'========================================================================
Gprs_msg: ' Формируем сообщение и передаём его на сервер через GPRS
Print #2 , "Передача через GPRS"
Reset Watchdog
Gprs_msg_01:
Print #2 , "Куда: " ; Status_server$
Print #2 , "Что: " ; Otvet$
Gosub Http_opening ' открываем сеанс GPRT и HTTP
Reset Watchdog
Gosub Flushbuf_gsm 'очистка буфера. Внутри есть waitms 100
' Чтобы понять на какую команду ответил модем
Print #2 , "HTTPPARA=URL,http://... "; ' AT+HTTPPARA="URL","http: "
Print #1 , "AT+HTTPPARA=" ; Chr(34) ; "URL" ; Chr(34) ; "," ; Chr(34) ; Status_server$ ; Otvet$ ; Chr(34)
Gosub Zhdem_otvet_ok ' Ждём ответ GSM-модема
Gosub Flushbuf_gsm 'очистка буфера. Внутри есть waitms 100
Print #2 , "HTTPACTION=0 " ; ' Чтобы понять на какую команду ответил модем
Print #1 , "AT+HTTPACTION=0" ' AT+HTTPACTION=0
Gosub Zhdem_otvet_ok ' Ждём ответ OK GSM-модема
If My_str1$ = "ERROR" Then Goto Gprs_msg_02 ' если ошибка
Gosub Wait_4sec ' Без паузы нет соединения
Temp = 150 ' выход через 15 секунд Без паузы нет соединения
Do 'Ждём длинный ответ модема
Toggle Led
Reset Watchdog
Decr Temp
Gosub Getline_gsm ' Внутри есть пауза 50mS!
If Temp = 0 Then My_str1$ = "ERROR" ' Время ожидания ответа модема вышло! Выходим!
If My_str1$ = "ERROR" Then ' если ошибка
Print #2 , "Нет связи HTTP!"
Goto Gprs_msg_02
End If
Loop Until Len(my_str1$) > 15
Print #2 , "% " ; My_str1$ ' GSM-модем выдаст "+HTTPACTION:0,200,###", где 200=Статус OK
' Выделим статус (200) из этой строки
' Флаг ответа сервера (200=OK, 0 или иное значение = Ошибка)
Tmp_str$ = ""
Temp = Instr(my_str1$ , "ACTION:0,")
If Temp > 0 Then
Temp = Temp + 9 ' Начало записи статуса
Tmp_str$ = Mid(my_str1$ , Temp , 3)
Print #2 , "St=" ; Tmp_str$
Print "H: " ; Tmp_str$ ; Chr(13) : Print #2 , "H>> " ; Tmp_str$ ' Отобразим HTTP-статус
End If
Gprs_msg_02:
If Tmp_str$ = "200" Then ' Статус HTTP 200 = OK
Print #2 , "Сообщение на сервер Отправлено"
Error_gsm_modem = "0" ' всё в порядке!
Else
Print #2 , "Сообщение на сервер НЕ отправлено"
Error_gsm_modem = "E" ' Ошибка
End If
Print #2 , "GPRS end: " ; Chr(error_gsm_modem)
Print "@Ge" ; Chr(error_gsm_modem) ; Chr(13) ' ответ главному МК
Return
'==========================================================
Http_opening: ' открываем сеанс GPRT и HTTP
Reset Watchdog
Print #2 , "Включаем GPRS:"
'для настройки GPRS соединения
Print #1 , "AT+SAPBR=3,1," ; Chr(34) ; "CONTYPE" ; Chr(34) ; "," ; Chr(34) ; "GPRS" ; Chr(34) ' AT+SAPBR=3,1,"CONTYPE","GPRS"
Gosub Wait_4sec
'Print #1 , "AT+SAPBR=3,1," ; Chr(34) ; "APN" ; Chr(34) ; "," ; Chr(34) ; "internet" ; Chr(34) ' МЕГАФОН internet
'Print #1 , "AT+SAPBR=3,1," ; Chr(34) ; "APN" ; Chr(34) ; "," ; Chr(34) ; "internet.tele2.ru" ; Chr(34) ' ТЕЛЕ2 internet.tele2.ru
Print #1 , "AT+SAPBR=3,1," ; Chr(34) ; "APN" ; Chr(34) ; "," ; Chr(34) ; Ap_internet$ ; Chr(34) ' AP
Gosub Waitms_100
Print #1 , "AT+SAPBR=3,1," ; Chr(34) ; "USER" ; Chr(34) ; "," ; Chr(34) ; Login_internet$ ; Chr(34) ' Login
Gosub Waitms_100
Print #1 , "AT+SAPBR=3,1," ; Chr(34) ; "PWD" ; Chr(34) ; "," ; Chr(34) ; Password_internet$ ; Chr(34) ' Password
Gosub Waitms_100
Gosub Flushbuf_gsm 'очистка буфера
Reset Watchdog
Print #2 , "AT+SAPBR=1,1 " ; ' Чтобы понять на какую команду ответил модем
Print #1 , "AT+SAPBR=1,1" ' AT+SAPBR=1,1
Gosub Zhdem_otvet_ok ' Ждём ответ GSM-модема
Gosub Wait_4sec ' Без паузы нет соединения
Gosub Wait_4sec ' Без паузы нет соединения
Print #2 , "Открываем сеанс HTTP:"
Print #1 , "AT+HTTPINIT" ' AT+HTTPINIT
Gosub Zhdem_otvet_ok ' Ждём ответ GSM-модема
Print "I: OK!" ; Chr(13) : Print #2 , "I: OK! "
Gosub Wait_4sec ' Без паузы нет соединения
Gosub Wait_4sec ' Без паузы нет соединения
Print #2 , "AT+HTTPPARA=CID,1 " ; ' Чтобы понять на какую команду ответил модем
Print #1 , "AT+HTTPPARA=" ; Chr(34) ; "CID" ; Chr(34) ; "," ; "1" ' AT+HTTPPARA="CID",1
Gosub Zhdem_otvet_ok ' Ждём ответ GSM-модема
' End If
Return
'*******************************************************************************
Zhdem_otvet_ok: ' Ждём ответ GSM-модема
Counter_c = 100 ' 10 секунд ожидания
My_str1$ = ""
Error_d = 0
While My_str1$ <> "OK" ' ждём
Decr Counter_c
If Counter_c = 0 Then
Error_d = 1 ' Ошибка!
Exit While
End If
Reset Watchdog
Gosub Getline_gsm
'Print #2 , My_str1$ ; " <"
If My_str1$ = "ERROR" Then
Error_d = 1 ' Ошибка!
Exit While
End If
Wend
If Error_d = 0 Then ' Без ошибок
Print #1 , "> " ; My_str1$ ' ответ модема
Else
Print #1 , "ERROR"
End If
Return
Поделиться42017-12-08 08:06:09
это управление simm800l через терминал
at
OK
at+sapbr=3,1,"contype","gprs"
OK
at+sapbr=3,1,"apn","internet.tele2.ru"
OK
at+sapbr=1,1
OK
at
OK
at+httpinit
OK
at+httppara="url","http://api.thingspeak.com/update?key=yd1xh8xxxxxxxxxxxx&field1=
33"
OK
at+httpaction=0
OK
+HTTPACTION: 0,200,2
передача данных успешно завершена .все хорошо
это программа
Print "atd+7961xxxxxxx;"
Wait 10
Print "ath"
Wait 2
Print "AT+SAPBR=3,1," ; Chr(34) ; "contype" ; Chr(34) ; "," ; Chr(34) ; "gprs" ; Chr(34)
Wait 5
Print "AT+SAPBR=3,1," ; Chr(34) ; "apn" ; Chr(34) ; "," ; Chr(34) ; "internet.tele2.ru" ; Chr(34)
Wait 5
Print "AT+SAPBR=1,1"
Wait 6
Print "AT+HTTPINIT"
Wait 5
Print "at+Httppara=cid,1"
Wait 7
Print "At+Httppara=" ; Chr(34) ; "url" ; Chr(34) ; "," ; Chr(34) ; "http://Api.thingspeak.com/Update?Key=Yd1Xxxxxxxxxxx&Field1=11" ; Chr(34)
Wait 7
Print "AT+HTTPACTION=0"
Wait 20
Print "AT+SAPBR=0,1"
Lcd "stop"
End
это то что атмега8 отправляет в порт
at atd+7961xxxxxxx; ath AT+SAPBR=3,1,"contype","gprs" AT+SAPBR=3,1,"apn","internet.tele2.ru" AT+SAPBR=1,1 AT+HTTPINIT at+Httppara="cid",1 At+Httppara="url","http://Api.thingspeak.com/Update?Key=Yd1XHxxxxxxxxxx6Field1= 11" AT+HTTPACTION=0 AT+SAPBR=0,1
и вроде бы все правильно , дозвон мне идет. сессия поднимается. сессия закрывается .но данные не идут
по поводу 2 команд с именем и паролем для internet.tele2.ru и без них все работает проверено
Поделиться52017-12-08 08:26:13
посмотрел в программе терминал1.9
вот что идет туда от мк
<0>at atd+796xxxxxxxxxx; ath AT+SAPBR=3,1,"contype","gprs" AT+SAPBR=3,1,"apn","internet.tele2.ru" AT+SAPBR=1,1 AT+HTTPINIT at+Httppara=cid,1 At+Httppara="url","http://Api.thingspeak.com/Update?Key=Yd1xxxxxxxx&Field1=11" AT+HTTPACTION=0 AT+SAPBR=0,1
Отредактировано ice136150 (2017-12-08 08:26:52)
Поделиться62017-12-08 09:10:07
все задача решена
At+Httppara="url","http://Api.thingspeak.com/Update?Key=Yd1XHxxxxxxxxxx6&Field1=
нигде не было разницы в шрифте и только написание
Update?Key=
очень важно
нужно
только так!!!!!!
update?key=
и только так
а замену сделал баском при проблеме ковычек. баском раздвигал строку, заменял символы на заглавные
и все бы ни чего но больше ни где не влияло заглавные или прописные буквы.
урааааааааа