Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 09.03.2017
Сообщений: 18
1

Вытащить номер телефона из данных от модема

15.09.2022, 22:58. Показов 465. Ответов 1
Метки си (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет.

Я работаю с модемом SIM800 и хочу обработать номер телефона со входящего звонка. Кодом

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
char Reply[20]; // Сюда собираем ответ от модема
char Number[20]; // Здесь будем хранить сам номер телефона
int i;
 
HAL_UART_Receive_IT(&huart1, (uint8_t*)Reply, 100);
osDelay(1000);
if(strstr((char *)Reply,"+CLIP:"))
    {
    HAL_UART_Transmit(&huart2, (uint8_t*)MdmAnswr, strlen(MdmAnswr), HAL_MAX_DELAY);
    HAL_UART_Transmit(&huart2, (uint8_t*)NewLine, strlen(NewLine), HAL_MAX_DELAY);
    HAL_UART_Transmit(&huart2, (uint8_t*)Reply, strlen(Reply), HAL_MAX_DELAY);
    HAL_UART_Transmit(&huart2, (uint8_t*)NewLine, strlen(NewLine), HAL_MAX_DELAY);
 
    }
}
я получаю информацию о входящем звонке в отладке вида

Код
Modem Answer: 

RING

+CLIP: "+79201231212",145,"",0,"",0
ҐҐҐҐҐ
Кодом

C
1
2
3
4
5
6
7
8
            for (i=0; i<=(strlen(Reply)-13); i++)
            {
                Number[i] = Reply[i];
 
            }
 
            HAL_UART_Transmit(&huart2, (uint8_t*)Number, strlen(Number), HAL_MAX_DELAY);
            HAL_UART_Transmit(&huart2, (uint8_t*)NewLine, strlen(NewLine), HAL_MAX_DELAY);
Я пытаюсь скопировать элементы из Reply в Number, обрезав часть элементов, идущих после номера телефона и кодом

C
1
2
HAL_UART_Transmit(&huart2, (uint8_t*)Number, strlen(Number), HAL_MAX_DELAY);
HAL_UART_Transmit(&huart2, (uint8_t*)NewLine, strlen(NewLine), HAL_MAX_DELAY);
проверяю, что скопировалось. Вместо Number копируется вообще всё и в терминал прилетает

Код
RING

+CLIP: ҐҐҐAT+CSCS="GSM"
.

Хотелось бы, чтобы в терминал приходило
Код
RING

+CLIP: "+79201231212
а в идеале вообще только номер телефона. Как это можно сделать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.09.2022, 22:58
Ответы с готовыми решениями:

Сайт видит номер телефона (модема) пользователя
Проблема не у меня, у товарища. Но и для меня это тоже актуально, так как я езжу в командировки,...

Можно ли вытащить номер телефона?
Доброго всем времени суток дорогие Форумчане!!1 У меня к вам вопрос, можно ли вытащить номер...

Как првильно вытащить номер телефона из массива json?
Добрый день чет я туплю опять. как мне вытащить из массива json: { entry_id:...

Как вытащить номер телефона в макет внешней печ.формы?
Доброго времени суток. есть обработка (назовем ее Доставочный лист). не пойму, как вытащить в макет...

1
21 / 18 / 3
Регистрация: 21.11.2017
Сообщений: 111
21.09.2022, 17:30 2
Цитата Сообщение от СтаниславМН Посмотреть сообщение
for (i=0; i<=(strlen(Reply)-13); i++)
{
Number[i] = Reply[i];

}
Если у вас в начале всегда +CLIP: "+79201231212"..., почему длину пробуете считать с конца?

А так все просто, находите знак " (кавычки), начиная с начала буфера Reply.
Копируете подряд, по одному, все знаки после кавычки, пока знак не равен " (кавычке).
В конце добавляете знак конца строки, чтобы она стала строкой, раз уж посылаете
C
1
HAL_UART_Transmit(&huart2, (uint8_t*)Number, strlen(Number), HAL_MAX_DELAY);
1
21.09.2022, 17:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.09.2022, 17:30
Помогаю со студенческими работами здесь

Структуры (cведения об абонентах АТС: ФИО владельца телефона, год установки телефона, номер телефона, тип установки телефона, льгота)
Сведения об абонентах АТС. Структура должна содержать следующую информацию: фамилию, имя, отчество...

На междугородной АТС информация содержит дату разговора, код и название города, время разговора, тариф, номер телефона в этом городе и номер телефона
Помогите пожалуйста доделать задачу. При такой постановке вопроса помощи не дождешься.unit Unit3;...

Даны фамилия сотрудника, его инициалы и номер телефона. Найти номер телефона по его фамилии и инициалам.
1)Даны фамилия сотрудника, его инициалы и номер телефона. Найти номер телефона по его фамилии и...

Проверить корректность введенных данных в editText (номер телефона)
Как проверить, что пользователь ввел правильный номер телефона, без +7 и 8, например 9123456789 То...

База данных из записей, содержащих фамилию и номер телефона
База данных из записей содержащих фамилию и номер телефона. Написать программу, выполняющую поиск...

Создать базу данных Студентов (Фамилия, номер телефона, адрес)
Не выводит в функцию &quot;vivod&quot; данные которые я вводил Как решить проблему? Без меню всё работало...

Записи и типизированые файлы. Структура: ФИО, год установки телефона, номер телефона
помогите пожалуйста решить задачу Создать файл, содержащий сведения о телефонах абонентов. Каждая...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru