Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab5.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
303 Кб
Скачать
☆

5.2.2 Розробка программного забезпечення

В загальному випадку принципи передачі команд для управління модемом аналогічні до принципів передачі звичайних рядків через COM-порт. Єдиною відмінністю є передача спеціальних символів таких як перехід на новий рядок, символи табуляції та комбінація клавіш Ctrl+Z.

Для початку необхідно розглянути передачу АТ команди в чистому її вигляді.

Процедура передачі АТ команди в Builder C++ має наступний вигляд:

str_buf= «АТ-команда»;

str_buf.cat_sprintf("\r");

WriteFile(hCOM,str_buf.c_str(),str_buf.Length(),&dwWrite,NULL);

Де str_buf змінна типу AnsiString являється текстовим рядком який і є самою АТ командою.

Процедура виклику абоненда має наступний вигляд.

AnsiString str=”380#########”; //номер телефону

AnsiString call="ATD"; //АТ-команда дзвінка

str.Delete(1,2); //Вилучення з рядка str першого символа

str_buf =call+str+";"; //Об’єднання рядків call і str, запис результату в буфер ;

str_buf.cat_sprintf("\r"); //Додавання символа кінця рядка (команди)

WriteFile(hCOM,str_buf.c_str(),str_buf.Length(),&dwWrite,NULL); //Передача команди в COM

Проедура Завершення виклику має наступний вигляд

AnsiString stopcall="ATH0"; //Запис в рядок stopcall початку АТ команди

str_buf=stopcall; //Запис команди в буфер

str_buf.cat_sprintf("\r"); //Додавання символа кінця рядка

WriteFile(hCOM,str_buf.c_str(),str_buf.Length(),&dwWrite,NULL); //Передача команди в COM

Передача смс повідомлення через GSM модем складається з таких етапів

  • Передача команди передачі СМС

  • Зчитування відповіді «>» - дозвіл набору тексту СМС

  • Набір і передача СМС

  • Передача комбінції Секд+Z

  • Отримання відповіді про стату СМС

Організувати передачу СМС пожна наступним чином:

  1. Написати в події OnClick кнопки надіслати смс прописати наступну функцію

AnsiString sms="AT+CMGS="; //команда передачі СМС

str_buf =sms+"\""+"+380#########"+"\""; //Додавання номеру телефону до команди

str_buf.cat_sprintf("\r"); //Додавання символа кінця рядка

WriteFile(hCOM,str_buf.c_str(),str_buf.Length(),&dwWrite,NULL);//Передача команди в COM

smssend=true; //Змінна, яка вказує на наявну передачу СМС в програмі.

  1. Організувати отримання відповіді GSM, символа “>”; після отримання його з COM-порту потоком і здійснити введення смс та передача комбінції Ctrl+Z

AnsiString ANS; //Змінна відповіді модема

for(int i=0; i<dwRead; i++) //Перебрати всі прийняті байти

{

//Якщо серед прийнятих байтів є “>”, то записати цей символ в Edit9

if(char(Buf[i])=='>' && Form1->smssend==true) {

str_buf=”тут пишеться текст повідомлення”;

str_buf.cat_sprintf("\r");

WriteFile(hCOM,str_buf.c_str(),str_buf.Length(),&dwWrite,NULL); //Передача str_buf в COM

str_buf = char(26); //комбінація Ctrl+Z;

str_buf.cat_sprintf("\r");

WriteFile(hCOM,str_buf.c_str(),str_buf.Length(),&dwWrite,NULL); Передача комбінації Ctrl+Z;

}

Form1->smssend=false;

Form1->Edit9->Text="Відправлено";//Запис в текстове поле «Відповідь модема» рядка «Відправлено»

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]