реклама на сайте
подробности

 
 
> Отправка СМС из памяти в PDU режиме, Отправка СМС из памяти в PDU режиме на произвольный номер
den1s
сообщение May 31 2012, 12:52
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 17-03-11
Пользователь №: 63 677



Надеюсь, что в правильную тему пишу…
Уважаемые форумчане, помогите… скоро начну биться головой обо что-нибудь)
Делаю GSM-модуль: прибор на базе модуля Quectel M72 и AVR. Прибор отслеживает состояния подключенных датчиков и по наступлению определенных событий отправляет СМСки и щелкает исполнительными элементами. Конфигурируется прибор с компа, но работает самостоятельно. По схеме наверное необходимо отметить, что AVR посредством одного UARTа подключен к M72, а вторым подключается к компу (только для конфигурации). Комп с модемом связи не имеет.
Собственно железных вопросов нет – все слава богу работает, но вот с отправкой СМС проблема. Но тут стоит опять немного пояснений дать. Прибор должен иметь возможность отправлять СМС большому числу абонентов (последовательно) и на каждое из событий предполагается свой текст. При этом тесты СМС и имена абонетов нужно писать на русском. Держать всю эту кучу инфы в слабенькой АВР не представляется возможным, поэтому было принято стратегическое решение номера, имена абонентов а так же тексты СМС хранить в самом М72. А в процессоре держать только индексы телефонной книги и хранилища СМС. Т.е. когда я все это продумывал в теории, думал что будет так: АВРка говорит М72, а оправь-ка СМС № 1 из памяти абоненту № 2 из телефонной книги, а потом СМС № 3 абоненту№ 8.
Но тут оказалась проблема: нет такой АТ-команды. Думаю, ладно, буду считывать телефонный номер абонента в буфер и просто буду подставлять в команду отправки СМС из памяти. Но тут подставил Режим PDU: оказалось там прямо в тексте хранится номер получателя и его нельзя отправить на произвольный номер. Забирать текст PDU из модема и подправлять номер не выходит – этот текст может достигать 300 байт – мне стек в АВР срывает.
Собственно вопрос, можно ли на практике реализовать придуманный мной подход, и как это сделать? Возможно я не до конца разобрался во всех премудростях прекрасного PDU-режима
Очень много написал, извиняюсь. Заранее спасибо.


--------------------
"Одной мотивации недостаточно: если у вас есть идиот и вы его мотивировали, то в результате вы получите мотивированного идиота." - Джим Рон
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
CADiLO
сообщение May 31 2012, 18:20
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 6 023
Регистрация: 26-08-05
Из: Днепр
Пользователь №: 7 988



Команда эта есть в любом модуле, но не в любом она умеет работать не напрямую с номером телефона, а с номером ячейки где размещен номер.


--------------------
Не можна втрачати надію. Не можна здаватися до останньої миті. Можливо саме вона, остання мить, принесе весну, яка стане початком нового життя.
Go to the top of the page
 
+Quote Post
den1s
сообщение May 31 2012, 19:01
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 17-03-11
Пользователь №: 63 677



Цитата(CADiLO @ May 31 2012, 22:20) *
Команда эта есть в любом модуле, но не в любом она умеет работать не напрямую с номером телефона, а с номером ячейки где размещен номер.


Да, это я понял после того как написал... а отредактировать пост не получилось (то ли форум тупил, то ли я)

Цитата(andrewlekar @ May 31 2012, 22:30) *
У вас у AVR сколько памяти? Если вам 300 байт стек разрывают, так не храните их в стеке. Можно в глобальный массив поместить.

Мега164 у меня. Я программист к сожалению не высочайшего класса... может там и не в стеке дело (хотя вряд ли): я объвил глобальный массив в 280 байт и когда пытаюсь в него грузануть хотя бы 1 ячейку - ИАР не компилит. При этом компилится, если размер массива уменьшить в пару раз. Есть конечно, вариант поменять МК на 324 или 644 - но я надеюсь, что есть более красивое решение.

Цитата(andrewlekar @ May 31 2012, 22:30) *
Ещё для экономии памяти можно хранить текст в UCS, а в PDU перекодировать на лету.

интересная идея... если все же придется хранить в EEPROM, скорее всего воспользуюсь)) спасибо)


--------------------
"Одной мотивации недостаточно: если у вас есть идиот и вы его мотивировали, то в результате вы получите мотивированного идиота." - Джим Рон
Go to the top of the page
 
+Quote Post
=F8=
сообщение Jun 1 2012, 09:26
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 567
Регистрация: 7-07-07
Из: Донецк
Пользователь №: 28 954



Цитата(den1s @ May 31 2012, 22:01) *
Есть конечно, вариант поменять МК на 324 или 644 - но я надеюсь, что есть более красивое решение.

Это и есть самое правильное решение. Если сделали ошибку на этапе выбора контроллера самое разумное это исправить эту ошибку, а не городить костыли.

2 Frolov Kirill Для данной задачи AVR вполне адекватное решение. Все известные мне компиляторы не имеют проблем с сохранением констант в памяти програм. Единственная проблемма состоит в том, что просто константа и константа во флеш это разные типы данных, соответственно для работы с ними нужны разные функции, неудобно, но не более того(кстати это касается и PIC24). PIC32 и ARM для данного случая это, просто, стрельба из пушки по воробьям.
PS Сори на счет отображения flash в память в PIC24 не знал.
Go to the top of the page
 
+Quote Post
Frolov Kirill
сообщение Jun 1 2012, 11:07
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 212
Регистрация: 2-02-11
Пользователь №: 62 643



Цитата(=F8= @ Jun 1 2012, 13:26) *
Все известные мне компиляторы не имеют проблем с сохранением констант в памяти програм.


GCC имеет.

Цитата
Единственная проблемма состоит в том, что просто константа и константа во флеш это разные типы данных, соответственно для работы с ними нужны разные функции...


IAR. И, следовательно, библиотечные функции использовать во-первых нельзя (они с RAM работают), во-вторых своих функций нормально написать тоже невозможно, потому, что половина данных будет из RAM, половина из ROM, и не скажешь когда как.

Цитата
PIC32 и ARM для данного случая это, просто, стрельба из пушки по воробьям.


Ни разу. А то при умелом подходе и PIC16 можно обойтись, но оно того не стоит.
Go to the top of the page
 
+Quote Post
=F8=
сообщение Jun 1 2012, 12:29
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 567
Регистрация: 7-07-07
Из: Донецк
Пользователь №: 28 954



Цитата(Frolov Kirill @ Jun 1 2012, 14:07) *
GCC имеет.

Какие? Вместо __flash в начале написать PROGMEM в коце? Работать конечно сложней чем в IARе, но ничего особо страшного.

Цитата(Frolov Kirill @ Jun 1 2012, 14:07) *
IAR. И, следовательно, библиотечные функции использовать во-первых нельзя (они с RAM работают), во-вторых своих функций нормально написать тоже невозможно, потому, что половина данных будет из RAM, половина из ROM, и не скажешь когда как.


Для работы с данными во флеш в IARе есть дубликаты стандартных функций например strcpy_P, strcmp_P итд. Свои функции тоже приходится писать в 2-х экземплярах. Неудобно, но не более того.

Цитата(Frolov Kirill @ Jun 1 2012, 14:07) *
Ни разу. А то при умелом подходе и PIC16 можно обойтись, но оно того не стоит.


Я сам не любитель ограничивать себя в ресурсах, но ARM/PIC32 для простейшей оповешалки? ИМХО слишком. PIC24 согласен наверно более оптимально получилось бы, в конце концов они с AVR по цене в одной категории. Но AVR тоже вполне адекватный для данной задачи контроллер.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- den1s   Отправка СМС из памяти в PDU режиме   May 31 2012, 12:52
- - Nixon   Вы ошибаетесь насчет хранения номера в тексте sms....   May 31 2012, 14:20
- - CADiLO   Эта тема поднималась год назад и такая команда был...   May 31 2012, 14:34
- - den1s   Цитата(Nixon @ May 31 2012, 18:20) Вы оши...   May 31 2012, 17:23
|- - Frolov Kirill   Цитата(den1s @ May 31 2012, 23:01) интере...   Jun 1 2012, 09:15
|- - den1s   Цитата(=F8= @ Jun 1 2012, 16:29) Я сам не...   Jun 1 2012, 13:20
|- - Frolov Kirill   Цитата(=F8= @ Jun 1 2012, 16:29) Какие? В...   Jun 1 2012, 14:16
|- - _Артём_   Цитата(Frolov Kirill @ Jun 1 2012, 17:04)...   Jun 1 2012, 14:52
|- - =F8=   2 Frolov Kirill. Ваша взяла. Посмотрел на цены мла...   Jun 1 2012, 15:06
||- - _Артём_   Цитата(=F8= @ Jun 1 2012, 18:06) Посмотре...   Jun 1 2012, 15:12
||- - =F8=   Цитата(_Артём_ @ Jun 1 2012, 18:12) Еррат...   Jun 1 2012, 15:38
|- - den1s   Цитата(Frolov Kirill @ Jun 1 2012, 18:16)...   Jun 1 2012, 15:44
- - andrewlekar   У вас у AVR сколько памяти? Если вам 300 байт стек...   May 31 2012, 18:30
- - Frolov Kirill   Цитата(den1s @ May 31 2012, 16:52) Забира...   Jun 1 2012, 08:48
|- - den1s   Цитата(Frolov Kirill @ Jun 1 2012, 12:48)...   Jun 1 2012, 09:13
|- - Frolov Kirill   Цитата(den1s @ Jun 1 2012, 13:13) Трудно ...   Jun 1 2012, 09:25
|- - _Артём_   Цитата(Frolov Kirill @ Jun 1 2012, 12:25)...   Jun 1 2012, 13:40
- - den1s   Цитата(den1s @ May 31 2012, 16:52) Забира...   Jun 1 2012, 09:05
- - CADiLO   Если в текстах будут одинаковые словосочетания тип...   Jun 1 2012, 09:10
|- - den1s   Цитата(CADiLO @ Jun 1 2012, 13:10) Если в...   Jun 1 2012, 09:23
|- - Frolov Kirill   Цитата(den1s @ Jun 1 2012, 13:23) подскаж...   Jun 1 2012, 09:33
|- - den1s   Цитата(Frolov Kirill @ Jun 1 2012, 13:33)...   Jun 1 2012, 10:19
|- - Frolov Kirill   Цитата(den1s @ Jun 1 2012, 14:19) ведь чт...   Jun 1 2012, 11:10
|- - den1s   Цитата(Frolov Kirill @ Jun 1 2012, 15:10)...   Jun 1 2012, 11:26
|- - Frolov Kirill   Цитата(den1s @ Jun 1 2012, 15:26) Это ясн...   Jun 1 2012, 13:40
- - CADiLO   PIC24 со своими таблицами в самый раз. А PIC16/18 ...   Jun 1 2012, 11:10
- - CADiLO   Тогда проще всего держать в памяти номера абоненто...   Jun 1 2012, 13:28
- - CADiLO   Просто кто к чему привык. Ну и еще два факта - Атм...   Jun 1 2012, 13:51
- - ArtemKAD   ЦитатаПосмотрел на цены младшей 100-й серии STM32 ...   Jun 1 2012, 16:08


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 16:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.01466 секунд с 7
ELECTRONIX ©2004-2016