Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Atmega 8 bascom avr simm800l


Atmega 8 bascom avr simm800l

Сообщений 1 страница 6 из 6

1

Помогите, понимаю где то рядом хожу и не могу решить. Через терминал напрямую управляю simm 800 l,   Добился выполнения ат команд нужных мне и отправки данных на сервер thingspeak,  но заставить работать от атмеги 8 не могу. Нюансы васком авр насчет ковычек  в команде print решил  {034}, подключаю атмегу к сом порту взамен simm 800 и в терминале вижу что выдает моя программа т. Е последовательность моих ат команд со всей пунктуацией, все очень красиво и точно также как если бы я бы напрямую с компа управлял simm800l , у меня в коде первым делом идет дозвон мне на номер — работает, потом поднимаю сессию интернета — лампочка мигает быстро, закрывается сессия в конце по лампочке вижу все отрабатывает, а вот команда по отправке данных не проходит, задержки между командами по 5—6 секунд стоят, написание ковычек в ковычках в команде print решил, добавление символов в конце строки\r\n  пробовал, читал про символы sub, 026 ну и так далее много чего пробовал в разных вариациях ну не проходит команда на передачу данных  на сервер и все. При чем в ручном режиме напоминаю синтаксис этих команд все проходит и отрабатывает. Использую для отладки терминал виндоувс родной. Мысли о том что перевод строки и возврат каретки и т далее , может мой терминал добавляет то что надо , но я это не вижу на самом деле правильность вывода этих команд и то что я вижу на экране компа не есть то что сыпется реально в UART

0

2

Эхх, кусочек кода бы глянуть для начала...

0

3

Код:

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


       

0

4

это управление  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 и без них все работает проверено

0

5

посмотрел в  программе терминал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)

0

6

все задача решена
At+Httppara="url","http://Api.thingspeak.com/Update?Key=Yd1XHxxxxxxxxxx6&Field1=

нигде не было разницы в шрифте и только написание
Update?Key=
очень важно
нужно
только так!!!!!!
update?key=
и только так
а замену сделал баском при проблеме ковычек. баском раздвигал строку, заменял символы на заглавные
и все бы ни чего но больше ни где не влияло  заглавные или прописные буквы.
урааааааааа

0


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Atmega 8 bascom avr simm800l