команду считывания времени есть. Но операторы РФ (по крайней мере, Питер, Москва, Брянск, Орёл, Курск) не выдают достоверное время и дату, там или мусор, или какая-то древняя дата и время.
В Беларуси какой-то из операторов давал точное время (уже не помню какой).
В Украине не помню, вроде тоже кто-то выдавал.
Я ставлю на свои платы часы dallas и батарейку -- так надёжнее 
Использование модуля SIM800l
Сообщений 61 страница 90 из 240
Поделиться612019-05-28 20:25:41
Поделиться622019-05-29 06:11:44
boida если планируются платные операции с сим модуля, то можно брать время через GPRS.
Если нет, то можно парсить время и дату из входящих смс, информация о времени прихода смс.
Поделиться632019-05-29 17:34:32
MACTEPok
Возможно потребуется отправлять сообщения с какой то периодичностью, например раз в час.
Поделиться642019-05-29 20:06:45
Подскажите что за ответ модуля :
+CMGS: 1
Просто номер отправленного сообщения или отправленное которое сохранилось на симки?
Терминал:
AT+CMGDA="DEL ALL"
OK
AT+CMGS="+7904506ХХХХ"
> OPEN BOX
>
+CMGS: 10
OK
AT+CMGDA="Del Sent"
OK
AT+CMGS="+7904506ХХХХ"
> CLOSE BOX
>
+CMGS: 11
OK
AT+CMGDA="Del Sent"
OK
Видно, что с каждым отправленным сообщением цифра увеличивается,
если это сохраненное в сим карте отправленное тогда почему не помогает DEL ALL и DEL SENT??
Поделиться652019-05-29 22:20:24
Программа почему то не может распознать инфу пришедшую от модуля.
Getline: ' подпрограмма для разбора сообщения модуля
Sk = ""
Do
B = Inkey() ' берем символ из буфера в формате ASCII
Select Case B
Case 0 : Exit Do ' если в буфере нет символа - выход!
'Case 13 ' возврат каретки (Enter) 'возврат каретки (Enter)
Case 10 : If Sk <> "" Then Exit Do 'конец строки, выходит из подпрограммы
Case Else : If B > 31 Then Sk = Sk + Chr(b) ' составляем строку
End Select
Loop
Return
Readsms:
' Flushbuf
'R = Ischarwaiting() 'проверка наличия сообщения в буфере
' If R = 1 Then
' Gosub Getline
Waitms 300
Gosub Getline 'уходим на подпрограмму и смотрим что пришло
Print "Buf: " ; Sk
If Sk <> "" Then
Z = Left(sk , 4) 'вытаскиваем левые 4 символа
If Z = "+CMT" Then 'если +СМТ, значит пришло смс которое надо прочитать
Sms_num = Right(sk , 2) 'смотрим какая по счету смс
Stmp = Left(sms_num , 1) 'смотрим первый символ слева
If Stmp = "," Then
Sms_num = Right(sk , 1) 'если там "," значит берем первый символ справа. это и будет номером пришедшего смс
End If
Wait 1....
Отправляю с телефона сообщение на модуль
Терминал:
+CMTI: "SM",1
Buf: +Ј%й "SMЉj <<<<<<------- Это то что вернулось от Getline, совсем не то что должно.
Buf:
Buf:
Buf:
Buf:
Buf:
Buf:
Buf:
Buf:
Buf:
Настройки модуля, может в них что ни так.
Print "AT" Wait 5 Print "AT+IPR=19200" 'включаем текстовый формат сообщений Wait 1 'Print "AT+GSMBUSY=1" 'запрет входящих звонков 'Waitms 500 Print "AT+CSCS=" ; Chr(34) ; "GSM" ; Chr(34) 'кодировка сообщений Wait 1 'Print "ATE0 " 'ответ без эхо Wait 1 Print "ATV1 " 'ответ без эхо Wait 1 Print "AT+CSCB=0" 'включаем текстовый формат сообщений Wait 1 Print "AT+CMEE=0" Wait 1 Print "AT+CMGF=1" 'включаем текстовый формат сообщений Wait 1 Print "AT+CLIP=1" 'определение номера входящего вызова Wait 1 'Print "AT+CNMI=1,2,2,1,0" Wait 1 Led4 = 1 Wait 5 Print "AT+CMGDA=" ; Chr(34) ; "DEL ALL" ; Chr(34) 'удаление всех смс Flushbuf Wait 5
Поделиться662019-05-30 08:04:21
+CMGS: 10
10- внутренний идентификатор сообщения. Описание в GSM 03.40 TP-Message-Reference in integer format.
The TP-Message-Reference field gives an integer representation of a reference number of the
SMS-SUBMIT or SMS-COMMAND submitted to the SC by the MS. The MS increments
TP-Message-Reference by 1 for each SMS-SUBMIT or SMS-COMMAND being submitted. The value to
be used for each SMS-SUBMIT is obtained by reading the Last-Used-TP-MR value from the SMS Status
data field in the SIM (see TS GSM 11.11) and incrementing this value by 1. After each SMS-SUBMIT has
been submitted to the network, the Last-Used-TP-MR value in the SIM is updated with the TP-MR that
was used in the SMS-SUBMIT operation. The reference number may possess values in the range 0 to
255. The value in the TP-MR assigned by the MS is the same value which is received at the SC.
In the case where no acknowledgement or an appropriate RP-Error is received in response to an
SMS-SUBMIT or SMS-COMMAND, then the MS may automatically repeat the SMS-SUBMIT or
SMS-COMMAND but must use the same TP-MR value. The number of times the MS may repeat the
SMS-SUBMIT or SMS-COMMAND is an implementation matter.
If all automatic attempts fail (including the case where no automatic repeat is provided), the user shall be
informed. The failed message shall be stored in the mobile in such a way that the user can request a
retransmission using the same TP-MR value, without needing to re-enter any information. Such storage
need only be provided for a single failed message, the one most recently attempted.
The SC may discard an SMS-SUBMIT or SMS-COMMAND which has the same TP-MR value as the
previous SMS-SUBMIT or SMS-COMMAND received from the same originating address.
A phase 2 or later ME using a phase 1 SIM cannot read or update the TP-Message-Reference from/to the
SIM, and so the ME shall always retain the Last-Used-TP-MR value in its own memory, to be used only in
the case of a phase 1 SIM.
The SMS-STATUS-REPORT also contains a TP-Message-Reference field. The value sent to the MS will
be the same as the TP-Message-Reference value generated by the MS in the earlier SMS-SUBMIT or
SMS-COMMAND to which the status report relates.
В вашем случае можно не обращать внимания.
По приему сообщения, если в терминале каракули, то нужно проверить скорость соединения, проблемы с таймингами. Процедура Getline: типовая.
Поделиться672019-05-30 17:36:50
MACTEPok
Насчет таймингов, это что? скорость передачи UART?
Терминал:
COM1
19200
8
1
None
None
Мега:
$crystal = 14745600
$baud = 19200
$hwstack = 64
$swstack = 64
$framesize = 64
Config Serialin = Buffered , Size = 60
Enable Interrupts
Может здесь что то не так?
SIM800L:
Print "AT+IPR=19200"
А вот при вводе
AT+ICF=3,3
Модуль отвечает EROR
Поделиться682019-05-30 17:42:16
A в фьюзах есть, что то отвечающее за передачу данных?
Я изменил там только бит отвечающий за работу то внешнего кварца.
Поделиться692019-05-30 17:57:39
A в фьюзах есть, что то отвечающее за передачу данных?
Еще JTAG лучше отключать, если не используется.
Если он (JTAG) есть в данном МК.
Словил однажды баги с портом С на Мега32... 
Поделиться702019-05-30 18:34:07
A в фьюзах есть, что то отвечающее за передачу данных?
Я изменил там только бит отвечающий за работу то внешнего кварца.
Вы вообще на модуль информацию читали? Все модули SIM при первом включении входят в режим автопределиния скорости передачи, об этом можно почитать например тут: https://elschemo.ru/dlya-nachinayushhix … t-komandy/
Только после определения скорости работы можно приступать к полноценному взаимодействию с модулем.
Поделиться712019-05-30 18:45:15
RDW
То есть после включения нужно выдержать паузу, а потом спрашивать, у меня стоит Wait 5, мало?
По фьюзам, у меня стоял CKOPT =1 Это как я понял для частоты тактирования до 8 МГц, сменил на 0.
Поделиться722019-05-30 18:46:34
RDW
Спасибо за ссылку, она у меня уже неделю в браузере открыта.
Поделиться732019-05-31 18:57:20
boida
При включении настройки.
'предварительные настройки '******************************************************** Wait 10 'Дай подключиться к сети, и зарегиться в ней AT 'И есть автоопределение скорости USARTR Waitms 50 AT 'Первыя попытка почемуто Error. Вторая всегда ОК. Waitms 50 Print "AT+CMGF=1" 'включаем текстовый формат сообщений Waitms 50 Print "AT+CLIP=1" 'определение номера входящего вызова Wait 3 Led = 0 Flushbuf
Поделиться742019-05-31 19:12:34
boida
Из Getline выкинь.
Case 0 : Exit Do ' если в буфере нет символа - выход!
'Case 13 ' возврат каретки (Enter) 'возврат каретки (Enter)
Вообще эти строки. Действительно есть правда. На 8 они не мешают, на 328 пруга вешается.
Readsms: Можешь вообше из программы убрать. У меня висит, но кажется мертвым грузом. Почему то
R = Ischarwaiting() не сильно хотит работать.
По этому у мну добавлено.
Gosub Readfirstsms
'принудительное чтение первой смс из памяти
'это необходимо если прошляпили приход смс, во время выполнения одной из подпрограмм
'==========================================================================================
Readfirstsms:
Print "AT+CMGR=1" 'команда на чтение смс
Waitms 10
Getline Sk
Waitms 10
Getline Sk
Number = Mid(sk , 22 , 12) 'достаем номер с которого пришла смска
Sms = Sk 'здесь первая строка ответа
Sms = Left(sms , 4)
If Sms = "+CMG" Then
Waitms 10
Getline Sk 'смотрим, что в этой смс
Sms = Sk
Sms = Left(sms , 1) 'берем только первые 1 символов из смс (по кол-ву знакомест в строке)
Waitms 100
Print "AT+CMGDA=" ; Chr(34) ; "DEL ALL" ; Chr(34) 'удаление всех смс
Gosub Checksms
End If
Waitms 100
Flushbuf 'очищаем буфер
Return
Это со включенным эхо.
Вообще сколько строк тебе выдает SIM800l очень хороше считать по терминалу. НО, НО эхо должно включено быть. Иначе пустые строки не посчитаешь. С эхо ОК, счет ведешь.
Отредактировано rom-i (2019-05-31 19:14:36)
Поделиться752019-05-31 19:31:14
После смены CKOPT с 1 на нуль символы в терминале стали отображаться корректно но по-прежнему со входящей смс считывался только номер отправителя.
Потом увеличил буфер уарта вдвое и вот оно счастье.
rom-i
Readsms: чаще срабатывает чем нет но если нет его должен подхватить Readfirstsms: , правда я до него еще не дошел.
R = Ischarwaiting() не сильно хотит работать.
У меня вот так работает
Gosub Getline
If Sk <> "" Then
В моем sim800L Есть внешний ресет и я его подключил, нужно теперь сочинить когда им дергать.
В модуле есть команда
AT+CPAS
если в ответ приходит не нуль то можно перезагружать.
0 – готов к работе
2 – неизвестно
3 – входящий звонок
4 – голосовое соединение
Как еще можно отследить зависание модуля?
Поделиться762019-05-31 22:34:29
Сделал проверку зависания вот так:
'Перезагрузка зависшего GSM модуля Rese: Print "AT+CPAS" Waitms 300 Gosub Getline Re = Left(sk , 5) If Re = "+CAPS" Then Re = Right(sk , 1) If Re <> "0" Then Res = 1 Waitms 300 Res = 0 Gosub Setup End If End If Return
Не нравится, как еще можно отследить зависание?
Поделиться772019-05-31 23:52:49
Подскажите пожалуйста код значка градуса, 167 и 176 не то.
Поделиться782019-06-01 00:36:02
boida
Знака градуса не существует. Перебрал все возможное по таблице АСКИ. Остановился на верхней запятой 10.3'C.
Приемлемо.
Про обрывки СМС в курсе. Есть такая тема. Дольше пришлось с этим бороться на 8. Зависит от частоты МК. Меньше 16мГц не стоит даже заморачиваться. Куски предидущих строк достануться следующим.
328 побыстрее. По этому может сложиться впечятление, что по разному работают. Но в итоге бред.
Лучьший вариант идет для обеих МЕГ.
$regfile = "m328pdef.dat" $crystal = 16000000 $baud = 19200 $hwstack = 160 $swstack = 160 $framesize = 60 Declare Sub Getline(s As String) Declare Sub Flushbuf() Config Serialin = Buffered , Size = 120
Но есть проблема в количестве символов при объявлении переменных String.
В предидущем 44 посте выложина нормальная инфа по предустановкам. Разборе СМС.
Отредактировано rom-i (2019-06-01 00:53:23)
Поделиться792019-06-01 01:00:11
Подскажите пожалуйста код значка градуса, 167 и 176 не то.
Это в кодировках Windows.
Попробуйте 248.
Поделиться802019-06-01 01:40:48
Nord
SIM800l примет все равно закорючки. Всю таблицу перебрал.
Единственный подход.
Уже давно все привыкли к Китайским девайсам. Хороше хоть на транслит знаки, и цыфры передает.
Это же клон довольно дорогого SIM900 оригинального. У Китайцев он довольно сбойный получился. Но SIM800l безотказная, абсолютно рабочая вещь.
Куда не попадя тыркал. В морозильнике температуру передовал. Сеть держит на эту пружинку в любом заземленном электрошкафу который стоит в железобетонном повале.
Мне нравиться.
Отредактировано rom-i (2019-06-01 01:57:40)
Поделиться812019-06-01 02:21:25
SIM800l примет все равно закорючки. Всю таблицу перебрал.(Сегодня 01:57:40)
Ну так все зависит от кодировки, кмк. 
В Win-1251 °=176, в cp866 °=248...
В Юникоде (он же UCS-4) - 1455...
В UCS-2 вообще не нашел этого символа...
https://www.sites.google.com/site/onexv … p2-dla-sms
Вот тут есть кое-что, может поможет в разбирательстве: https://alex-exe.ru/radio/wireless/gsm- … t-command/
Отредактировано Nord (2019-06-01 02:41:13)
Поделиться822019-06-01 03:12:08
Nord
Не вводи людей в заблуждение. Заметил, есть от Вас такая пурга.
Пристань лучше к компилятору BASCOM. Почему он пилит вместо Chr(9) бм похожий на °, неведомо зверушку.
Поделиться832019-06-01 03:24:08
boida
Про знак ° забудь. Тебя только с толку собьют. Будут рассказывать сказки.
Нет такого знака в компиляторах BASCOM. У мну 2.07.8. Да, и на других версиях люди не нашли.
Вопрос. Как можно передать то, чего нет?
Отредактировано rom-i (2019-06-01 03:29:38)
Поделиться842019-06-01 03:51:58
Не вводи людей в заблуждение.
В каком месте, плиз...
Пристань лучше к компилятору BASCOM.
Я не являюсь его автором... 
Нет такого знака в компиляторах BASCOM. У мну 2.07.8. Да, и на других версиях люди не нашли.
В компиляторе вообще нет знакогенератора, как такового... 
Для этого он (компилятор) использует ресурсы ОС...
А для приема-передачи вообще-то используются числовые значения, так что компилятор даже не задумывается об этом.
Сказали "передать число 65", это и улетит, а что это - число или символ, ему (компилятору) фиолетово.
Принято "65" - вопрос программиста, как интерпретировать это значение, как строку "65" в BCD-формате, как число 65 или как символ "А" (лат).
Почему он пилит вместо Chr(9) бм похожий на °, неведомо зверушку.
Chr(9) - символ табуляции практически во всех кодировках...
Где вы "похожий на °" разглядели ? 
Отредактировано Nord (2019-06-01 04:25:49)
Поделиться862019-06-01 09:15:14
Заметил, есть от Вас такая пурга.
Уважаемый rom-i!
Пожалуйста, ведите себя корректно по отношению к другим.
Даже если у них пурга, а у вас - истина.
Потому что завтра ситуация может кардинально поменяться.
Поделиться872019-06-01 11:48:08
Знака градуса не существует.
Тогда что это?
В баскоме
Поделиться882019-06-01 15:19:19
Пётр
Chr(176) к сожалению не работает.
В одной таблице 176 в другой 167 в смс приходит собака и знак параграфа.
Попробую Chr(248) и Alt+0176 если не заработает то и то тогда " ' ".
Вопрос по АЦП. Когда конфигурирую Avcc это значит не 5,00 Вольт = 1023, а именно напряжение питания?
Вот у меня блок питания выдает 5,1 В.
Поделиться892019-06-01 15:41:49
radan
Зачем человека вводить в дебри?
Он блудит, и ищет подсказки. Ему сразу ответ,"много для него непонятных вещей"/
Что делает чел?
Уходит с этого сайта далеко.
Почему?
Голову заглумилм, а ответа не дали.
Кто виноват в этом?
Обычный ему подобный начинающий.
Вы крутые. Дык научитесь обьяснять.
Поделиться902019-06-01 15:52:40
Пётр
Вообще идет тема про SIM800l. Прием. передача по USART. Не с компа, а с МК.
Жаль чел ущел. Очень много наработок.
Все решено, кроме интернет.
Тем более сегодня обьявлена война всем, кто использует мобильные трафики на стационарных компах.
В деревнях, и так людей нет.
Отредактировано rom-i (2019-06-01 15:57:59)




